{"mappings":"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","names":["F","F_default","T","T_default","__default","_isPlaceholder","a","_curry1","fn","f1","a","_isPlaceholder","_curry2","fn","f2","a","b","_isPlaceholder","_curry1","_b","_a","add","_curry2","a","b","add_default","_concat","set1","set2","idx","len1","len2","result","_arity","n","fn","a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","_curryN","length","received","fn","combined","argsIdx","left","combinedIdx","result","_isPlaceholder","_arity","curryN","_curry2","length","fn","_curry1","_arity","_curryN","curryN_default","addIndex","_curry1","fn","curryN_default","idx","origFn","list","args","result","_concat","addIndex_default","_curry3","fn","f3","a","b","c","_isPlaceholder","_curry2","_b","_c","_a","_curry1","adjust","_curry3","idx","fn","list","len","_idx","_list","_concat","adjust_default","isArray_default","val","_isTransformer","obj","_dispatchable","methodNames","transducerCreator","fn","obj","isArray_default","idx","_isTransformer","transducer","_reduced","x","xfBase_default","result","XAll","f","xf","xfBase_default","result","input","_reduced","_xall","_curry2","xall_default","all","_curry2","_dispatchable","xall_default","fn","list","idx","all_default","max","_curry2","a","b","max_default","_map","fn","functor","idx","len","result","_isString","x","_isArrayLike","_curry1","x","isArray_default","_isString","isArrayLike_default","XWrap","fn","acc","x","_xwrap","bind","_curry2","fn","thisObj","_arity","bind_default","_arrayReduce","xf","acc","list","idx","len","_iterableReduce","iter","step","_methodReduce","obj","methodName","bind_default","symIterator","_reduce","fn","_xwrap","isArrayLike_default","XMap","f","xf","xfBase_default","result","input","_xmap","_curry2","xmap_default","_has","prop","obj","toString","_isArguments","x","_has","isArguments_default","hasEnumBug","nonEnumerableProps","hasArgsEnumBug","contains","list","item","idx","keys","_curry1","obj","prop","nIdx","ks","checkArgsLength","isArguments_default","_has","keys_default","map","_curry2","_dispatchable","xmap_default","fn","functor","curryN_default","_reduce","acc","key","keys_default","_map","map_default","isInteger_default","n","nth","_curry2","offset","list","idx","_isString","nth_default","prop","_curry2","p","obj","isInteger_default","nth_default","prop_default","pluck","_curry2","p","list","map_default","prop_default","pluck_default","reduce","_curry3","_reduce","reduce_default","allPass","_curry1","preds","curryN_default","reduce_default","max_default","pluck_default","idx","len","allPass_default","always","_curry1","val","always_default","and","_curry2","a","b","and_default","XAny","f","xf","xfBase_default","result","input","_reduced","_xany","_curry2","xany_default","any","_curry2","_dispatchable","xany_default","fn","list","idx","any_default","anyPass","_curry1","preds","curryN_default","reduce_default","max_default","pluck_default","idx","len","anyPass_default","ap","_curry2","applyF","applyX","x","_reduce","acc","f","_concat","map_default","ap_default","_aperture","n","list","idx","limit","acc","XAperture","n","xf","xfBase_default","result","input","_concat","_xaperture","_curry2","xaperture_default","aperture","_curry2","_dispatchable","xaperture_default","_aperture","aperture_default","append","_curry2","el","list","_concat","append_default","apply","_curry2","fn","args","apply_default","values","_curry1","obj","props","keys_default","len","vals","idx","values_default","mapValues","fn","obj","isArray_default","keys_default","acc","key","applySpec","_curry1","spec","v","curryN_default","reduce_default","max_default","pluck_default","values_default","args","f","apply_default","applySpec_default","applyTo","_curry2","x","f","applyTo_default","ascend","_curry3","fn","a","b","aa","bb","ascend_default","_assoc","prop","val","obj","isInteger_default","isArray_default","arr","result","p","isNil","_curry1","x","isNil_default","assocPath","_curry3","path","val","obj","idx","nextObj","isNil_default","_has","isInteger_default","_assoc","assocPath_default","assoc","_curry3","prop","val","obj","assocPath_default","assoc_default","nAry","_curry2","n","fn","a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","nAry_default","binary","_curry1","fn","nAry_default","binary_default","_isFunction","x","type","liftN","_curry2","arity","fn","lifted","curryN_default","_reduce","ap_default","map_default","liftN_default","lift","_curry1","fn","liftN_default","lift_default","both","_curry2","f","g","_isFunction","lift_default","and_default","both_default","call","_curry1","fn","call_default","_makeFlat","recursive","flatt","list","value","jlen","j","result","idx","ilen","isArrayLike_default","_forceReduced","x","preservingReduced","xf","xfBase_default","result","input","ret","_forceReduced","_flatCat","rxf","isArrayLike_default","_reduce","flatCat_default","_xchain","_curry2","f","xf","map_default","flatCat_default","xchain_default","chain","_curry2","_dispatchable","xchain_default","fn","monad","x","_makeFlat","map_default","chain_default","clamp","_curry3","min","max","value","clamp_default","_cloneRegExp","pattern","type","_curry1","val","type_default","_clone","value","refFrom","refTo","deep","copy","copiedValue","len","idx","key","type_default","_cloneRegExp","clone","_curry1","value","_clone","clone_default","collectBy","_curry2","fn","list","group","_reduce","o","x","tag","newList","collectBy_default","comparator","_curry1","pred","a","b","comparator_default","not","_curry1","a","not_default","complement","lift_default","not_default","complement_default","_pipe","f","g","_checkForMethod","methodname","fn","length","obj","isArray_default","slice","_curry3","_checkForMethod","fromIndex","toIndex","list","slice_default","tail","_curry1","_checkForMethod","slice_default","tail_default","pipe","_arity","reduce_default","_pipe","tail_default","reverse","_curry1","list","_isString","reverse_default","compose","pipe","reverse_default","head","nth_default","head_default","_identity","x","identity","_curry1","_identity","identity_default","pipeWith","_curry2","xf","list","identity_default","headList","head_default","tailList","tail_default","_arity","_reduce","result","f","pipeWith_default","composeWith","_curry2","xf","list","pipeWith_default","reverse_default","composeWith_default","_arrayFromIterator","iter","list","next","_includesWith","pred","x","list","idx","len","_functionName","f","match","_objectIs","a","b","objectIs_default","_uniqContentEquals","aIterator","bIterator","stackA","stackB","a","_arrayFromIterator","b","eq","_a","_b","_equals","_includesWith","aItem","objectIs_default","typeA","type_default","_functionName","idx","keysA","keys_default","extendedStackA","extendedStackB","key","_has","equals","_curry2","a","b","_equals","equals_default","_indexOf","list","a","idx","inf","item","equals_default","_includes","a","list","_indexOf","_quote","s","escaped","pad","n","_toISOString","d","toISOString_default","_complement","f","_filter","fn","list","idx","len","result","_isObject","x","XFilter","f","xf","xfBase_default","result","input","_xfilter","_curry2","xfilter_default","filter","_curry2","_dispatchable","xfilter_default","pred","filterable","_isObject","_reduce","acc","key","keys_default","_filter","filter_default","reject","_curry2","pred","filterable","filter_default","_complement","reject_default","_toString","x","seen","recur","y","xs","_includes","mapPairs","obj","keys","_map","k","_quote","reject_default","keys_default","toISOString_default","repr","toString","_curry1","val","_toString","toString_default","concat","_curry2","a","b","isArray_default","toString_default","_isString","_isFunction","concat_default","cond","_curry1","pairs","arity","reduce_default","max_default","map_default","pair","_arity","idx","cond_default","curry","_curry1","fn","curryN_default","curry_default","constructN","_curry2","n","Fn","curry_default","nAry_default","$0","$1","$2","$3","$4","$5","$6","$7","$8","$9","constructN_default","construct","_curry1","Fn","constructN_default","construct_default","converge","_curry2","after","fns","curryN_default","reduce_default","max_default","pluck_default","args","context","_map","fn","converge_default","count","curry_default","pred","list","_reduce","a","e","count_default","XReduceBy","valueFn","valueAcc","keyFn","xf","xfBase_default","result","key","_has","input","_xreduceBy","_curryN","xreduceBy_default","reduceBy","_curryN","_dispatchable","xreduceBy_default","valueFn","valueAcc","keyFn","list","_reduce","acc","elt","key","value","_has","_clone","_reduced","reduceBy_default","countBy","reduceBy_default","acc","elem","countBy_default","dec","add_default","dec_default","defaultTo","_curry2","d","v","defaultTo_default","descend","_curry3","fn","a","b","aa","bb","descend_default","_Set","item","hasOrAdd","shouldAdd","set","type","prevSize","newSize","bIdx","_includes","Set_default","difference","_curry2","first","second","out","idx","firstLen","secondLen","toFilterOut","Set_default","i","difference_default","differenceWith","_curry3","pred","first","second","out","idx","firstLen","_includesWith","differenceWith_default","remove","_curry3","start","count","list","result","remove_default","_dissoc","prop","obj","isInteger_default","isArray_default","remove_default","result","p","_shallowCloneObject","prop","obj","isInteger_default","isArray_default","result","p","dissocPath","_curry2","path","_dissoc","head","tail","assoc_default","dissocPath_default","dissoc","_curry2","prop","obj","dissocPath_default","dissoc_default","divide","_curry2","a","b","divide_default","XDrop","n","xf","xfBase_default","result","input","_xdrop","_curry2","xdrop_default","drop","_curry2","_dispatchable","xdrop_default","n","xs","slice_default","drop_default","XTake","n","xf","xfBase_default","result","input","ret","_reduced","_xtake","_curry2","xtake_default","take","_curry2","_dispatchable","xtake_default","n","xs","slice_default","take_default","dropLast","n","xs","take_default","XDropLast","n","xf","xfBase_default","result","input","_xdropLast","_curry2","xdropLast_default","dropLast","_curry2","_dispatchable","xdropLast_default","dropLast_default","dropLastWhile","pred","xs","idx","slice_default","XDropLastWhile","fn","xf","xfBase_default","result","input","_reduce","_xdropLastWhile","_curry2","xdropLastWhile_default","dropLastWhile","_curry2","_dispatchable","xdropLastWhile_default","dropLastWhile_default","XDropRepeatsWith","pred","xf","xfBase_default","result","input","sameAsLast","_xdropRepeatsWith","_curry2","xdropRepeatsWith_default","last","nth_default","last_default","dropRepeatsWith","_curry2","_dispatchable","xdropRepeatsWith_default","pred","list","result","idx","len","last_default","dropRepeatsWith_default","dropRepeats","_curry1","_dispatchable","xdropRepeatsWith_default","equals_default","dropRepeatsWith_default","dropRepeats_default","XDropWhile","f","xf","xfBase_default","result","input","_xdropWhile","_curry2","xdropWhile_default","dropWhile","_curry2","_dispatchable","xdropWhile_default","pred","xs","idx","len","slice_default","dropWhile_default","or","_curry2","a","b","or_default","either","_curry2","f","g","_isFunction","lift_default","or_default","either_default","_isTypedArray","val","type","empty","_curry1","x","isArray_default","_isString","_isObject","isArguments_default","_isTypedArray","empty_default","takeLast","_curry2","n","xs","drop_default","takeLast_default","endsWith","_curry2","suffix","list","equals_default","takeLast_default","endsWith_default","eqBy","_curry3","f","x","y","equals_default","eqBy_default","eqProps","_curry3","prop","obj1","obj2","equals_default","eqProps_default","evolve","_curry2","transformations","object","_isObject","isArray_default","result","transformation","key","type","evolve_default","XFind","f","xf","xfBase_default","result","input","_reduced","_xfind","_curry2","xfind_default","find","_curry2","_dispatchable","xfind_default","fn","list","idx","len","find_default","XFindIndex","f","xf","xfBase_default","result","input","_reduced","_xfindIndex","_curry2","xfindIndex_default","findIndex","_curry2","_dispatchable","xfindIndex_default","fn","list","idx","len","findIndex_default","XFindLast","f","xf","xfBase_default","result","input","_xfindLast","_curry2","xfindLast_default","findLast","_curry2","_dispatchable","xfindLast_default","fn","list","idx","findLast_default","XFindLastIndex","f","xf","xfBase_default","result","input","_xfindLastIndex","_curry2","xfindLastIndex_default","findLastIndex","_curry2","_dispatchable","xfindLastIndex_default","fn","list","idx","findLastIndex_default","flatten","_curry1","_makeFlat","flatten_default","flip","_curry1","fn","curryN_default","a","b","args","flip_default","forEach","_curry2","_checkForMethod","fn","list","len","idx","forEach_default","forEachObjIndexed","_curry2","fn","obj","keyList","keys_default","idx","key","forEachObjIndexed_default","fromPairs","_curry1","pairs","result","idx","fromPairs_default","groupBy","_curry2","_checkForMethod","reduceBy_default","acc","item","groupBy_default","groupWith","_curry2","fn","list","res","idx","len","nextidx","groupWith_default","gt","_curry2","a","b","gt_default","gte","_curry2","a","b","gte_default","hasPath","_curry2","_path","obj","isNil_default","val","idx","_has","hasPath_default","has","_curry2","prop","obj","hasPath_default","has_default","hasIn","_curry2","prop","obj","isNil_default","hasIn_default","identical","_curry2","objectIs_default","identical_default","ifElse","_curry3","condition","onTrue","onFalse","curryN_default","ifElse_default","inc","add_default","inc_default","includes","_curry2","_includes","includes_default","indexBy","reduceBy_default","acc","elem","indexBy_default","indexOf","_curry2","target","xs","isArray_default","_indexOf","indexOf_default","init","slice_default","init_default","innerJoin","_curry3","pred","xs","ys","_filter","x","_includesWith","innerJoin_default","insert","_curry3","idx","elt","list","result","insert_default","insertAll","_curry3","idx","elts","list","insertAll_default","XUniqBy","f","xf","Set_default","xfBase_default","result","input","_xuniqBy","_curry2","xuniqBy_default","uniqBy","_curry2","_dispatchable","xuniqBy_default","fn","list","set","Set_default","result","idx","appliedItem","item","uniqBy_default","uniq","uniqBy_default","identity_default","uniq_default","intersection","_curry2","list1","list2","lookupList","filteredList","uniq_default","_filter","flip_default","_includes","intersection_default","intersperse","_curry2","_checkForMethod","separator","list","out","idx","length","intersperse_default","_objectAssign","target","output","idx","length","source","nextKey","_has","objectAssign_default","objOf","_curry2","key","val","obj","objOf_default","_stepCatArray","xs","x","_identity","_stepCatString","a","b","_stepCatObject","result","input","objectAssign_default","isArrayLike_default","objOf_default","_stepCat","obj","_isTransformer","into","_curry3","acc","xf","list","_isTransformer","_reduce","_stepCat","_clone","into_default","invert","_curry1","obj","props","keys_default","len","idx","out","key","val","list","_has","invert_default","invertObj","_curry1","obj","props","keys_default","len","idx","out","key","invertObj_default","invoker","_curry2","arity","method","curryN_default","target","_isFunction","toString_default","invoker_default","is","_curry2","Ctor","val","is_default","isEmpty","_curry1","x","equals_default","empty_default","isEmpty_default","join","invoker_default","join_default","juxt","_curry1","fns","converge_default","juxt_default","keysIn","_curry1","obj","prop","ks","keysIn_default","lastIndexOf","_curry2","target","xs","isArray_default","idx","equals_default","lastIndexOf_default","_isNumber","x","length","_curry1","list","_isNumber","length_default","lens","_curry2","getter","setter","toFunctorFn","target","map_default","focus","lens_default","update","_curry3","idx","x","list","adjust_default","always_default","update_default","lensIndex","_curry1","n","lens_default","nth_default","update_default","lensIndex_default","paths","_curry2","pathsArray","obj","val","idx","p","isInteger_default","nth_default","paths_default","path","_curry2","pathAr","obj","paths_default","path_default","lensPath","_curry1","p","lens_default","path_default","assocPath_default","lensPath_default","lensProp","_curry1","k","lens_default","prop_default","assoc_default","lensProp_default","lt","_curry2","a","b","lt_default","lte","_curry2","a","b","lte_default","mapAccum","_curry3","fn","acc","list","idx","len","result","tuple","mapAccum_default","mapAccumRight","_curry3","fn","acc","list","idx","result","tuple","mapAccumRight_default","mapObjIndexed","_curry2","fn","obj","_reduce","acc","key","keys_default","mapObjIndexed_default","match","_curry2","rx","str","match_default","mathMod","_curry2","m","p","isInteger_default","mathMod_default","maxBy","_curry3","f","a","b","maxBy_default","sum","reduce_default","add_default","sum_default","mean","_curry1","list","sum_default","mean_default","median","_curry1","list","len","width","idx","mean_default","b","median_default","memoizeWith","_curry2","mFn","fn","cache","_arity","key","_has","memoizeWith_default","mergeAll","_curry1","list","objectAssign_default","mergeAll_default","mergeWithKey","_curry3","fn","l","r","result","k","_has","mergeWithKey_default","mergeDeepWithKey","_curry3","fn","lObj","rObj","mergeWithKey_default","k","lVal","rVal","_isObject","mergeDeepWithKey_default","mergeDeepLeft","_curry2","lObj","rObj","mergeDeepWithKey_default","k","lVal","rVal","mergeDeepLeft_default","mergeDeepRight","_curry2","lObj","rObj","mergeDeepWithKey_default","k","lVal","rVal","mergeDeepRight_default","mergeDeepWith","_curry3","fn","lObj","rObj","mergeDeepWithKey_default","k","lVal","rVal","mergeDeepWith_default","mergeLeft","_curry2","l","r","objectAssign_default","mergeLeft_default","mergeRight","_curry2","l","r","objectAssign_default","mergeRight_default","mergeWith","_curry3","fn","l","r","mergeWithKey_default","_","_l","_r","mergeWith_default","min","_curry2","a","b","min_default","minBy","_curry3","f","a","b","minBy_default","_modify","prop","fn","obj","isInteger_default","isArray_default","arr","result","p","modifyPath","_curry3","path","fn","object","_isObject","isArray_default","idx","_has","_modify","val","_assoc","modifyPath_default","modify","_curry3","prop","fn","object","modifyPath_default","modify_default","modulo","_curry2","a","b","modulo_default","move","_curry3","from","to","list","length","result","positiveFrom","positiveTo","item","move_default","multiply","_curry2","a","b","multiply_default","partialObject_default","_curry2","f","o","props","mergeDeepRight_default","negate","_curry1","n","negate_default","none","_curry2","fn","input","all_default","_complement","none_default","nthArg","_curry1","n","arity","curryN_default","nth_default","nthArg_default","o","_curry3","f","g","x","o_default","_of","x","of","_curry1","_of","of_default","omit","_curry2","names","obj","result","index","idx","len","prop","omit_default","on","_curryN","f","g","a","b","on_default","once","_curry1","fn","called","result","_arity","once_default","_assertPromise","name","p","_isFunction","_toString","otherwise","_curry2","f","p","_assertPromise","otherwise_default","Identity","x","f","over","_curry3","lens","y","over_default","pair","_curry2","fst","snd","pair_default","_createPartialApplicator","concat","_curry2","fn","args","_arity","partial","_createPartialApplicator","_concat","partial_default","partialRight","_createPartialApplicator","flip_default","_concat","partialRight_default","partition","juxt_default","filter_default","reject_default","partition_default","pathEq","_curry3","_path","val","obj","equals_default","path_default","pathEq_default","pathOr","_curry3","d","p","obj","defaultTo_default","path_default","pathOr_default","pathSatisfies","_curry3","pred","propPath","obj","path_default","pathSatisfies_default","pick","_curry2","names","obj","result","idx","pick_default","pickAll","_curry2","names","obj","result","idx","len","name","pickAll_default","pickBy","_curry2","test","obj","result","prop","pickBy_default","prepend","_curry2","el","list","_concat","prepend_default","product","reduce_default","multiply_default","product_default","useWith","_curry2","fn","transformers","curryN_default","args","idx","useWith_default","project","useWith_default","_map","pickAll_default","identity_default","project_default","_promap","f","g","profunctor","x","XPromap","f","g","xf","xfBase_default","result","input","_promap","_xpromap","_curry3","xpromap_default","promap","_curry3","_dispatchable","xpromap_default","_promap","promap_default","propEq","_curry3","name","val","obj","equals_default","prop_default","propEq_default","propIs","_curry3","type","name","obj","is_default","prop_default","propIs_default","propOr","_curry3","val","p","obj","defaultTo_default","prop_default","propOr_default","propSatisfies","_curry3","pred","name","obj","prop_default","propSatisfies_default","props","_curry2","ps","obj","p","path_default","props_default","range","_curry2","from","to","_isNumber","result","range_default","reduceRight","_curry3","fn","acc","list","idx","reduceRight_default","reduceWhile","_curryN","pred","fn","a","list","_reduce","acc","x","_reduced","reduceWhile_default","reduced","_curry1","_reduced","reduced_default","times","_curry2","fn","n","len","idx","list","times_default","repeat","_curry2","value","n","times_default","always_default","repeat_default","replace","_curry3","regex","replacement","str","replace_default","scan","_curry3","fn","acc","list","idx","len","result","scan_default","sequence","_curry2","of","traversable","reduceRight_default","x","acc","ap_default","map_default","prepend_default","sequence_default","set","_curry3","lens","v","x","over_default","always_default","set_default","sort","_curry2","comparator","list","sort_default","sortBy","_curry2","fn","list","a","b","aa","bb","sortBy_default","sortWith","_curry2","fns","list","a","b","result","sortWith_default","split","invoker_default","split_default","splitAt","_curry2","index","array","slice_default","length_default","splitAt_default","splitEvery","_curry2","n","list","result","idx","slice_default","splitEvery_default","splitWhen","_curry2","pred","list","idx","len","prefix","splitWhen_default","splitWhenever","_curryN","pred","list","acc","curr","i","splitWhenever_default","startsWith","_curry2","prefix","list","equals_default","take_default","startsWith_default","subtract","_curry2","a","b","subtract_default","symmetricDifference","_curry2","list1","list2","concat_default","difference_default","symmetricDifference_default","symmetricDifferenceWith","_curry3","pred","list1","list2","concat_default","differenceWith_default","symmetricDifferenceWith_default","takeLastWhile","_curry2","fn","xs","idx","slice_default","takeLastWhile_default","XTakeWhile","f","xf","xfBase_default","result","input","_reduced","_xtakeWhile","_curry2","xtakeWhile_default","takeWhile","_curry2","_dispatchable","xtakeWhile_default","fn","xs","idx","len","slice_default","takeWhile_default","XTap","f","xf","xfBase_default","result","input","_xtap","_curry2","xtap_default","tap","_curry2","_dispatchable","xtap_default","fn","x","tap_default","_isRegExp","x","test","_curry2","pattern","str","_isRegExp","toString_default","_cloneRegExp","test_default","andThen","_curry2","f","p","_assertPromise","andThen_default","toLower","invoker_default","toLower_default","toPairs","_curry1","obj","pairs","prop","_has","toPairs_default","toPairsIn","_curry1","obj","pairs","prop","toPairsIn_default","toUpper","invoker_default","toUpper_default","transduce","curryN_default","xf","fn","acc","list","_reduce","_xwrap","transduce_default","transpose","_curry1","outerlist","i","result","innerlist","j","transpose_default","traverse","_curry3","of","f","traversable","sequence_default","map_default","traverse_default","ws","zeroWidth","hasProtoTrim","trim","_curry1","str","beginRx","endRx","trim_default","tryCatch","_curry2","tryer","catcher","_arity","e","_concat","tryCatch_default","unapply","_curry1","fn","unapply_default","unary","_curry1","fn","nAry_default","unary_default","uncurryN","_curry2","depth","fn","curryN_default","currentDepth","value","idx","endIdx","uncurryN_default","unfold","_curry2","fn","seed","pair","result","unfold_default","union","_curry2","compose","uniq_default","_concat","union_default","XUniqWith","pred","xf","xfBase_default","result","input","_includesWith","_xuniqWith","_curry2","xuniqWith_default","uniqWith","_curry2","_dispatchable","xuniqWith_default","pred","list","idx","len","result","item","_includesWith","uniqWith_default","unionWith","_curry3","pred","list1","list2","uniqWith_default","_concat","unionWith_default","unless","_curry3","pred","whenFalseFn","x","unless_default","unnest","chain_default","_identity","unnest_default","until","_curry3","pred","fn","init","val","until_default","unwind","_curry2","key","object","isArray_default","_map","item","_assoc","unwind_default","valuesIn","_curry1","obj","prop","vs","valuesIn_default","Const","x","view","_curry2","lens","view_default","when","_curry3","pred","whenTrueFn","x","when_default","where","_curry2","spec","testObj","prop","_has","where_default","whereAny","_curry2","spec","testObj","prop","_has","whereAny_default","whereEq","_curry2","spec","testObj","where_default","map_default","equals_default","whereEq_default","without","_curry2","xs","list","reject_default","flip_default","_includes","without_default","xor","_curry2","a","b","xor_default","xprod","_curry2","a","b","idx","ilen","j","jlen","result","xprod_default","zip","_curry2","a","b","rv","idx","len","zip_default","zipObj","_curry2","keys","values","idx","len","out","zipObj_default","zipWith","_curry3","fn","a","b","rv","idx","len","zipWith_default","thunkify","_curry1","fn","curryN_default","fnArgs","thunkify_default"],"sourceRoot":"/","sources":["../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/F.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/T.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/__.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_isPlaceholder.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_curry1.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_curry2.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/add.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_concat.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_arity.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_curryN.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/curryN.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/addIndex.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_curry3.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/adjust.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_isArray.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_isTransformer.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_dispatchable.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_reduced.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_xfBase.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_xall.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/all.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/max.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_map.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_isString.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_isArrayLike.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_xwrap.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/bind.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_reduce.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_xmap.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_has.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_isArguments.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/keys.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/map.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_isInteger.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/nth.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/prop.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/pluck.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/reduce.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/allPass.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/always.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/and.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_xany.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/any.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/anyPass.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/ap.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_aperture.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_xaperture.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/aperture.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/append.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/apply.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/values.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/applySpec.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/applyTo.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/ascend.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_assoc.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/isNil.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/assocPath.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/assoc.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/nAry.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/binary.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_isFunction.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/liftN.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/lift.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/both.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/call.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_makeFlat.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_forceReduced.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_flatCat.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_xchain.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/chain.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/clamp.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_cloneRegExp.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/type.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_clone.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/clone.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/collectBy.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/comparator.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/not.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/complement.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_pipe.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_checkForMethod.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/slice.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/tail.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/pipe.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/reverse.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/compose.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/head.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_identity.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/identity.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/pipeWith.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/composeWith.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_arrayFromIterator.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_includesWith.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_functionName.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_objectIs.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_equals.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/equals.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_indexOf.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_includes.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_quote.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_toISOString.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_complement.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_filter.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_isObject.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_xfilter.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/filter.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/reject.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_toString.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/toString.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/concat.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/cond.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/curry.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/constructN.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/construct.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/converge.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/count.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_xreduceBy.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/reduceBy.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/countBy.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/dec.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/defaultTo.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/descend.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_Set.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/difference.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/differenceWith.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/remove.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_dissoc.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/dissocPath.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/dissoc.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/divide.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_xdrop.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/drop.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_xtake.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/take.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_dropLast.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_xdropLast.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/dropLast.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_dropLastWhile.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_xdropLastWhile.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/dropLastWhile.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_xdropRepeatsWith.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/last.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/dropRepeatsWith.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/dropRepeats.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_xdropWhile.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/dropWhile.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/or.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/either.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_isTypedArray.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/empty.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/takeLast.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/endsWith.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/eqBy.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/eqProps.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/evolve.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_xfind.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/find.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_xfindIndex.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/findIndex.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_xfindLast.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/findLast.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_xfindLastIndex.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/findLastIndex.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/flatten.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/flip.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/forEach.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/forEachObjIndexed.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/fromPairs.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/groupBy.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/groupWith.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/gt.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/gte.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/hasPath.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/has.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/hasIn.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/identical.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/ifElse.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/inc.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/includes.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/indexBy.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/indexOf.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/init.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/innerJoin.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/insert.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/insertAll.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_xuniqBy.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/uniqBy.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/uniq.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/intersection.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/intersperse.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_objectAssign.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/objOf.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_stepCat.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/into.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/invert.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/invertObj.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/invoker.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/is.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/isEmpty.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/join.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/juxt.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/keysIn.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/lastIndexOf.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_isNumber.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/length.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/lens.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/update.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/lensIndex.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/paths.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/path.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/lensPath.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/lensProp.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/lt.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/lte.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/mapAccum.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/mapAccumRight.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/mapObjIndexed.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/match.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/mathMod.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/maxBy.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/sum.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/mean.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/median.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/memoizeWith.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/mergeAll.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/mergeWithKey.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/mergeDeepWithKey.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/mergeDeepLeft.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/mergeDeepRight.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/mergeDeepWith.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/mergeLeft.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/mergeRight.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/mergeWith.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/min.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/minBy.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_modify.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/modifyPath.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/modify.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/modulo.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/move.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/multiply.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/partialObject.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/negate.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/none.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/nthArg.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/o.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_of.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/of.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/omit.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/on.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/once.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_assertPromise.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/otherwise.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/over.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/pair.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_createPartialApplicator.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/partial.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/partialRight.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/partition.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/pathEq.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/pathOr.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/pathSatisfies.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/pick.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/pickAll.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/pickBy.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/prepend.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/product.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/useWith.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/project.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_promap.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_xpromap.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/promap.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/propEq.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/propIs.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/propOr.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/propSatisfies.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/props.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/range.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/reduceRight.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/reduceWhile.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/reduced.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/times.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/repeat.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/replace.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/scan.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/sequence.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/set.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/sort.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/sortBy.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/sortWith.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/split.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/splitAt.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/splitEvery.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/splitWhen.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/splitWhenever.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/startsWith.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/subtract.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/symmetricDifference.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/symmetricDifferenceWith.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/takeLastWhile.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_xtakeWhile.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/takeWhile.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_xtap.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/tap.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_isRegExp.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/test.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/andThen.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/toLower.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/toPairs.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/toPairsIn.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/toUpper.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/transduce.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/transpose.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/traverse.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/trim.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/tryCatch.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/unapply.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/unary.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/uncurryN.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/unfold.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/union.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_xuniqWith.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/uniqWith.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/unionWith.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/unless.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/unnest.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/until.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/unwind.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/valuesIn.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/view.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/when.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/where.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/whereAny.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/whereEq.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/without.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/xor.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/xprod.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/zip.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/zipObj.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/zipWith.js","../esmd/npm/ramda@0.28.0/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/thunkify.js"],"sourcesContent":["/**\n * A function that always returns `false`. Any passed in parameters are ignored.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category Function\n * @sig * -\u003e Boolean\n * @param {*}\n * @return {Boolean}\n * @see R.T\n * @example\n *\n *      R.F(); //=\u003e false\n */\nvar F = function () {\n  return false;\n};\n\nexport default F;","/**\n * A function that always returns `true`. Any passed in parameters are ignored.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category Function\n * @sig * -\u003e Boolean\n * @param {*}\n * @return {Boolean}\n * @see R.F\n * @example\n *\n *      R.T(); //=\u003e true\n */\nvar T = function () {\n  return true;\n};\n\nexport default T;","/**\n * A special placeholder value used to specify \"gaps\" within curried functions,\n * allowing partial application of any combination of arguments, regardless of\n * their positions.\n *\n * If `g` is a curried ternary function and `_` is `R.__`, the following are\n * equivalent:\n *\n *   - `g(1, 2, 3)`\n *   - `g(_, 2, 3)(1)`\n *   - `g(_, _, 3)(1)(2)`\n *   - `g(_, _, 3)(1, 2)`\n *   - `g(_, 2, _)(1, 3)`\n *   - `g(_, 2)(1)(3)`\n *   - `g(_, 2)(1, 3)`\n *   - `g(_, 2)(_, 3)(1)`\n *\n * @name __\n * @constant\n * @memberOf R\n * @since v0.6.0\n * @category Function\n * @example\n *\n *      const greet = R.replace('{name}', R.__, 'Hello, {name}!');\n *      greet('Alice'); //=\u003e 'Hello, Alice!'\n */\nexport default {\n  '@@functional/placeholder': true\n};","export default function _isPlaceholder(a) {\n  return a != null \u0026\u0026 typeof a === 'object' \u0026\u0026 a['@@functional/placeholder'] === true;\n}","import _isPlaceholder from \"./_isPlaceholder.js\";\n/**\n * Optimized internal one-arity curry function.\n *\n * @private\n * @category Function\n * @param {Function} fn The function to curry.\n * @return {Function} The curried function.\n */\n\nexport default function _curry1(fn) {\n  return function f1(a) {\n    if (arguments.length === 0 || _isPlaceholder(a)) {\n      return f1;\n    } else {\n      return fn.apply(this, arguments);\n    }\n  };\n}","import _curry1 from \"./_curry1.js\";\nimport _isPlaceholder from \"./_isPlaceholder.js\";\n/**\n * Optimized internal two-arity curry function.\n *\n * @private\n * @category Function\n * @param {Function} fn The function to curry.\n * @return {Function} The curried function.\n */\n\nexport default function _curry2(fn) {\n  return function f2(a, b) {\n    switch (arguments.length) {\n      case 0:\n        return f2;\n\n      case 1:\n        return _isPlaceholder(a) ? f2 : _curry1(function (_b) {\n          return fn(a, _b);\n        });\n\n      default:\n        return _isPlaceholder(a) \u0026\u0026 _isPlaceholder(b) ? f2 : _isPlaceholder(a) ? _curry1(function (_a) {\n          return fn(_a, b);\n        }) : _isPlaceholder(b) ? _curry1(function (_b) {\n          return fn(a, _b);\n        }) : fn(a, b);\n    }\n  };\n}","import _curry2 from \"./internal/_curry2.js\";\n/**\n * Adds two values.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Math\n * @sig Number -\u003e Number -\u003e Number\n * @param {Number} a\n * @param {Number} b\n * @return {Number}\n * @see R.subtract\n * @example\n *\n *      R.add(2, 3);       //=\u003e  5\n *      R.add(7)(10);      //=\u003e 17\n */\n\nvar add =\n/*#__PURE__*/\n_curry2(function add(a, b) {\n  return Number(a) + Number(b);\n});\n\nexport default add;","/**\n * Private `concat` function to merge two array-like objects.\n *\n * @private\n * @param {Array|Arguments} [set1=[]] An array-like object.\n * @param {Array|Arguments} [set2=[]] An array-like object.\n * @return {Array} A new, merged array.\n * @example\n *\n *      _concat([4, 5, 6], [1, 2, 3]); //=\u003e [4, 5, 6, 1, 2, 3]\n */\nexport default function _concat(set1, set2) {\n  set1 = set1 || [];\n  set2 = set2 || [];\n  var idx;\n  var len1 = set1.length;\n  var len2 = set2.length;\n  var result = [];\n  idx = 0;\n\n  while (idx \u003c len1) {\n    result[result.length] = set1[idx];\n    idx += 1;\n  }\n\n  idx = 0;\n\n  while (idx \u003c len2) {\n    result[result.length] = set2[idx];\n    idx += 1;\n  }\n\n  return result;\n}","export default function _arity(n, fn) {\n  /* eslint-disable no-unused-vars */\n  switch (n) {\n    case 0:\n      return function () {\n        return fn.apply(this, arguments);\n      };\n\n    case 1:\n      return function (a0) {\n        return fn.apply(this, arguments);\n      };\n\n    case 2:\n      return function (a0, a1) {\n        return fn.apply(this, arguments);\n      };\n\n    case 3:\n      return function (a0, a1, a2) {\n        return fn.apply(this, arguments);\n      };\n\n    case 4:\n      return function (a0, a1, a2, a3) {\n        return fn.apply(this, arguments);\n      };\n\n    case 5:\n      return function (a0, a1, a2, a3, a4) {\n        return fn.apply(this, arguments);\n      };\n\n    case 6:\n      return function (a0, a1, a2, a3, a4, a5) {\n        return fn.apply(this, arguments);\n      };\n\n    case 7:\n      return function (a0, a1, a2, a3, a4, a5, a6) {\n        return fn.apply(this, arguments);\n      };\n\n    case 8:\n      return function (a0, a1, a2, a3, a4, a5, a6, a7) {\n        return fn.apply(this, arguments);\n      };\n\n    case 9:\n      return function (a0, a1, a2, a3, a4, a5, a6, a7, a8) {\n        return fn.apply(this, arguments);\n      };\n\n    case 10:\n      return function (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) {\n        return fn.apply(this, arguments);\n      };\n\n    default:\n      throw new Error('First argument to _arity must be a non-negative integer no greater than ten');\n  }\n}","import _arity from \"./_arity.js\";\nimport _isPlaceholder from \"./_isPlaceholder.js\";\n/**\n * Internal curryN function.\n *\n * @private\n * @category Function\n * @param {Number} length The arity of the curried function.\n * @param {Array} received An array of arguments received thus far.\n * @param {Function} fn The function to curry.\n * @return {Function} The curried function.\n */\n\nexport default function _curryN(length, received, fn) {\n  return function () {\n    var combined = [];\n    var argsIdx = 0;\n    var left = length;\n    var combinedIdx = 0;\n\n    while (combinedIdx \u003c received.length || argsIdx \u003c arguments.length) {\n      var result;\n\n      if (combinedIdx \u003c received.length \u0026\u0026 (!_isPlaceholder(received[combinedIdx]) || argsIdx \u003e= arguments.length)) {\n        result = received[combinedIdx];\n      } else {\n        result = arguments[argsIdx];\n        argsIdx += 1;\n      }\n\n      combined[combinedIdx] = result;\n\n      if (!_isPlaceholder(result)) {\n        left -= 1;\n      }\n\n      combinedIdx += 1;\n    }\n\n    return left \u003c= 0 ? fn.apply(this, combined) : _arity(left, _curryN(length, combined, fn));\n  };\n}","import _arity from \"./internal/_arity.js\";\nimport _curry1 from \"./internal/_curry1.js\";\nimport _curry2 from \"./internal/_curry2.js\";\nimport _curryN from \"./internal/_curryN.js\";\n/**\n * Returns a curried equivalent of the provided function, with the specified\n * arity. The curried function has two unusual capabilities. First, its\n * arguments needn't be provided one at a time. If `g` is `R.curryN(3, f)`, the\n * following are equivalent:\n *\n *   - `g(1)(2)(3)`\n *   - `g(1)(2, 3)`\n *   - `g(1, 2)(3)`\n *   - `g(1, 2, 3)`\n *\n * Secondly, the special placeholder value [`R.__`](#__) may be used to specify\n * \"gaps\", allowing partial application of any combination of arguments,\n * regardless of their positions. If `g` is as above and `_` is [`R.__`](#__),\n * the following are equivalent:\n *\n *   - `g(1, 2, 3)`\n *   - `g(_, 2, 3)(1)`\n *   - `g(_, _, 3)(1)(2)`\n *   - `g(_, _, 3)(1, 2)`\n *   - `g(_, 2)(1)(3)`\n *   - `g(_, 2)(1, 3)`\n *   - `g(_, 2)(_, 3)(1)`\n *\n * @func\n * @memberOf R\n * @since v0.5.0\n * @category Function\n * @sig Number -\u003e (* -\u003e a) -\u003e (* -\u003e a)\n * @param {Number} length The arity for the returned function.\n * @param {Function} fn The function to curry.\n * @return {Function} A new, curried function.\n * @see R.curry\n * @example\n *\n *      const sumArgs = (...args) =\u003e R.sum(args);\n *\n *      const curriedAddFourNumbers = R.curryN(4, sumArgs);\n *      const f = curriedAddFourNumbers(1, 2);\n *      const g = f(3);\n *      g(4); //=\u003e 10\n */\n\nvar curryN =\n/*#__PURE__*/\n_curry2(function curryN(length, fn) {\n  if (length === 1) {\n    return _curry1(fn);\n  }\n\n  return _arity(length, _curryN(length, [], fn));\n});\n\nexport default curryN;","import _concat from \"./internal/_concat.js\";\nimport _curry1 from \"./internal/_curry1.js\";\nimport curryN from \"./curryN.js\";\n/**\n * Creates a new list iteration function from an existing one by adding two new\n * parameters to its callback function: the current index, and the entire list.\n *\n * This would turn, for instance, [`R.map`](#map) function into one that\n * more closely resembles `Array.prototype.map`. Note that this will only work\n * for functions in which the iteration callback function is the first\n * parameter, and where the list is the last parameter. (This latter might be\n * unimportant if the list parameter is not used.)\n *\n * @func\n * @memberOf R\n * @since v0.15.0\n * @category Function\n * @category List\n * @sig (((a ...) -\u003e b) ... -\u003e [a] -\u003e *) -\u003e (((a ..., Int, [a]) -\u003e b) ... -\u003e [a] -\u003e *)\n * @param {Function} fn A list iteration function that does not pass index or list to its callback\n * @return {Function} An altered list iteration function that passes (item, index, list) to its callback\n * @example\n *\n *      const mapIndexed = R.addIndex(R.map);\n *      mapIndexed((val, idx) =\u003e idx + '-' + val, ['f', 'o', 'o', 'b', 'a', 'r']);\n *      //=\u003e ['0-f', '1-o', '2-o', '3-b', '4-a', '5-r']\n */\n\nvar addIndex =\n/*#__PURE__*/\n_curry1(function addIndex(fn) {\n  return curryN(fn.length, function () {\n    var idx = 0;\n    var origFn = arguments[0];\n    var list = arguments[arguments.length - 1];\n    var args = Array.prototype.slice.call(arguments, 0);\n\n    args[0] = function () {\n      var result = origFn.apply(this, _concat(arguments, [idx, list]));\n      idx += 1;\n      return result;\n    };\n\n    return fn.apply(this, args);\n  });\n});\n\nexport default addIndex;","import _curry1 from \"./_curry1.js\";\nimport _curry2 from \"./_curry2.js\";\nimport _isPlaceholder from \"./_isPlaceholder.js\";\n/**\n * Optimized internal three-arity curry function.\n *\n * @private\n * @category Function\n * @param {Function} fn The function to curry.\n * @return {Function} The curried function.\n */\n\nexport default function _curry3(fn) {\n  return function f3(a, b, c) {\n    switch (arguments.length) {\n      case 0:\n        return f3;\n\n      case 1:\n        return _isPlaceholder(a) ? f3 : _curry2(function (_b, _c) {\n          return fn(a, _b, _c);\n        });\n\n      case 2:\n        return _isPlaceholder(a) \u0026\u0026 _isPlaceholder(b) ? f3 : _isPlaceholder(a) ? _curry2(function (_a, _c) {\n          return fn(_a, b, _c);\n        }) : _isPlaceholder(b) ? _curry2(function (_b, _c) {\n          return fn(a, _b, _c);\n        }) : _curry1(function (_c) {\n          return fn(a, b, _c);\n        });\n\n      default:\n        return _isPlaceholder(a) \u0026\u0026 _isPlaceholder(b) \u0026\u0026 _isPlaceholder(c) ? f3 : _isPlaceholder(a) \u0026\u0026 _isPlaceholder(b) ? _curry2(function (_a, _b) {\n          return fn(_a, _b, c);\n        }) : _isPlaceholder(a) \u0026\u0026 _isPlaceholder(c) ? _curry2(function (_a, _c) {\n          return fn(_a, b, _c);\n        }) : _isPlaceholder(b) \u0026\u0026 _isPlaceholder(c) ? _curry2(function (_b, _c) {\n          return fn(a, _b, _c);\n        }) : _isPlaceholder(a) ? _curry1(function (_a) {\n          return fn(_a, b, c);\n        }) : _isPlaceholder(b) ? _curry1(function (_b) {\n          return fn(a, _b, c);\n        }) : _isPlaceholder(c) ? _curry1(function (_c) {\n          return fn(a, b, _c);\n        }) : fn(a, b, c);\n    }\n  };\n}","import _concat from \"./internal/_concat.js\";\nimport _curry3 from \"./internal/_curry3.js\";\n/**\n * Applies a function to the value at the given index of an array, returning a\n * new copy of the array with the element at the given index replaced with the\n * result of the function application.\n *\n * @func\n * @memberOf R\n * @since v0.14.0\n * @category List\n * @sig Number -\u003e (a -\u003e a) -\u003e [a] -\u003e [a]\n * @param {Number} idx The index.\n * @param {Function} fn The function to apply.\n * @param {Array|Arguments} list An array-like object whose value\n *        at the supplied index will be replaced.\n * @return {Array} A copy of the supplied array-like object with\n *         the element at index `idx` replaced with the value\n *         returned by applying `fn` to the existing element.\n * @see R.update\n * @example\n *\n *      R.adjust(1, R.toUpper, ['a', 'b', 'c', 'd']);      //=\u003e ['a', 'B', 'c', 'd']\n *      R.adjust(-1, R.toUpper, ['a', 'b', 'c', 'd']);     //=\u003e ['a', 'b', 'c', 'D']\n * @symb R.adjust(-1, f, [a, b]) = [a, f(b)]\n * @symb R.adjust(0, f, [a, b]) = [f(a), b]\n */\n\nvar adjust =\n/*#__PURE__*/\n_curry3(function adjust(idx, fn, list) {\n  var len = list.length;\n\n  if (idx \u003e= len || idx \u003c -len) {\n    return list;\n  }\n\n  var _idx = (len + idx) % len;\n\n  var _list = _concat(list);\n\n  _list[_idx] = fn(list[_idx]);\n  return _list;\n});\n\nexport default adjust;","/**\n * Tests whether or not an object is an array.\n *\n * @private\n * @param {*} val The object to test.\n * @return {Boolean} `true` if `val` is an array, `false` otherwise.\n * @example\n *\n *      _isArray([]); //=\u003e true\n *      _isArray(null); //=\u003e false\n *      _isArray({}); //=\u003e false\n */\nexport default Array.isArray || function _isArray(val) {\n  return val != null \u0026\u0026 val.length \u003e= 0 \u0026\u0026 Object.prototype.toString.call(val) === '[object Array]';\n};","export default function _isTransformer(obj) {\n  return obj != null \u0026\u0026 typeof obj['@@transducer/step'] === 'function';\n}","import _isArray from \"./_isArray.js\";\nimport _isTransformer from \"./_isTransformer.js\";\n/**\n * Returns a function that dispatches with different strategies based on the\n * object in list position (last argument). If it is an array, executes [fn].\n * Otherwise, if it has a function with one of the given method names, it will\n * execute that function (functor case). Otherwise, if it is a transformer,\n * uses transducer created by [transducerCreator] to return a new transformer\n * (transducer case).\n * Otherwise, it will default to executing [fn].\n *\n * @private\n * @param {Array} methodNames properties to check for a custom implementation\n * @param {Function} transducerCreator transducer factory if object is transformer\n * @param {Function} fn default ramda implementation\n * @return {Function} A function that dispatches on object in list position\n */\n\nexport default function _dispatchable(methodNames, transducerCreator, fn) {\n  return function () {\n    if (arguments.length === 0) {\n      return fn();\n    }\n\n    var obj = arguments[arguments.length - 1];\n\n    if (!_isArray(obj)) {\n      var idx = 0;\n\n      while (idx \u003c methodNames.length) {\n        if (typeof obj[methodNames[idx]] === 'function') {\n          return obj[methodNames[idx]].apply(obj, Array.prototype.slice.call(arguments, 0, -1));\n        }\n\n        idx += 1;\n      }\n\n      if (_isTransformer(obj)) {\n        var transducer = transducerCreator.apply(null, Array.prototype.slice.call(arguments, 0, -1));\n        return transducer(obj);\n      }\n    }\n\n    return fn.apply(this, arguments);\n  };\n}","export default function _reduced(x) {\n  return x \u0026\u0026 x['@@transducer/reduced'] ? x : {\n    '@@transducer/value': x,\n    '@@transducer/reduced': true\n  };\n}","export default {\n  init: function () {\n    return this.xf['@@transducer/init']();\n  },\n  result: function (result) {\n    return this.xf['@@transducer/result'](result);\n  }\n};","import _curry2 from \"./_curry2.js\";\nimport _reduced from \"./_reduced.js\";\nimport _xfBase from \"./_xfBase.js\";\n\nvar XAll =\n/*#__PURE__*/\nfunction () {\n  function XAll(f, xf) {\n    this.xf = xf;\n    this.f = f;\n    this.all = true;\n  }\n\n  XAll.prototype['@@transducer/init'] = _xfBase.init;\n\n  XAll.prototype['@@transducer/result'] = function (result) {\n    if (this.all) {\n      result = this.xf['@@transducer/step'](result, true);\n    }\n\n    return this.xf['@@transducer/result'](result);\n  };\n\n  XAll.prototype['@@transducer/step'] = function (result, input) {\n    if (!this.f(input)) {\n      this.all = false;\n      result = _reduced(this.xf['@@transducer/step'](result, false));\n    }\n\n    return result;\n  };\n\n  return XAll;\n}();\n\nvar _xall =\n/*#__PURE__*/\n_curry2(function _xall(f, xf) {\n  return new XAll(f, xf);\n});\n\nexport default _xall;","import _curry2 from \"./internal/_curry2.js\";\nimport _dispatchable from \"./internal/_dispatchable.js\";\nimport _xall from \"./internal/_xall.js\";\n/**\n * Returns `true` if all elements of the list match the predicate, `false` if\n * there are any that don't.\n *\n * Dispatches to the `all` method of the second argument, if present.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig (a -\u003e Boolean) -\u003e [a] -\u003e Boolean\n * @param {Function} fn The predicate function.\n * @param {Array} list The array to consider.\n * @return {Boolean} `true` if the predicate is satisfied by every element, `false`\n *         otherwise.\n * @see R.any, R.none, R.transduce\n * @example\n *\n *      const equals3 = R.equals(3);\n *      R.all(equals3)([3, 3, 3, 3]); //=\u003e true\n *      R.all(equals3)([3, 3, 1, 3]); //=\u003e false\n */\n\nvar all =\n/*#__PURE__*/\n_curry2(\n/*#__PURE__*/\n_dispatchable(['all'], _xall, function all(fn, list) {\n  var idx = 0;\n\n  while (idx \u003c list.length) {\n    if (!fn(list[idx])) {\n      return false;\n    }\n\n    idx += 1;\n  }\n\n  return true;\n}));\n\nexport default all;","import _curry2 from \"./internal/_curry2.js\";\n/**\n * Returns the larger of its two arguments.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Relation\n * @sig Ord a =\u003e a -\u003e a -\u003e a\n * @param {*} a\n * @param {*} b\n * @return {*}\n * @see R.maxBy, R.min\n * @example\n *\n *      R.max(789, 123); //=\u003e 789\n *      R.max('a', 'b'); //=\u003e 'b'\n */\n\nvar max =\n/*#__PURE__*/\n_curry2(function max(a, b) {\n  return b \u003e a ? b : a;\n});\n\nexport default max;","export default function _map(fn, functor) {\n  var idx = 0;\n  var len = functor.length;\n  var result = Array(len);\n\n  while (idx \u003c len) {\n    result[idx] = fn(functor[idx]);\n    idx += 1;\n  }\n\n  return result;\n}","export default function _isString(x) {\n  return Object.prototype.toString.call(x) === '[object String]';\n}","import _curry1 from \"./_curry1.js\";\nimport _isArray from \"./_isArray.js\";\nimport _isString from \"./_isString.js\";\n/**\n * Tests whether or not an object is similar to an array.\n *\n * @private\n * @category Type\n * @category List\n * @sig * -\u003e Boolean\n * @param {*} x The object to test.\n * @return {Boolean} `true` if `x` has a numeric length property and extreme indices defined; `false` otherwise.\n * @example\n *\n *      _isArrayLike([]); //=\u003e true\n *      _isArrayLike(true); //=\u003e false\n *      _isArrayLike({}); //=\u003e false\n *      _isArrayLike({length: 10}); //=\u003e false\n *      _isArrayLike({0: 'zero', 9: 'nine', length: 10}); //=\u003e true\n *      _isArrayLike({nodeType: 1, length: 1}) // =\u003e false\n */\n\nvar _isArrayLike =\n/*#__PURE__*/\n_curry1(function isArrayLike(x) {\n  if (_isArray(x)) {\n    return true;\n  }\n\n  if (!x) {\n    return false;\n  }\n\n  if (typeof x !== 'object') {\n    return false;\n  }\n\n  if (_isString(x)) {\n    return false;\n  }\n\n  if (x.length === 0) {\n    return true;\n  }\n\n  if (x.length \u003e 0) {\n    return x.hasOwnProperty(0) \u0026\u0026 x.hasOwnProperty(x.length - 1);\n  }\n\n  return false;\n});\n\nexport default _isArrayLike;","var XWrap =\n/*#__PURE__*/\nfunction () {\n  function XWrap(fn) {\n    this.f = fn;\n  }\n\n  XWrap.prototype['@@transducer/init'] = function () {\n    throw new Error('init not implemented on XWrap');\n  };\n\n  XWrap.prototype['@@transducer/result'] = function (acc) {\n    return acc;\n  };\n\n  XWrap.prototype['@@transducer/step'] = function (acc, x) {\n    return this.f(acc, x);\n  };\n\n  return XWrap;\n}();\n\nexport default function _xwrap(fn) {\n  return new XWrap(fn);\n}","import _arity from \"./internal/_arity.js\";\nimport _curry2 from \"./internal/_curry2.js\";\n/**\n * Creates a function that is bound to a context.\n * Note: `R.bind` does not provide the additional argument-binding capabilities of\n * [Function.prototype.bind](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind).\n *\n * @func\n * @memberOf R\n * @since v0.6.0\n * @category Function\n * @category Object\n * @sig (* -\u003e *) -\u003e {*} -\u003e (* -\u003e *)\n * @param {Function} fn The function to bind to context\n * @param {Object} thisObj The context to bind `fn` to\n * @return {Function} A function that will execute in the context of `thisObj`.\n * @see R.partial\n * @example\n *\n *      const log = R.bind(console.log, console);\n *      R.pipe(R.assoc('a', 2), R.tap(log), R.assoc('a', 3))({a: 1}); //=\u003e {a: 3}\n *      // logs {a: 2}\n * @symb R.bind(f, o)(a, b) = f.call(o, a, b)\n */\n\nvar bind =\n/*#__PURE__*/\n_curry2(function bind(fn, thisObj) {\n  return _arity(fn.length, function () {\n    return fn.apply(thisObj, arguments);\n  });\n});\n\nexport default bind;","import _isArrayLike from \"./_isArrayLike.js\";\nimport _xwrap from \"./_xwrap.js\";\nimport bind from \"../bind.js\";\n\nfunction _arrayReduce(xf, acc, list) {\n  var idx = 0;\n  var len = list.length;\n\n  while (idx \u003c len) {\n    acc = xf['@@transducer/step'](acc, list[idx]);\n\n    if (acc \u0026\u0026 acc['@@transducer/reduced']) {\n      acc = acc['@@transducer/value'];\n      break;\n    }\n\n    idx += 1;\n  }\n\n  return xf['@@transducer/result'](acc);\n}\n\nfunction _iterableReduce(xf, acc, iter) {\n  var step = iter.next();\n\n  while (!step.done) {\n    acc = xf['@@transducer/step'](acc, step.value);\n\n    if (acc \u0026\u0026 acc['@@transducer/reduced']) {\n      acc = acc['@@transducer/value'];\n      break;\n    }\n\n    step = iter.next();\n  }\n\n  return xf['@@transducer/result'](acc);\n}\n\nfunction _methodReduce(xf, acc, obj, methodName) {\n  return xf['@@transducer/result'](obj[methodName](bind(xf['@@transducer/step'], xf), acc));\n}\n\nvar symIterator = typeof Symbol !== 'undefined' ? Symbol.iterator : '@@iterator';\nexport default function _reduce(fn, acc, list) {\n  if (typeof fn === 'function') {\n    fn = _xwrap(fn);\n  }\n\n  if (_isArrayLike(list)) {\n    return _arrayReduce(fn, acc, list);\n  }\n\n  if (typeof list['fantasy-land/reduce'] === 'function') {\n    return _methodReduce(fn, acc, list, 'fantasy-land/reduce');\n  }\n\n  if (list[symIterator] != null) {\n    return _iterableReduce(fn, acc, list[symIterator]());\n  }\n\n  if (typeof list.next === 'function') {\n    return _iterableReduce(fn, acc, list);\n  }\n\n  if (typeof list.reduce === 'function') {\n    return _methodReduce(fn, acc, list, 'reduce');\n  }\n\n  throw new TypeError('reduce: list must be array or iterable');\n}","import _curry2 from \"./_curry2.js\";\nimport _xfBase from \"./_xfBase.js\";\n\nvar XMap =\n/*#__PURE__*/\nfunction () {\n  function XMap(f, xf) {\n    this.xf = xf;\n    this.f = f;\n  }\n\n  XMap.prototype['@@transducer/init'] = _xfBase.init;\n  XMap.prototype['@@transducer/result'] = _xfBase.result;\n\n  XMap.prototype['@@transducer/step'] = function (result, input) {\n    return this.xf['@@transducer/step'](result, this.f(input));\n  };\n\n  return XMap;\n}();\n\nvar _xmap =\n/*#__PURE__*/\n_curry2(function _xmap(f, xf) {\n  return new XMap(f, xf);\n});\n\nexport default _xmap;","export default function _has(prop, obj) {\n  return Object.prototype.hasOwnProperty.call(obj, prop);\n}","import _has from \"./_has.js\";\nvar toString = Object.prototype.toString;\n\nvar _isArguments =\n/*#__PURE__*/\nfunction () {\n  return toString.call(arguments) === '[object Arguments]' ? function _isArguments(x) {\n    return toString.call(x) === '[object Arguments]';\n  } : function _isArguments(x) {\n    return _has('callee', x);\n  };\n}();\n\nexport default _isArguments;","import _curry1 from \"./internal/_curry1.js\";\nimport _has from \"./internal/_has.js\";\nimport _isArguments from \"./internal/_isArguments.js\"; // cover IE \u003c 9 keys issues\n\nvar hasEnumBug = !\n/*#__PURE__*/\n{\n  toString: null\n}.propertyIsEnumerable('toString');\nvar nonEnumerableProps = ['constructor', 'valueOf', 'isPrototypeOf', 'toString', 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString']; // Safari bug\n\nvar hasArgsEnumBug =\n/*#__PURE__*/\nfunction () {\n  'use strict';\n\n  return arguments.propertyIsEnumerable('length');\n}();\n\nvar contains = function contains(list, item) {\n  var idx = 0;\n\n  while (idx \u003c list.length) {\n    if (list[idx] === item) {\n      return true;\n    }\n\n    idx += 1;\n  }\n\n  return false;\n};\n/**\n * Returns a list containing the names of all the enumerable own properties of\n * the supplied object.\n * Note that the order of the output array is not guaranteed to be consistent\n * across different JS platforms.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Object\n * @sig {k: v} -\u003e [k]\n * @param {Object} obj The object to extract properties from\n * @return {Array} An array of the object's own properties.\n * @see R.keysIn, R.values, R.toPairs\n * @example\n *\n *      R.keys({a: 1, b: 2, c: 3}); //=\u003e ['a', 'b', 'c']\n */\n\n\nvar keys = typeof Object.keys === 'function' \u0026\u0026 !hasArgsEnumBug ?\n/*#__PURE__*/\n_curry1(function keys(obj) {\n  return Object(obj) !== obj ? [] : Object.keys(obj);\n}) :\n/*#__PURE__*/\n_curry1(function keys(obj) {\n  if (Object(obj) !== obj) {\n    return [];\n  }\n\n  var prop, nIdx;\n  var ks = [];\n\n  var checkArgsLength = hasArgsEnumBug \u0026\u0026 _isArguments(obj);\n\n  for (prop in obj) {\n    if (_has(prop, obj) \u0026\u0026 (!checkArgsLength || prop !== 'length')) {\n      ks[ks.length] = prop;\n    }\n  }\n\n  if (hasEnumBug) {\n    nIdx = nonEnumerableProps.length - 1;\n\n    while (nIdx \u003e= 0) {\n      prop = nonEnumerableProps[nIdx];\n\n      if (_has(prop, obj) \u0026\u0026 !contains(ks, prop)) {\n        ks[ks.length] = prop;\n      }\n\n      nIdx -= 1;\n    }\n  }\n\n  return ks;\n});\nexport default keys;","import _curry2 from \"./internal/_curry2.js\";\nimport _dispatchable from \"./internal/_dispatchable.js\";\nimport _map from \"./internal/_map.js\";\nimport _reduce from \"./internal/_reduce.js\";\nimport _xmap from \"./internal/_xmap.js\";\nimport curryN from \"./curryN.js\";\nimport keys from \"./keys.js\";\n/**\n * Takes a function and\n * a [functor](https://github.com/fantasyland/fantasy-land#functor),\n * applies the function to each of the functor's values, and returns\n * a functor of the same shape.\n *\n * Ramda provides suitable `map` implementations for `Array` and `Object`,\n * so this function may be applied to `[1, 2, 3]` or `{x: 1, y: 2, z: 3}`.\n *\n * Dispatches to the `map` method of the second argument, if present.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * Also treats functions as functors and will compose them together.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig Functor f =\u003e (a -\u003e b) -\u003e f a -\u003e f b\n * @param {Function} fn The function to be called on every element of the input `list`.\n * @param {Array} list The list to be iterated over.\n * @return {Array} The new list.\n * @see R.transduce, R.addIndex, R.pluck, R.project\n * @example\n *\n *      const double = x =\u003e x * 2;\n *\n *      R.map(double, [1, 2, 3]); //=\u003e [2, 4, 6]\n *\n *      R.map(double, {x: 1, y: 2, z: 3}); //=\u003e {x: 2, y: 4, z: 6}\n * @symb R.map(f, [a, b]) = [f(a), f(b)]\n * @symb R.map(f, { x: a, y: b }) = { x: f(a), y: f(b) }\n * @symb R.map(f, functor_o) = functor_o.map(f)\n */\n\nvar map =\n/*#__PURE__*/\n_curry2(\n/*#__PURE__*/\n_dispatchable(['fantasy-land/map', 'map'], _xmap, function map(fn, functor) {\n  switch (Object.prototype.toString.call(functor)) {\n    case '[object Function]':\n      return curryN(functor.length, function () {\n        return fn.call(this, functor.apply(this, arguments));\n      });\n\n    case '[object Object]':\n      return _reduce(function (acc, key) {\n        acc[key] = fn(functor[key]);\n        return acc;\n      }, {}, keys(functor));\n\n    default:\n      return _map(fn, functor);\n  }\n}));\n\nexport default map;","/**\n * Determine if the passed argument is an integer.\n *\n * @private\n * @param {*} n\n * @category Type\n * @return {Boolean}\n */\nexport default Number.isInteger || function _isInteger(n) {\n  return n \u003c\u003c 0 === n;\n};","import _curry2 from \"./internal/_curry2.js\";\nimport _isString from \"./internal/_isString.js\";\n/**\n * Returns the nth element of the given list or string. If n is negative the\n * element at index length + n is returned.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig Number -\u003e [a] -\u003e a | Undefined\n * @sig Number -\u003e String -\u003e String\n * @param {Number} offset\n * @param {*} list\n * @return {*}\n * @example\n *\n *      const list = ['foo', 'bar', 'baz', 'quux'];\n *      R.nth(1, list); //=\u003e 'bar'\n *      R.nth(-1, list); //=\u003e 'quux'\n *      R.nth(-99, list); //=\u003e undefined\n *\n *      R.nth(2, 'abc'); //=\u003e 'c'\n *      R.nth(3, 'abc'); //=\u003e ''\n * @symb R.nth(-1, [a, b, c]) = c\n * @symb R.nth(0, [a, b, c]) = a\n * @symb R.nth(1, [a, b, c]) = b\n */\n\nvar nth =\n/*#__PURE__*/\n_curry2(function nth(offset, list) {\n  var idx = offset \u003c 0 ? list.length + offset : offset;\n  return _isString(list) ? list.charAt(idx) : list[idx];\n});\n\nexport default nth;","import _curry2 from \"./internal/_curry2.js\";\nimport _isInteger from \"./internal/_isInteger.js\";\nimport nth from \"./nth.js\";\n/**\n * Returns a function that when supplied an object returns the indicated\n * property of that object, if it exists.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Object\n * @typedefn Idx = String | Int | Symbol\n * @sig Idx -\u003e {s: a} -\u003e a | Undefined\n * @param {String|Number} p The property name or array index\n * @param {Object} obj The object to query\n * @return {*} The value at `obj.p`.\n * @see R.path, R.props, R.pluck, R.project, R.nth\n * @example\n *\n *      R.prop('x', {x: 100}); //=\u003e 100\n *      R.prop('x', {}); //=\u003e undefined\n *      R.prop(0, [100]); //=\u003e 100\n *      R.compose(R.inc, R.prop('x'))({ x: 3 }) //=\u003e 4\n */\n\nvar prop =\n/*#__PURE__*/\n_curry2(function prop(p, obj) {\n  if (obj == null) {\n    return;\n  }\n\n  return _isInteger(p) ? nth(p, obj) : obj[p];\n});\n\nexport default prop;","import _curry2 from \"./internal/_curry2.js\";\nimport map from \"./map.js\";\nimport prop from \"./prop.js\";\n/**\n * Returns a new list by plucking the same named property off all objects in\n * the list supplied.\n *\n * `pluck` will work on\n * any [functor](https://github.com/fantasyland/fantasy-land#functor) in\n * addition to arrays, as it is equivalent to `R.map(R.prop(k), f)`.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig Functor f =\u003e k -\u003e f {k: v} -\u003e f v\n * @param {Number|String} key The key name to pluck off of each object.\n * @param {Array} f The array or functor to consider.\n * @return {Array} The list of values for the given key.\n * @see R.project, R.prop, R.props\n * @example\n *\n *      var getAges = R.pluck('age');\n *      getAges([{name: 'fred', age: 29}, {name: 'wilma', age: 27}]); //=\u003e [29, 27]\n *\n *      R.pluck(0, [[1, 2], [3, 4]]);               //=\u003e [1, 3]\n *      R.pluck('val', {a: {val: 3}, b: {val: 5}}); //=\u003e {a: 3, b: 5}\n * @symb R.pluck('x', [{x: 1, y: 2}, {x: 3, y: 4}, {x: 5, y: 6}]) = [1, 3, 5]\n * @symb R.pluck(0, [[1, 2], [3, 4], [5, 6]]) = [1, 3, 5]\n */\n\nvar pluck =\n/*#__PURE__*/\n_curry2(function pluck(p, list) {\n  return map(prop(p), list);\n});\n\nexport default pluck;","import _curry3 from \"./internal/_curry3.js\";\nimport _reduce from \"./internal/_reduce.js\";\n/**\n * Returns a single item by iterating through the list, successively calling\n * the iterator function and passing it an accumulator value and the current\n * value from the array, and then passing the result to the next call.\n *\n * The iterator function receives two values: *(acc, value)*. It may use\n * [`R.reduced`](#reduced) to shortcut the iteration.\n *\n * The arguments' order of [`reduceRight`](#reduceRight)'s iterator function\n * is *(value, acc)*.\n *\n * Note: `R.reduce` does not skip deleted or unassigned indices (sparse\n * arrays), unlike the native `Array.prototype.reduce` method. For more details\n * on this behavior, see:\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce#Description\n *\n * Dispatches to the `reduce` method of the third argument, if present. When\n * doing so, it is up to the user to handle the [`R.reduced`](#reduced)\n * shortcuting, as this is not implemented by `reduce`.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig ((a, b) -\u003e a) -\u003e a -\u003e [b] -\u003e a\n * @param {Function} fn The iterator function. Receives two values, the accumulator and the\n *        current element from the array.\n * @param {*} acc The accumulator value.\n * @param {Array} list The list to iterate over.\n * @return {*} The final, accumulated value.\n * @see R.reduced, R.addIndex, R.reduceRight\n * @example\n *\n *      R.reduce(R.subtract, 0, [1, 2, 3, 4]) // =\u003e ((((0 - 1) - 2) - 3) - 4) = -10\n *      //          -               -10\n *      //         / \\              / \\\n *      //        -   4           -6   4\n *      //       / \\              / \\\n *      //      -   3   ==\u003e     -3   3\n *      //     / \\              / \\\n *      //    -   2           -1   2\n *      //   / \\              / \\\n *      //  0   1            0   1\n *\n * @symb R.reduce(f, a, [b, c, d]) = f(f(f(a, b), c), d)\n */\n\nvar reduce =\n/*#__PURE__*/\n_curry3(_reduce);\n\nexport default reduce;","import _curry1 from \"./internal/_curry1.js\";\nimport curryN from \"./curryN.js\";\nimport max from \"./max.js\";\nimport pluck from \"./pluck.js\";\nimport reduce from \"./reduce.js\";\n/**\n * Takes a list of predicates and returns a predicate that returns true for a\n * given list of arguments if every one of the provided predicates is satisfied\n * by those arguments.\n *\n * The function returned is a curried function whose arity matches that of the\n * highest-arity predicate.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category Logic\n * @sig [(*... -\u003e Boolean)] -\u003e (*... -\u003e Boolean)\n * @param {Array} predicates An array of predicates to check\n * @return {Function} The combined predicate\n * @see R.anyPass\n * @example\n *\n *      const isQueen = R.propEq('rank', 'Q');\n *      const isSpade = R.propEq('suit', '♠︎');\n *      const isQueenOfSpades = R.allPass([isQueen, isSpade]);\n *\n *      isQueenOfSpades({rank: 'Q', suit: '♣︎'}); //=\u003e false\n *      isQueenOfSpades({rank: 'Q', suit: '♠︎'}); //=\u003e true\n */\n\nvar allPass =\n/*#__PURE__*/\n_curry1(function allPass(preds) {\n  return curryN(reduce(max, 0, pluck('length', preds)), function () {\n    var idx = 0;\n    var len = preds.length;\n\n    while (idx \u003c len) {\n      if (!preds[idx].apply(this, arguments)) {\n        return false;\n      }\n\n      idx += 1;\n    }\n\n    return true;\n  });\n});\n\nexport default allPass;","import _curry1 from \"./internal/_curry1.js\";\n/**\n * Returns a function that always returns the given value. Note that for\n * non-primitives the value returned is a reference to the original value.\n *\n * This function is known as `const`, `constant`, or `K` (for K combinator) in\n * other languages and libraries.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Function\n * @sig a -\u003e (* -\u003e a)\n * @param {*} val The value to wrap in a function\n * @return {Function} A Function :: * -\u003e val.\n * @example\n *\n *      const t = R.always('Tee');\n *      t(); //=\u003e 'Tee'\n */\n\nvar always =\n/*#__PURE__*/\n_curry1(function always(val) {\n  return function () {\n    return val;\n  };\n});\n\nexport default always;","import _curry2 from \"./internal/_curry2.js\";\n/**\n * Returns the first argument if it is falsy, otherwise the second argument.\n * Acts as the boolean `and` statement if both inputs are `Boolean`s.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Logic\n * @sig a -\u003e b -\u003e a | b\n * @param {Any} a\n * @param {Any} b\n * @return {Any}\n * @see R.both, R.or\n * @example\n *\n *      R.and(true, true); //=\u003e true\n *      R.and(true, false); //=\u003e false\n *      R.and(false, true); //=\u003e false\n *      R.and(false, false); //=\u003e false\n */\n\nvar and =\n/*#__PURE__*/\n_curry2(function and(a, b) {\n  return a \u0026\u0026 b;\n});\n\nexport default and;","import _curry2 from \"./_curry2.js\";\nimport _reduced from \"./_reduced.js\";\nimport _xfBase from \"./_xfBase.js\";\n\nvar XAny =\n/*#__PURE__*/\nfunction () {\n  function XAny(f, xf) {\n    this.xf = xf;\n    this.f = f;\n    this.any = false;\n  }\n\n  XAny.prototype['@@transducer/init'] = _xfBase.init;\n\n  XAny.prototype['@@transducer/result'] = function (result) {\n    if (!this.any) {\n      result = this.xf['@@transducer/step'](result, false);\n    }\n\n    return this.xf['@@transducer/result'](result);\n  };\n\n  XAny.prototype['@@transducer/step'] = function (result, input) {\n    if (this.f(input)) {\n      this.any = true;\n      result = _reduced(this.xf['@@transducer/step'](result, true));\n    }\n\n    return result;\n  };\n\n  return XAny;\n}();\n\nvar _xany =\n/*#__PURE__*/\n_curry2(function _xany(f, xf) {\n  return new XAny(f, xf);\n});\n\nexport default _xany;","import _curry2 from \"./internal/_curry2.js\";\nimport _dispatchable from \"./internal/_dispatchable.js\";\nimport _xany from \"./internal/_xany.js\";\n/**\n * Returns `true` if at least one of the elements of the list match the predicate,\n * `false` otherwise.\n *\n * Dispatches to the `any` method of the second argument, if present.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig (a -\u003e Boolean) -\u003e [a] -\u003e Boolean\n * @param {Function} fn The predicate function.\n * @param {Array} list The array to consider.\n * @return {Boolean} `true` if the predicate is satisfied by at least one element, `false`\n *         otherwise.\n * @see R.all, R.none, R.transduce\n * @example\n *\n *      const lessThan0 = R.flip(R.lt)(0);\n *      const lessThan2 = R.flip(R.lt)(2);\n *      R.any(lessThan0)([1, 2]); //=\u003e false\n *      R.any(lessThan2)([1, 2]); //=\u003e true\n */\n\nvar any =\n/*#__PURE__*/\n_curry2(\n/*#__PURE__*/\n_dispatchable(['any'], _xany, function any(fn, list) {\n  var idx = 0;\n\n  while (idx \u003c list.length) {\n    if (fn(list[idx])) {\n      return true;\n    }\n\n    idx += 1;\n  }\n\n  return false;\n}));\n\nexport default any;","import _curry1 from \"./internal/_curry1.js\";\nimport curryN from \"./curryN.js\";\nimport max from \"./max.js\";\nimport pluck from \"./pluck.js\";\nimport reduce from \"./reduce.js\";\n/**\n * Takes a list of predicates and returns a predicate that returns true for a\n * given list of arguments if at least one of the provided predicates is\n * satisfied by those arguments.\n *\n * The function returned is a curried function whose arity matches that of the\n * highest-arity predicate.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category Logic\n * @sig [(*... -\u003e Boolean)] -\u003e (*... -\u003e Boolean)\n * @param {Array} predicates An array of predicates to check\n * @return {Function} The combined predicate\n * @see R.allPass\n * @example\n *\n *      const isClub = R.propEq('suit', '♣');\n *      const isSpade = R.propEq('suit', '♠');\n *      const isBlackCard = R.anyPass([isClub, isSpade]);\n *\n *      isBlackCard({rank: '10', suit: '♣'}); //=\u003e true\n *      isBlackCard({rank: 'Q', suit: '♠'}); //=\u003e true\n *      isBlackCard({rank: 'Q', suit: '♦'}); //=\u003e false\n */\n\nvar anyPass =\n/*#__PURE__*/\n_curry1(function anyPass(preds) {\n  return curryN(reduce(max, 0, pluck('length', preds)), function () {\n    var idx = 0;\n    var len = preds.length;\n\n    while (idx \u003c len) {\n      if (preds[idx].apply(this, arguments)) {\n        return true;\n      }\n\n      idx += 1;\n    }\n\n    return false;\n  });\n});\n\nexport default anyPass;","import _concat from \"./internal/_concat.js\";\nimport _curry2 from \"./internal/_curry2.js\";\nimport _reduce from \"./internal/_reduce.js\";\nimport map from \"./map.js\";\n/**\n * ap applies a list of functions to a list of values.\n *\n * Dispatches to the `ap` method of the second argument, if present. Also\n * treats curried functions as applicatives.\n *\n * @func\n * @memberOf R\n * @since v0.3.0\n * @category Function\n * @sig [a -\u003e b] -\u003e [a] -\u003e [b]\n * @sig Apply f =\u003e f (a -\u003e b) -\u003e f a -\u003e f b\n * @sig (r -\u003e a -\u003e b) -\u003e (r -\u003e a) -\u003e (r -\u003e b)\n * @param {*} applyF\n * @param {*} applyX\n * @return {*}\n * @example\n *\n *      R.ap([R.multiply(2), R.add(3)], [1,2,3]); //=\u003e [2, 4, 6, 4, 5, 6]\n *      R.ap([R.concat('tasty '), R.toUpper], ['pizza', 'salad']); //=\u003e [\"tasty pizza\", \"tasty salad\", \"PIZZA\", \"SALAD\"]\n *\n *      // R.ap can also be used as S combinator\n *      // when only two functions are passed\n *      R.ap(R.concat, R.toUpper)('Ramda') //=\u003e 'RamdaRAMDA'\n * @symb R.ap([f, g], [a, b]) = [f(a), f(b), g(a), g(b)]\n */\n\nvar ap =\n/*#__PURE__*/\n_curry2(function ap(applyF, applyX) {\n  return typeof applyX['fantasy-land/ap'] === 'function' ? applyX['fantasy-land/ap'](applyF) : typeof applyF.ap === 'function' ? applyF.ap(applyX) : typeof applyF === 'function' ? function (x) {\n    return applyF(x)(applyX(x));\n  } : _reduce(function (acc, f) {\n    return _concat(acc, map(f, applyX));\n  }, [], applyF);\n});\n\nexport default ap;","export default function _aperture(n, list) {\n  var idx = 0;\n  var limit = list.length - (n - 1);\n  var acc = new Array(limit \u003e= 0 ? limit : 0);\n\n  while (idx \u003c limit) {\n    acc[idx] = Array.prototype.slice.call(list, idx, idx + n);\n    idx += 1;\n  }\n\n  return acc;\n}","import _concat from \"./_concat.js\";\nimport _curry2 from \"./_curry2.js\";\nimport _xfBase from \"./_xfBase.js\";\n\nvar XAperture =\n/*#__PURE__*/\nfunction () {\n  function XAperture(n, xf) {\n    this.xf = xf;\n    this.pos = 0;\n    this.full = false;\n    this.acc = new Array(n);\n  }\n\n  XAperture.prototype['@@transducer/init'] = _xfBase.init;\n\n  XAperture.prototype['@@transducer/result'] = function (result) {\n    this.acc = null;\n    return this.xf['@@transducer/result'](result);\n  };\n\n  XAperture.prototype['@@transducer/step'] = function (result, input) {\n    this.store(input);\n    return this.full ? this.xf['@@transducer/step'](result, this.getCopy()) : result;\n  };\n\n  XAperture.prototype.store = function (input) {\n    this.acc[this.pos] = input;\n    this.pos += 1;\n\n    if (this.pos === this.acc.length) {\n      this.pos = 0;\n      this.full = true;\n    }\n  };\n\n  XAperture.prototype.getCopy = function () {\n    return _concat(Array.prototype.slice.call(this.acc, this.pos), Array.prototype.slice.call(this.acc, 0, this.pos));\n  };\n\n  return XAperture;\n}();\n\nvar _xaperture =\n/*#__PURE__*/\n_curry2(function _xaperture(n, xf) {\n  return new XAperture(n, xf);\n});\n\nexport default _xaperture;","import _aperture from \"./internal/_aperture.js\";\nimport _curry2 from \"./internal/_curry2.js\";\nimport _dispatchable from \"./internal/_dispatchable.js\";\nimport _xaperture from \"./internal/_xaperture.js\";\n/**\n * Returns a new list, composed of n-tuples of consecutive elements. If `n` is\n * greater than the length of the list, an empty list is returned.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.12.0\n * @category List\n * @sig Number -\u003e [a] -\u003e [[a]]\n * @param {Number} n The size of the tuples to create\n * @param {Array} list The list to split into `n`-length tuples\n * @return {Array} The resulting list of `n`-length tuples\n * @see R.transduce\n * @example\n *\n *      R.aperture(2, [1, 2, 3, 4, 5]); //=\u003e [[1, 2], [2, 3], [3, 4], [4, 5]]\n *      R.aperture(3, [1, 2, 3, 4, 5]); //=\u003e [[1, 2, 3], [2, 3, 4], [3, 4, 5]]\n *      R.aperture(7, [1, 2, 3, 4, 5]); //=\u003e []\n */\n\nvar aperture =\n/*#__PURE__*/\n_curry2(\n/*#__PURE__*/\n_dispatchable([], _xaperture, _aperture));\n\nexport default aperture;","import _concat from \"./internal/_concat.js\";\nimport _curry2 from \"./internal/_curry2.js\";\n/**\n * Returns a new list containing the contents of the given list, followed by\n * the given element.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig a -\u003e [a] -\u003e [a]\n * @param {*} el The element to add to the end of the new list.\n * @param {Array} list The list of elements to add a new item to.\n *        list.\n * @return {Array} A new list containing the elements of the old list followed by `el`.\n * @see R.prepend\n * @example\n *\n *      R.append('tests', ['write', 'more']); //=\u003e ['write', 'more', 'tests']\n *      R.append('tests', []); //=\u003e ['tests']\n *      R.append(['tests'], ['write', 'more']); //=\u003e ['write', 'more', ['tests']]\n */\n\nvar append =\n/*#__PURE__*/\n_curry2(function append(el, list) {\n  return _concat(list, [el]);\n});\n\nexport default append;","import _curry2 from \"./internal/_curry2.js\";\n/**\n * Applies function `fn` to the argument list `args`. This is useful for\n * creating a fixed-arity function from a variadic function. `fn` should be a\n * bound function if context is significant.\n *\n * @func\n * @memberOf R\n * @since v0.7.0\n * @category Function\n * @sig (*... -\u003e a) -\u003e [*] -\u003e a\n * @param {Function} fn The function which will be called with `args`\n * @param {Array} args The arguments to call `fn` with\n * @return {*} result The result, equivalent to `fn(...args)`\n * @see R.call, R.unapply\n * @example\n *\n *      const nums = [1, 2, 3, -99, 42, 6, 7];\n *      R.apply(Math.max, nums); //=\u003e 42\n * @symb R.apply(f, [a, b, c]) = f(a, b, c)\n */\n\nvar apply =\n/*#__PURE__*/\n_curry2(function apply(fn, args) {\n  return fn.apply(this, args);\n});\n\nexport default apply;","import _curry1 from \"./internal/_curry1.js\";\nimport keys from \"./keys.js\";\n/**\n * Returns a list of all the enumerable own properties of the supplied object.\n * Note that the order of the output array is not guaranteed across different\n * JS platforms.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Object\n * @sig {k: v} -\u003e [v]\n * @param {Object} obj The object to extract values from\n * @return {Array} An array of the values of the object's own properties.\n * @see R.valuesIn, R.keys, R.toPairs\n * @example\n *\n *      R.values({a: 1, b: 2, c: 3}); //=\u003e [1, 2, 3]\n */\n\nvar values =\n/*#__PURE__*/\n_curry1(function values(obj) {\n  var props = keys(obj);\n  var len = props.length;\n  var vals = [];\n  var idx = 0;\n\n  while (idx \u003c len) {\n    vals[idx] = obj[props[idx]];\n    idx += 1;\n  }\n\n  return vals;\n});\n\nexport default values;","import _curry1 from \"./internal/_curry1.js\";\nimport _isArray from \"./internal/_isArray.js\";\nimport apply from \"./apply.js\";\nimport curryN from \"./curryN.js\";\nimport max from \"./max.js\";\nimport pluck from \"./pluck.js\";\nimport reduce from \"./reduce.js\";\nimport keys from \"./keys.js\";\nimport values from \"./values.js\"; // Use custom mapValues function to avoid issues with specs that include a \"map\" key and R.map\n// delegating calls to .map\n\nfunction mapValues(fn, obj) {\n  return _isArray(obj) ? obj.map(fn) : keys(obj).reduce(function (acc, key) {\n    acc[key] = fn(obj[key]);\n    return acc;\n  }, {});\n}\n/**\n * Given a spec object recursively mapping properties to functions, creates a\n * function producing an object of the same structure, by mapping each property\n * to the result of calling its associated function with the supplied arguments.\n *\n * @func\n * @memberOf R\n * @since v0.20.0\n * @category Function\n * @sig {k: ((a, b, ..., m) -\u003e v)} -\u003e ((a, b, ..., m) -\u003e {k: v})\n * @param {Object} spec an object recursively mapping properties to functions for\n *        producing the values for these properties.\n * @return {Function} A function that returns an object of the same structure\n * as `spec', with each property set to the value returned by calling its\n * associated function with the supplied arguments.\n * @see R.converge, R.juxt\n * @example\n *\n *      const getMetrics = R.applySpec({\n *        sum: R.add,\n *        nested: { mul: R.multiply }\n *      });\n *      getMetrics(2, 4); // =\u003e { sum: 6, nested: { mul: 8 } }\n * @symb R.applySpec({ x: f, y: { z: g } })(a, b) = { x: f(a, b), y: { z: g(a, b) } }\n */\n\n\nvar applySpec =\n/*#__PURE__*/\n_curry1(function applySpec(spec) {\n  spec = mapValues(function (v) {\n    return typeof v == 'function' ? v : applySpec(v);\n  }, spec);\n  return curryN(reduce(max, 0, pluck('length', values(spec))), function () {\n    var args = arguments;\n    return mapValues(function (f) {\n      return apply(f, args);\n    }, spec);\n  });\n});\n\nexport default applySpec;","import _curry2 from \"./internal/_curry2.js\";\n/**\n * Takes a value and applies a function to it.\n *\n * This function is also known as the `thrush` combinator.\n *\n * @func\n * @memberOf R\n * @since v0.25.0\n * @category Function\n * @sig a -\u003e (a -\u003e b) -\u003e b\n * @param {*} x The value\n * @param {Function} f The function to apply\n * @return {*} The result of applying `f` to `x`\n * @example\n *\n *      const t42 = R.applyTo(42);\n *      t42(R.identity); //=\u003e 42\n *      t42(R.add(1)); //=\u003e 43\n */\n\nvar applyTo =\n/*#__PURE__*/\n_curry2(function applyTo(x, f) {\n  return f(x);\n});\n\nexport default applyTo;","import _curry3 from \"./internal/_curry3.js\";\n/**\n * Makes an ascending comparator function out of a function that returns a value\n * that can be compared with `\u003c` and `\u003e`.\n *\n * @func\n * @memberOf R\n * @since v0.23.0\n * @category Function\n * @sig Ord b =\u003e (a -\u003e b) -\u003e a -\u003e a -\u003e Number\n * @param {Function} fn A function of arity one that returns a value that can be compared\n * @param {*} a The first item to be compared.\n * @param {*} b The second item to be compared.\n * @return {Number} `-1` if fn(a) \u003c fn(b), `1` if fn(b) \u003c fn(a), otherwise `0`\n * @see R.descend\n * @example\n *\n *      const byAge = R.ascend(R.prop('age'));\n *      const people = [\n *        { name: 'Emma', age: 70 },\n *        { name: 'Peter', age: 78 },\n *        { name: 'Mikhail', age: 62 },\n *      ];\n *      const peopleByYoungestFirst = R.sort(byAge, people);\n *        //=\u003e [{ name: 'Mikhail', age: 62 },{ name: 'Emma', age: 70 }, { name: 'Peter', age: 78 }]\n */\n\nvar ascend =\n/*#__PURE__*/\n_curry3(function ascend(fn, a, b) {\n  var aa = fn(a);\n  var bb = fn(b);\n  return aa \u003c bb ? -1 : aa \u003e bb ? 1 : 0;\n});\n\nexport default ascend;","import _isArray from \"./_isArray.js\";\nimport _isInteger from \"./_isInteger.js\";\n/**\n * Makes a shallow clone of an object, setting or overriding the specified\n * property with the given value. Note that this copies and flattens prototype\n * properties onto the new object as well. All non-primitive properties are\n * copied by reference.\n *\n * @private\n * @param {String|Number} prop The property name to set\n * @param {*} val The new value\n * @param {Object|Array} obj The object to clone\n * @return {Object|Array} A new object equivalent to the original except for the changed property.\n */\n\nexport default function _assoc(prop, val, obj) {\n  if (_isInteger(prop) \u0026\u0026 _isArray(obj)) {\n    var arr = [].concat(obj);\n    arr[prop] = val;\n    return arr;\n  }\n\n  var result = {};\n\n  for (var p in obj) {\n    result[p] = obj[p];\n  }\n\n  result[prop] = val;\n  return result;\n}","import _curry1 from \"./internal/_curry1.js\";\n/**\n * Checks if the input value is `null` or `undefined`.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category Type\n * @sig * -\u003e Boolean\n * @param {*} x The value to test.\n * @return {Boolean} `true` if `x` is `undefined` or `null`, otherwise `false`.\n * @example\n *\n *      R.isNil(null); //=\u003e true\n *      R.isNil(undefined); //=\u003e true\n *      R.isNil(0); //=\u003e false\n *      R.isNil([]); //=\u003e false\n */\n\nvar isNil =\n/*#__PURE__*/\n_curry1(function isNil(x) {\n  return x == null;\n});\n\nexport default isNil;","import _curry3 from \"./internal/_curry3.js\";\nimport _has from \"./internal/_has.js\";\nimport _isInteger from \"./internal/_isInteger.js\";\nimport _assoc from \"./internal/_assoc.js\";\nimport isNil from \"./isNil.js\";\n/**\n * Makes a shallow clone of an object, setting or overriding the nodes required\n * to create the given path, and placing the specific value at the tail end of\n * that path. Note that this copies and flattens prototype properties onto the\n * new object as well. All non-primitive properties are copied by reference.\n *\n * @func\n * @memberOf R\n * @since v0.8.0\n * @category Object\n * @typedefn Idx = String | Int | Symbol\n * @sig [Idx] -\u003e a -\u003e {a} -\u003e {a}\n * @param {Array} path the path to set\n * @param {*} val The new value\n * @param {Object} obj The object to clone\n * @return {Object} A new object equivalent to the original except along the specified path.\n * @see R.dissocPath\n * @example\n *\n *      R.assocPath(['a', 'b', 'c'], 42, {a: {b: {c: 0}}}); //=\u003e {a: {b: {c: 42}}}\n *\n *      // Any missing or non-object keys in path will be overridden\n *      R.assocPath(['a', 'b', 'c'], 42, {a: 5}); //=\u003e {a: {b: {c: 42}}}\n */\n\nvar assocPath =\n/*#__PURE__*/\n_curry3(function assocPath(path, val, obj) {\n  if (path.length === 0) {\n    return val;\n  }\n\n  var idx = path[0];\n\n  if (path.length \u003e 1) {\n    var nextObj = !isNil(obj) \u0026\u0026 _has(idx, obj) ? obj[idx] : _isInteger(path[1]) ? [] : {};\n    val = assocPath(Array.prototype.slice.call(path, 1), val, nextObj);\n  }\n\n  return _assoc(idx, val, obj);\n});\n\nexport default assocPath;","import _curry3 from \"./internal/_curry3.js\";\nimport assocPath from \"./assocPath.js\";\n/**\n * Makes a shallow clone of an object, setting or overriding the specified\n * property with the given value. Note that this copies and flattens prototype\n * properties onto the new object as well. All non-primitive properties are\n * copied by reference.\n *\n * @func\n * @memberOf R\n * @since v0.8.0\n * @category Object\n * @typedefn Idx = String | Int\n * @sig Idx -\u003e a -\u003e {k: v} -\u003e {k: v}\n * @param {String|Number} prop The property name to set\n * @param {*} val The new value\n * @param {Object} obj The object to clone\n * @return {Object} A new object equivalent to the original except for the changed property.\n * @see R.dissoc, R.pick\n * @example\n *\n *      R.assoc('c', 3, {a: 1, b: 2}); //=\u003e {a: 1, b: 2, c: 3}\n */\n\nvar assoc =\n/*#__PURE__*/\n_curry3(function assoc(prop, val, obj) {\n  return assocPath([prop], val, obj);\n});\n\nexport default assoc;","import _curry2 from \"./internal/_curry2.js\";\n/**\n * Wraps a function of any arity (including nullary) in a function that accepts\n * exactly `n` parameters. Any extraneous parameters will not be passed to the\n * supplied function.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Function\n * @sig Number -\u003e (* -\u003e a) -\u003e (* -\u003e a)\n * @param {Number} n The desired arity of the new function.\n * @param {Function} fn The function to wrap.\n * @return {Function} A new function wrapping `fn`. The new function is guaranteed to be of\n *         arity `n`.\n * @see R.binary, R.unary\n * @example\n *\n *      const takesTwoArgs = (a, b) =\u003e [a, b];\n *\n *      takesTwoArgs.length; //=\u003e 2\n *      takesTwoArgs(1, 2); //=\u003e [1, 2]\n *\n *      const takesOneArg = R.nAry(1, takesTwoArgs);\n *      takesOneArg.length; //=\u003e 1\n *      // Only `n` arguments are passed to the wrapped function\n *      takesOneArg(1, 2); //=\u003e [1, undefined]\n * @symb R.nAry(0, f)(a, b) = f()\n * @symb R.nAry(1, f)(a, b) = f(a)\n * @symb R.nAry(2, f)(a, b) = f(a, b)\n */\n\nvar nAry =\n/*#__PURE__*/\n_curry2(function nAry(n, fn) {\n  switch (n) {\n    case 0:\n      return function () {\n        return fn.call(this);\n      };\n\n    case 1:\n      return function (a0) {\n        return fn.call(this, a0);\n      };\n\n    case 2:\n      return function (a0, a1) {\n        return fn.call(this, a0, a1);\n      };\n\n    case 3:\n      return function (a0, a1, a2) {\n        return fn.call(this, a0, a1, a2);\n      };\n\n    case 4:\n      return function (a0, a1, a2, a3) {\n        return fn.call(this, a0, a1, a2, a3);\n      };\n\n    case 5:\n      return function (a0, a1, a2, a3, a4) {\n        return fn.call(this, a0, a1, a2, a3, a4);\n      };\n\n    case 6:\n      return function (a0, a1, a2, a3, a4, a5) {\n        return fn.call(this, a0, a1, a2, a3, a4, a5);\n      };\n\n    case 7:\n      return function (a0, a1, a2, a3, a4, a5, a6) {\n        return fn.call(this, a0, a1, a2, a3, a4, a5, a6);\n      };\n\n    case 8:\n      return function (a0, a1, a2, a3, a4, a5, a6, a7) {\n        return fn.call(this, a0, a1, a2, a3, a4, a5, a6, a7);\n      };\n\n    case 9:\n      return function (a0, a1, a2, a3, a4, a5, a6, a7, a8) {\n        return fn.call(this, a0, a1, a2, a3, a4, a5, a6, a7, a8);\n      };\n\n    case 10:\n      return function (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) {\n        return fn.call(this, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9);\n      };\n\n    default:\n      throw new Error('First argument to nAry must be a non-negative integer no greater than ten');\n  }\n});\n\nexport default nAry;","import _curry1 from \"./internal/_curry1.js\";\nimport nAry from \"./nAry.js\";\n/**\n * Wraps a function of any arity (including nullary) in a function that accepts\n * exactly 2 parameters. Any extraneous parameters will not be passed to the\n * supplied function.\n *\n * @func\n * @memberOf R\n * @since v0.2.0\n * @category Function\n * @sig (a -\u003e b -\u003e c -\u003e ... -\u003e z) -\u003e ((a, b) -\u003e z)\n * @param {Function} fn The function to wrap.\n * @return {Function} A new function wrapping `fn`. The new function is guaranteed to be of\n *         arity 2.\n * @see R.nAry, R.unary\n * @example\n *\n *      const takesThreeArgs = function(a, b, c) {\n *        return [a, b, c];\n *      };\n *      takesThreeArgs.length; //=\u003e 3\n *      takesThreeArgs(1, 2, 3); //=\u003e [1, 2, 3]\n *\n *      const takesTwoArgs = R.binary(takesThreeArgs);\n *      takesTwoArgs.length; //=\u003e 2\n *      // Only 2 arguments are passed to the wrapped function\n *      takesTwoArgs(1, 2, 3); //=\u003e [1, 2, undefined]\n * @symb R.binary(f)(a, b, c) = f(a, b)\n */\n\nvar binary =\n/*#__PURE__*/\n_curry1(function binary(fn) {\n  return nAry(2, fn);\n});\n\nexport default binary;","export default function _isFunction(x) {\n  var type = Object.prototype.toString.call(x);\n  return type === '[object Function]' || type === '[object AsyncFunction]' || type === '[object GeneratorFunction]' || type === '[object AsyncGeneratorFunction]';\n}","import _curry2 from \"./internal/_curry2.js\";\nimport _reduce from \"./internal/_reduce.js\";\nimport ap from \"./ap.js\";\nimport curryN from \"./curryN.js\";\nimport map from \"./map.js\";\n/**\n * \"lifts\" a function to be the specified arity, so that it may \"map over\" that\n * many lists, Functions or other objects that satisfy the [FantasyLand Apply spec](https://github.com/fantasyland/fantasy-land#apply).\n *\n * @func\n * @memberOf R\n * @since v0.7.0\n * @category Function\n * @sig Number -\u003e (*... -\u003e *) -\u003e ([*]... -\u003e [*])\n * @param {Function} fn The function to lift into higher context\n * @return {Function} The lifted function.\n * @see R.lift, R.ap\n * @example\n *\n *      const madd3 = R.liftN(3, (...args) =\u003e R.sum(args));\n *      madd3([1,2,3], [1,2,3], [1]); //=\u003e [3, 4, 5, 4, 5, 6, 5, 6, 7]\n */\n\nvar liftN =\n/*#__PURE__*/\n_curry2(function liftN(arity, fn) {\n  var lifted = curryN(arity, fn);\n  return curryN(arity, function () {\n    return _reduce(ap, map(lifted, arguments[0]), Array.prototype.slice.call(arguments, 1));\n  });\n});\n\nexport default liftN;","import _curry1 from \"./internal/_curry1.js\";\nimport liftN from \"./liftN.js\";\n/**\n * \"lifts\" a function of arity \u003e= 1 so that it may \"map over\" a list, Function or other\n * object that satisfies the [FantasyLand Apply spec](https://github.com/fantasyland/fantasy-land#apply).\n *\n * @func\n * @memberOf R\n * @since v0.7.0\n * @category Function\n * @sig (*... -\u003e *) -\u003e ([*]... -\u003e [*])\n * @param {Function} fn The function to lift into higher context\n * @return {Function} The lifted function.\n * @see R.liftN\n * @example\n *\n *      const madd3 = R.lift((a, b, c) =\u003e a + b + c);\n *\n *      madd3([100, 200], [30, 40], [5, 6, 7]); //=\u003e [135, 136, 137, 145, 146, 147, 235, 236, 237, 245, 246, 247]\n *\n *      const madd5 = R.lift((a, b, c, d, e) =\u003e a + b + c + d + e);\n *\n *      madd5([10, 20], [1], [2, 3], [4], [100, 200]); //=\u003e [117, 217, 118, 218, 127, 227, 128, 228]\n */\n\nvar lift =\n/*#__PURE__*/\n_curry1(function lift(fn) {\n  return liftN(fn.length, fn);\n});\n\nexport default lift;","import _curry2 from \"./internal/_curry2.js\";\nimport _isFunction from \"./internal/_isFunction.js\";\nimport and from \"./and.js\";\nimport lift from \"./lift.js\";\n/**\n * A function which calls the two provided functions and returns the `\u0026\u0026`\n * of the results.\n * It returns the result of the first function if it is false-y and the result\n * of the second function otherwise. Note that this is short-circuited,\n * meaning that the second function will not be invoked if the first returns a\n * false-y value.\n *\n * In addition to functions, `R.both` also accepts any fantasy-land compatible\n * applicative functor.\n *\n * @func\n * @memberOf R\n * @since v0.12.0\n * @category Logic\n * @sig (*... -\u003e Boolean) -\u003e (*... -\u003e Boolean) -\u003e (*... -\u003e Boolean)\n * @param {Function} f A predicate\n * @param {Function} g Another predicate\n * @return {Function} a function that applies its arguments to `f` and `g` and `\u0026\u0026`s their outputs together.\n * @see R.either, R.and\n * @example\n *\n *      const gt10 = R.gt(R.__, 10)\n *      const lt20 = R.lt(R.__, 20)\n *      const f = R.both(gt10, lt20);\n *      f(15); //=\u003e true\n *      f(30); //=\u003e false\n *\n *      R.both(Maybe.Just(false), Maybe.Just(55)); // =\u003e Maybe.Just(false)\n *      R.both([false, false, 'a'], [11]); //=\u003e [false, false, 11]\n */\n\nvar both =\n/*#__PURE__*/\n_curry2(function both(f, g) {\n  return _isFunction(f) ? function _both() {\n    return f.apply(this, arguments) \u0026\u0026 g.apply(this, arguments);\n  } : lift(and)(f, g);\n});\n\nexport default both;","import _curry1 from \"./internal/_curry1.js\";\n/**\n * Returns the result of calling its first argument with the remaining\n * arguments. This is occasionally useful as a converging function for\n * [`R.converge`](#converge): the first branch can produce a function while the\n * remaining branches produce values to be passed to that function as its\n * arguments.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category Function\n * @sig ((*... -\u003e a), *...) -\u003e a\n * @param {Function} fn The function to apply to the remaining arguments.\n * @param {...*} args Any number of positional arguments.\n * @return {*}\n * @see R.apply\n * @example\n *\n *      R.call(R.add, 1, 2); //=\u003e 3\n *\n *      const indentN = R.pipe(\n *        R.repeat(' '),\n *        R.join(''),\n *        R.replace(/^(?!$)/gm)\n *      );\n *\n *      const format = R.converge(\n *        R.call,\n *        [\n *          R.pipe(R.prop('indent'), indentN),\n *          R.prop('value')\n *        ]\n *      );\n *\n *      format({indent: 2, value: 'foo\\nbar\\nbaz\\n'}); //=\u003e '  foo\\n  bar\\n  baz\\n'\n * @symb R.call(f, a, b) = f(a, b)\n */\n\nvar call =\n/*#__PURE__*/\n_curry1(function call(fn) {\n  return fn.apply(this, Array.prototype.slice.call(arguments, 1));\n});\n\nexport default call;","import _isArrayLike from \"./_isArrayLike.js\";\n/**\n * `_makeFlat` is a helper function that returns a one-level or fully recursive\n * function based on the flag passed in.\n *\n * @private\n */\n\nexport default function _makeFlat(recursive) {\n  return function flatt(list) {\n    var value, jlen, j;\n    var result = [];\n    var idx = 0;\n    var ilen = list.length;\n\n    while (idx \u003c ilen) {\n      if (_isArrayLike(list[idx])) {\n        value = recursive ? flatt(list[idx]) : list[idx];\n        j = 0;\n        jlen = value.length;\n\n        while (j \u003c jlen) {\n          result[result.length] = value[j];\n          j += 1;\n        }\n      } else {\n        result[result.length] = list[idx];\n      }\n\n      idx += 1;\n    }\n\n    return result;\n  };\n}","export default function _forceReduced(x) {\n  return {\n    '@@transducer/value': x,\n    '@@transducer/reduced': true\n  };\n}","import _forceReduced from \"./_forceReduced.js\";\nimport _isArrayLike from \"./_isArrayLike.js\";\nimport _reduce from \"./_reduce.js\";\nimport _xfBase from \"./_xfBase.js\";\n\nvar preservingReduced = function (xf) {\n  return {\n    '@@transducer/init': _xfBase.init,\n    '@@transducer/result': function (result) {\n      return xf['@@transducer/result'](result);\n    },\n    '@@transducer/step': function (result, input) {\n      var ret = xf['@@transducer/step'](result, input);\n      return ret['@@transducer/reduced'] ? _forceReduced(ret) : ret;\n    }\n  };\n};\n\nvar _flatCat = function _xcat(xf) {\n  var rxf = preservingReduced(xf);\n  return {\n    '@@transducer/init': _xfBase.init,\n    '@@transducer/result': function (result) {\n      return rxf['@@transducer/result'](result);\n    },\n    '@@transducer/step': function (result, input) {\n      return !_isArrayLike(input) ? _reduce(rxf, result, [input]) : _reduce(rxf, result, input);\n    }\n  };\n};\n\nexport default _flatCat;","import _curry2 from \"./_curry2.js\";\nimport _flatCat from \"./_flatCat.js\";\nimport map from \"../map.js\";\n\nvar _xchain =\n/*#__PURE__*/\n_curry2(function _xchain(f, xf) {\n  return map(f, _flatCat(xf));\n});\n\nexport default _xchain;","import _curry2 from \"./internal/_curry2.js\";\nimport _dispatchable from \"./internal/_dispatchable.js\";\nimport _makeFlat from \"./internal/_makeFlat.js\";\nimport _xchain from \"./internal/_xchain.js\";\nimport map from \"./map.js\";\n/**\n * `chain` maps a function over a list and concatenates the results. `chain`\n * is also known as `flatMap` in some libraries.\n *\n * Dispatches to the `chain` method of the second argument, if present,\n * according to the [FantasyLand Chain spec](https://github.com/fantasyland/fantasy-land#chain).\n *\n * If second argument is a function, `chain(f, g)(x)` is equivalent to `f(g(x), x)`.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.3.0\n * @category List\n * @sig Chain m =\u003e (a -\u003e m b) -\u003e m a -\u003e m b\n * @param {Function} fn The function to map with\n * @param {Array} list The list to map over\n * @return {Array} The result of flat-mapping `list` with `fn`\n * @example\n *\n *      const duplicate = n =\u003e [n, n];\n *      R.chain(duplicate, [1, 2, 3]); //=\u003e [1, 1, 2, 2, 3, 3]\n *\n *      R.chain(R.append, R.head)([1, 2, 3]); //=\u003e [1, 2, 3, 1]\n */\n\nvar chain =\n/*#__PURE__*/\n_curry2(\n/*#__PURE__*/\n_dispatchable(['fantasy-land/chain', 'chain'], _xchain, function chain(fn, monad) {\n  if (typeof monad === 'function') {\n    return function (x) {\n      return fn(monad(x))(x);\n    };\n  }\n\n  return _makeFlat(false)(map(fn, monad));\n}));\n\nexport default chain;","import _curry3 from \"./internal/_curry3.js\";\n/**\n * Restricts a number to be within a range.\n *\n * Also works for other ordered types such as Strings and Dates.\n *\n * @func\n * @memberOf R\n * @since v0.20.0\n * @category Relation\n * @sig Ord a =\u003e a -\u003e a -\u003e a -\u003e a\n * @param {Number} minimum The lower limit of the clamp (inclusive)\n * @param {Number} maximum The upper limit of the clamp (inclusive)\n * @param {Number} value Value to be clamped\n * @return {Number} Returns `minimum` when `val \u003c minimum`, `maximum` when `val \u003e maximum`, returns `val` otherwise\n * @example\n *\n *      R.clamp(1, 10, -5) // =\u003e 1\n *      R.clamp(1, 10, 15) // =\u003e 10\n *      R.clamp(1, 10, 4)  // =\u003e 4\n */\n\nvar clamp =\n/*#__PURE__*/\n_curry3(function clamp(min, max, value) {\n  if (min \u003e max) {\n    throw new Error('min must not be greater than max in clamp(min, max, value)');\n  }\n\n  return value \u003c min ? min : value \u003e max ? max : value;\n});\n\nexport default clamp;","export default function _cloneRegExp(pattern) {\n  return new RegExp(pattern.source, (pattern.global ? 'g' : '') + (pattern.ignoreCase ? 'i' : '') + (pattern.multiline ? 'm' : '') + (pattern.sticky ? 'y' : '') + (pattern.unicode ? 'u' : ''));\n}","import _curry1 from \"./internal/_curry1.js\";\n/**\n * Gives a single-word string description of the (native) type of a value,\n * returning such answers as 'Object', 'Number', 'Array', or 'Null'. Does not\n * attempt to distinguish user Object types any further, reporting them all as\n * 'Object'.\n *\n * @func\n * @memberOf R\n * @since v0.8.0\n * @category Type\n * @sig (* -\u003e {*}) -\u003e String\n * @param {*} val The value to test\n * @return {String}\n * @example\n *\n *      R.type({}); //=\u003e \"Object\"\n *      R.type(1); //=\u003e \"Number\"\n *      R.type(false); //=\u003e \"Boolean\"\n *      R.type('s'); //=\u003e \"String\"\n *      R.type(null); //=\u003e \"Null\"\n *      R.type([]); //=\u003e \"Array\"\n *      R.type(/[A-z]/); //=\u003e \"RegExp\"\n *      R.type(() =\u003e {}); //=\u003e \"Function\"\n *      R.type(undefined); //=\u003e \"Undefined\"\n */\n\nvar type =\n/*#__PURE__*/\n_curry1(function type(val) {\n  return val === null ? 'Null' : val === undefined ? 'Undefined' : Object.prototype.toString.call(val).slice(8, -1);\n});\n\nexport default type;","import _cloneRegExp from \"./_cloneRegExp.js\";\nimport type from \"../type.js\";\n/**\n * Copies an object.\n *\n * @private\n * @param {*} value The value to be copied\n * @param {Array} refFrom Array containing the source references\n * @param {Array} refTo Array containing the copied source references\n * @param {Boolean} deep Whether or not to perform deep cloning.\n * @return {*} The copied value.\n */\n\nexport default function _clone(value, refFrom, refTo, deep) {\n  var copy = function copy(copiedValue) {\n    var len = refFrom.length;\n    var idx = 0;\n\n    while (idx \u003c len) {\n      if (value === refFrom[idx]) {\n        return refTo[idx];\n      }\n\n      idx += 1;\n    }\n\n    refFrom[idx] = value;\n    refTo[idx] = copiedValue;\n\n    for (var key in value) {\n      if (value.hasOwnProperty(key)) {\n        copiedValue[key] = deep ? _clone(value[key], refFrom, refTo, true) : value[key];\n      }\n    }\n\n    return copiedValue;\n  };\n\n  switch (type(value)) {\n    case 'Object':\n      return copy(Object.create(Object.getPrototypeOf(value)));\n\n    case 'Array':\n      return copy([]);\n\n    case 'Date':\n      return new Date(value.valueOf());\n\n    case 'RegExp':\n      return _cloneRegExp(value);\n\n    case 'Int8Array':\n    case 'Uint8Array':\n    case 'Uint8ClampedArray':\n    case 'Int16Array':\n    case 'Uint16Array':\n    case 'Int32Array':\n    case 'Uint32Array':\n    case 'Float32Array':\n    case 'Float64Array':\n    case 'BigInt64Array':\n    case 'BigUint64Array':\n      return value.slice();\n\n    default:\n      return value;\n  }\n}","import _clone from \"./internal/_clone.js\";\nimport _curry1 from \"./internal/_curry1.js\";\n/**\n * Creates a deep copy of the source that can be used in place of the source\n * object without retaining any references to it.\n * The source object may contain (nested) `Array`s and `Object`s,\n * `Number`s, `String`s, `Boolean`s and `Date`s.\n * `Function`s are assigned by reference rather than copied.\n *\n * Dispatches to a `clone` method if present.\n *\n * Note that if the source object has multiple nodes that share a reference,\n * the returned object will have the same structure, but the references will\n * be pointed to the location within the cloned value.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Object\n * @sig {*} -\u003e {*}\n * @param {*} value The object or array to clone\n * @return {*} A deeply cloned copy of `val`\n * @example\n *\n *      const objects = [{}, {}, {}];\n *      const objectsClone = R.clone(objects);\n *      objects === objectsClone; //=\u003e false\n *      objects[0] === objectsClone[0]; //=\u003e false\n */\n\nvar clone =\n/*#__PURE__*/\n_curry1(function clone(value) {\n  return value != null \u0026\u0026 typeof value.clone === 'function' ? value.clone() : _clone(value, [], [], true);\n});\n\nexport default clone;","import _curry2 from \"./internal/_curry2.js\";\nimport _reduce from \"./internal/_reduce.js\";\n/**\n * Splits a list into sub-lists, based on the result of calling a key-returning function on each element,\n * and grouping the results according to values returned.\n *\n * @func\n * @memberOf R\n * @since v0.28.0\n * @category List\n * @typedefn Idx = String | Int | Symbol\n * @sig Idx a =\u003e (b -\u003e a) -\u003e [b] -\u003e [[b]]\n * @param {Function} fn Function :: a -\u003e Idx\n * @param {Array} list The array to group\n * @return {Array}\n *    An array of arrays where each sub-array contains items for which\n *    the String-returning function has returned the same value.\n * @see R.groupBy, R.partition\n * @example\n *      R.collectBy(R.prop('type'), [\n *        {type: 'breakfast', item: '☕️'},\n *        {type: 'lunch', item: '🌯'},\n *        {type: 'dinner', item: '🍝'},\n *        {type: 'breakfast', item: '🥐'},\n *        {type: 'lunch', item: '🍕'}\n *      ]);\n *\n *      // [ [ {type: 'breakfast', item: '☕️'},\n *      //     {type: 'breakfast', item: '🥐'} ],\n *      //   [ {type: 'lunch', item: '🌯'},\n *      //     {type: 'lunch', item: '🍕'} ],\n *      //   [ {type: 'dinner', item: '🍝'} ] ]\n */\n\nvar collectBy =\n/*#__PURE__*/\n_curry2(function collectBy(fn, list) {\n  var group = _reduce(function (o, x) {\n    var tag = fn(x);\n\n    if (o[tag] === undefined) {\n      o[tag] = [];\n    }\n\n    o[tag].push(x);\n    return o;\n  }, {}, list);\n\n  var newList = [];\n\n  for (var tag in group) {\n    newList.push(group[tag]);\n  }\n\n  return newList;\n});\n\nexport default collectBy;","import _curry1 from \"./internal/_curry1.js\";\n/**\n * Makes a comparator function out of a function that reports whether the first\n * element is less than the second.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Function\n * @sig ((a, b) -\u003e Boolean) -\u003e ((a, b) -\u003e Number)\n * @param {Function} pred A predicate function of arity two which will return `true` if the first argument\n * is less than the second, `false` otherwise\n * @return {Function} A Function :: a -\u003e b -\u003e Int that returns `-1` if a \u003c b, `1` if b \u003c a, otherwise `0`\n * @example\n *\n *      const byAge = R.comparator((a, b) =\u003e a.age \u003c b.age);\n *      const people = [\n *        { name: 'Emma', age: 70 },\n *        { name: 'Peter', age: 78 },\n *        { name: 'Mikhail', age: 62 },\n *      ];\n *      const peopleByIncreasingAge = R.sort(byAge, people);\n *        //=\u003e [{ name: 'Mikhail', age: 62 },{ name: 'Emma', age: 70 }, { name: 'Peter', age: 78 }]\n */\n\nvar comparator =\n/*#__PURE__*/\n_curry1(function comparator(pred) {\n  return function (a, b) {\n    return pred(a, b) ? -1 : pred(b, a) ? 1 : 0;\n  };\n});\n\nexport default comparator;","import _curry1 from \"./internal/_curry1.js\";\n/**\n * A function that returns the `!` of its argument. It will return `true` when\n * passed false-y value, and `false` when passed a truth-y one.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Logic\n * @sig * -\u003e Boolean\n * @param {*} a any value\n * @return {Boolean} the logical inverse of passed argument.\n * @see R.complement\n * @example\n *\n *      R.not(true); //=\u003e false\n *      R.not(false); //=\u003e true\n *      R.not(0); //=\u003e true\n *      R.not(1); //=\u003e false\n */\n\nvar not =\n/*#__PURE__*/\n_curry1(function not(a) {\n  return !a;\n});\n\nexport default not;","import lift from \"./lift.js\";\nimport not from \"./not.js\";\n/**\n * Takes a function `f` and returns a function `g` such that if called with the same arguments\n * when `f` returns a \"truthy\" value, `g` returns `false` and when `f` returns a \"falsy\" value `g` returns `true`.\n *\n * `R.complement` may be applied to any functor\n *\n * @func\n * @memberOf R\n * @since v0.12.0\n * @category Logic\n * @sig (*... -\u003e *) -\u003e (*... -\u003e Boolean)\n * @param {Function} f\n * @return {Function}\n * @see R.not\n * @example\n *\n *      const isNotNil = R.complement(R.isNil);\n *      R.isNil(null); //=\u003e true\n *      isNotNil(null); //=\u003e false\n *      R.isNil(7); //=\u003e false\n *      isNotNil(7); //=\u003e true\n */\n\nvar complement =\n/*#__PURE__*/\nlift(not);\nexport default complement;","export default function _pipe(f, g) {\n  return function () {\n    return g.call(this, f.apply(this, arguments));\n  };\n}","import _isArray from \"./_isArray.js\";\n/**\n * This checks whether a function has a [methodname] function. If it isn't an\n * array it will execute that function otherwise it will default to the ramda\n * implementation.\n *\n * @private\n * @param {Function} fn ramda implementation\n * @param {String} methodname property to check for a custom implementation\n * @return {Object} Whatever the return value of the method is.\n */\n\nexport default function _checkForMethod(methodname, fn) {\n  return function () {\n    var length = arguments.length;\n\n    if (length === 0) {\n      return fn();\n    }\n\n    var obj = arguments[length - 1];\n    return _isArray(obj) || typeof obj[methodname] !== 'function' ? fn.apply(this, arguments) : obj[methodname].apply(obj, Array.prototype.slice.call(arguments, 0, length - 1));\n  };\n}","import _checkForMethod from \"./internal/_checkForMethod.js\";\nimport _curry3 from \"./internal/_curry3.js\";\n/**\n * Returns the elements of the given list or string (or object with a `slice`\n * method) from `fromIndex` (inclusive) to `toIndex` (exclusive).\n *\n * Dispatches to the `slice` method of the third argument, if present.\n *\n * @func\n * @memberOf R\n * @since v0.1.4\n * @category List\n * @sig Number -\u003e Number -\u003e [a] -\u003e [a]\n * @sig Number -\u003e Number -\u003e String -\u003e String\n * @param {Number} fromIndex The start index (inclusive).\n * @param {Number} toIndex The end index (exclusive).\n * @param {*} list\n * @return {*}\n * @example\n *\n *      R.slice(1, 3, ['a', 'b', 'c', 'd']);        //=\u003e ['b', 'c']\n *      R.slice(1, Infinity, ['a', 'b', 'c', 'd']); //=\u003e ['b', 'c', 'd']\n *      R.slice(0, -1, ['a', 'b', 'c', 'd']);       //=\u003e ['a', 'b', 'c']\n *      R.slice(-3, -1, ['a', 'b', 'c', 'd']);      //=\u003e ['b', 'c']\n *      R.slice(0, 3, 'ramda');                     //=\u003e 'ram'\n */\n\nvar slice =\n/*#__PURE__*/\n_curry3(\n/*#__PURE__*/\n_checkForMethod('slice', function slice(fromIndex, toIndex, list) {\n  return Array.prototype.slice.call(list, fromIndex, toIndex);\n}));\n\nexport default slice;","import _checkForMethod from \"./internal/_checkForMethod.js\";\nimport _curry1 from \"./internal/_curry1.js\";\nimport slice from \"./slice.js\";\n/**\n * Returns all but the first element of the given list or string (or object\n * with a `tail` method).\n *\n * Dispatches to the `slice` method of the first argument, if present.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig [a] -\u003e [a]\n * @sig String -\u003e String\n * @param {*} list\n * @return {*}\n * @see R.head, R.init, R.last\n * @example\n *\n *      R.tail([1, 2, 3]);  //=\u003e [2, 3]\n *      R.tail([1, 2]);     //=\u003e [2]\n *      R.tail([1]);        //=\u003e []\n *      R.tail([]);         //=\u003e []\n *\n *      R.tail('abc');  //=\u003e 'bc'\n *      R.tail('ab');   //=\u003e 'b'\n *      R.tail('a');    //=\u003e ''\n *      R.tail('');     //=\u003e ''\n */\n\nvar tail =\n/*#__PURE__*/\n_curry1(\n/*#__PURE__*/\n_checkForMethod('tail',\n/*#__PURE__*/\nslice(1, Infinity)));\n\nexport default tail;","import _arity from \"./internal/_arity.js\";\nimport _pipe from \"./internal/_pipe.js\";\nimport reduce from \"./reduce.js\";\nimport tail from \"./tail.js\";\n/**\n * Performs left-to-right function composition. The first argument may have\n * any arity; the remaining arguments must be unary.\n *\n * In some libraries this function is named `sequence`.\n *\n * **Note:** The result of pipe is not automatically curried.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Function\n * @sig (((a, b, ..., n) -\u003e o), (o -\u003e p), ..., (x -\u003e y), (y -\u003e z)) -\u003e ((a, b, ..., n) -\u003e z)\n * @param {...Function} functions\n * @return {Function}\n * @see R.compose\n * @example\n *\n *      const f = R.pipe(Math.pow, R.negate, R.inc);\n *\n *      f(3, 4); // -(3^4) + 1\n * @symb R.pipe(f, g, h)(a, b) = h(g(f(a, b)))\n * @symb R.pipe(f, g, h)(a)(b) = h(g(f(a)))(b)\n */\n\nexport default function pipe() {\n  if (arguments.length === 0) {\n    throw new Error('pipe requires at least one argument');\n  }\n\n  return _arity(arguments[0].length, reduce(_pipe, arguments[0], tail(arguments)));\n}","import _curry1 from \"./internal/_curry1.js\";\nimport _isString from \"./internal/_isString.js\";\n/**\n * Returns a new list or string with the elements or characters in reverse\n * order.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig [a] -\u003e [a]\n * @sig String -\u003e String\n * @param {Array|String} list\n * @return {Array|String}\n * @example\n *\n *      R.reverse([1, 2, 3]);  //=\u003e [3, 2, 1]\n *      R.reverse([1, 2]);     //=\u003e [2, 1]\n *      R.reverse([1]);        //=\u003e [1]\n *      R.reverse([]);         //=\u003e []\n *\n *      R.reverse('abc');      //=\u003e 'cba'\n *      R.reverse('ab');       //=\u003e 'ba'\n *      R.reverse('a');        //=\u003e 'a'\n *      R.reverse('');         //=\u003e ''\n */\n\nvar reverse =\n/*#__PURE__*/\n_curry1(function reverse(list) {\n  return _isString(list) ? list.split('').reverse().join('') : Array.prototype.slice.call(list, 0).reverse();\n});\n\nexport default reverse;","import pipe from \"./pipe.js\";\nimport reverse from \"./reverse.js\";\n/**\n * Performs right-to-left function composition. The last argument may have\n * any arity; the remaining arguments must be unary.\n *\n * **Note:** The result of compose is not automatically curried.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Function\n * @sig ((y -\u003e z), (x -\u003e y), ..., (o -\u003e p), ((a, b, ..., n) -\u003e o)) -\u003e ((a, b, ..., n) -\u003e z)\n * @param {...Function} ...functions The functions to compose\n * @return {Function}\n * @see R.pipe\n * @example\n *\n *      const classyGreeting = (firstName, lastName) =\u003e \"The name's \" + lastName + \", \" + firstName + \" \" + lastName\n *      const yellGreeting = R.compose(R.toUpper, classyGreeting);\n *      yellGreeting('James', 'Bond'); //=\u003e \"THE NAME'S BOND, JAMES BOND\"\n *\n *      R.compose(Math.abs, R.add(1), R.multiply(2))(-4) //=\u003e 7\n *\n * @symb R.compose(f, g, h)(a, b) = f(g(h(a, b)))\n * @symb R.compose(f, g, h)(a)(b) = f(g(h(a)))(b)\n */\n\nexport default function compose() {\n  if (arguments.length === 0) {\n    throw new Error('compose requires at least one argument');\n  }\n\n  return pipe.apply(this, reverse(arguments));\n}","import nth from \"./nth.js\";\n/**\n * Returns the first element of the given list or string. In some libraries\n * this function is named `first`.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig [a] -\u003e a | Undefined\n * @sig String -\u003e String\n * @param {Array|String} list\n * @return {*}\n * @see R.tail, R.init, R.last\n * @example\n *\n *      R.head(['fi', 'fo', 'fum']); //=\u003e 'fi'\n *      R.head([]); //=\u003e undefined\n *\n *      R.head('abc'); //=\u003e 'a'\n *      R.head(''); //=\u003e ''\n */\n\nvar head =\n/*#__PURE__*/\nnth(0);\nexport default head;","export default function _identity(x) {\n  return x;\n}","import _curry1 from \"./internal/_curry1.js\";\nimport _identity from \"./internal/_identity.js\";\n/**\n * A function that does nothing but return the parameter supplied to it. Good\n * as a default or placeholder function.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Function\n * @sig a -\u003e a\n * @param {*} x The value to return.\n * @return {*} The input value, `x`.\n * @example\n *\n *      R.identity(1); //=\u003e 1\n *\n *      const obj = {};\n *      R.identity(obj) === obj; //=\u003e true\n * @symb R.identity(a) = a\n */\n\nvar identity =\n/*#__PURE__*/\n_curry1(_identity);\n\nexport default identity;","import _arity from \"./internal/_arity.js\";\nimport _curry2 from \"./internal/_curry2.js\";\nimport head from \"./head.js\";\nimport _reduce from \"./internal/_reduce.js\";\nimport tail from \"./tail.js\";\nimport identity from \"./identity.js\";\n/**\n * Performs left-to-right function composition using transforming function. The first function may have\n * any arity; the remaining functions must be unary.\n *\n * **Note:** The result of pipeWith is not automatically curried. Transforming function is not used on the\n * first argument.\n *\n * @func\n * @memberOf R\n * @since v0.26.0\n * @category Function\n * @sig ((* -\u003e *), [((a, b, ..., n) -\u003e o), (o -\u003e p), ..., (x -\u003e y), (y -\u003e z)]) -\u003e ((a, b, ..., n) -\u003e z)\n * @param {Function} transformer The transforming function\n * @param {Array} functions The functions to pipe\n * @return {Function}\n * @see R.composeWith, R.pipe\n * @example\n *\n *      const pipeWhileNotNil = R.pipeWith((f, res) =\u003e R.isNil(res) ? res : f(res));\n *      const f = pipeWhileNotNil([Math.pow, R.negate, R.inc])\n *\n *      f(3, 4); // -(3^4) + 1\n * @symb R.pipeWith(f)([g, h, i])(...args) = f(i, f(h, g(...args)))\n */\n\nvar pipeWith =\n/*#__PURE__*/\n_curry2(function pipeWith(xf, list) {\n  if (list.length \u003c= 0) {\n    return identity;\n  }\n\n  var headList = head(list);\n  var tailList = tail(list);\n  return _arity(headList.length, function () {\n    return _reduce(function (result, f) {\n      return xf.call(this, f, result);\n    }, headList.apply(this, arguments), tailList);\n  });\n});\n\nexport default pipeWith;","import _curry2 from \"./internal/_curry2.js\";\nimport pipeWith from \"./pipeWith.js\";\nimport reverse from \"./reverse.js\";\n/**\n * Performs right-to-left function composition using transforming function. The last function may have\n * any arity; the remaining functions must be unary.\n *\n * **Note:** The result of composeWith is not automatically curried. Transforming function is not used\n * on the last argument.\n *\n * @func\n * @memberOf R\n * @since v0.26.0\n * @category Function\n * @sig ((* -\u003e *), [(y -\u003e z), (x -\u003e y), ..., (o -\u003e p), ((a, b, ..., n) -\u003e o)]) -\u003e ((a, b, ..., n) -\u003e z)\n * @param {Function} transformer The transforming function\n * @param {Array} functions The functions to compose\n * @return {Function}\n * @see R.compose, R.pipeWith\n * @example\n *\n *      const composeWhileNotNil = R.composeWith((f, res) =\u003e R.isNil(res) ? res : f(res));\n *\n *      composeWhileNotNil([R.inc, R.prop('age')])({age: 1}) //=\u003e 2\n *      composeWhileNotNil([R.inc, R.prop('age')])({}) //=\u003e undefined\n *\n * @symb R.composeWith(f)([g, h, i])(...args) = f(g, f(h, i(...args)))\n */\n\nvar composeWith =\n/*#__PURE__*/\n_curry2(function composeWith(xf, list) {\n  return pipeWith.apply(this, [xf, reverse(list)]);\n});\n\nexport default composeWith;","export default function _arrayFromIterator(iter) {\n  var list = [];\n  var next;\n\n  while (!(next = iter.next()).done) {\n    list.push(next.value);\n  }\n\n  return list;\n}","export default function _includesWith(pred, x, list) {\n  var idx = 0;\n  var len = list.length;\n\n  while (idx \u003c len) {\n    if (pred(x, list[idx])) {\n      return true;\n    }\n\n    idx += 1;\n  }\n\n  return false;\n}","export default function _functionName(f) {\n  // String(x =\u003e x) evaluates to \"x =\u003e x\", so the pattern may not match.\n  var match = String(f).match(/^function (\\w*)/);\n  return match == null ? '' : match[1];\n}","// Based on https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\nfunction _objectIs(a, b) {\n  // SameValue algorithm\n  if (a === b) {\n    // Steps 1-5, 7-10\n    // Steps 6.b-6.e: +0 != -0\n    return a !== 0 || 1 / a === 1 / b;\n  } else {\n    // Step 6.a: NaN == NaN\n    return a !== a \u0026\u0026 b !== b;\n  }\n}\n\nexport default typeof Object.is === 'function' ? Object.is : _objectIs;","import _arrayFromIterator from \"./_arrayFromIterator.js\";\nimport _includesWith from \"./_includesWith.js\";\nimport _functionName from \"./_functionName.js\";\nimport _has from \"./_has.js\";\nimport _objectIs from \"./_objectIs.js\";\nimport keys from \"../keys.js\";\nimport type from \"../type.js\";\n/**\n * private _uniqContentEquals function.\n * That function is checking equality of 2 iterator contents with 2 assumptions\n * - iterators lengths are the same\n * - iterators values are unique\n *\n * false-positive result will be returned for comparison of, e.g.\n * - [1,2,3] and [1,2,3,4]\n * - [1,1,1] and [1,2,3]\n * */\n\nfunction _uniqContentEquals(aIterator, bIterator, stackA, stackB) {\n  var a = _arrayFromIterator(aIterator);\n\n  var b = _arrayFromIterator(bIterator);\n\n  function eq(_a, _b) {\n    return _equals(_a, _b, stackA.slice(), stackB.slice());\n  } // if *a* array contains any element that is not included in *b*\n\n\n  return !_includesWith(function (b, aItem) {\n    return !_includesWith(eq, aItem, b);\n  }, b, a);\n}\n\nexport default function _equals(a, b, stackA, stackB) {\n  if (_objectIs(a, b)) {\n    return true;\n  }\n\n  var typeA = type(a);\n\n  if (typeA !== type(b)) {\n    return false;\n  }\n\n  if (typeof a['fantasy-land/equals'] === 'function' || typeof b['fantasy-land/equals'] === 'function') {\n    return typeof a['fantasy-land/equals'] === 'function' \u0026\u0026 a['fantasy-land/equals'](b) \u0026\u0026 typeof b['fantasy-land/equals'] === 'function' \u0026\u0026 b['fantasy-land/equals'](a);\n  }\n\n  if (typeof a.equals === 'function' || typeof b.equals === 'function') {\n    return typeof a.equals === 'function' \u0026\u0026 a.equals(b) \u0026\u0026 typeof b.equals === 'function' \u0026\u0026 b.equals(a);\n  }\n\n  switch (typeA) {\n    case 'Arguments':\n    case 'Array':\n    case 'Object':\n      if (typeof a.constructor === 'function' \u0026\u0026 _functionName(a.constructor) === 'Promise') {\n        return a === b;\n      }\n\n      break;\n\n    case 'Boolean':\n    case 'Number':\n    case 'String':\n      if (!(typeof a === typeof b \u0026\u0026 _objectIs(a.valueOf(), b.valueOf()))) {\n        return false;\n      }\n\n      break;\n\n    case 'Date':\n      if (!_objectIs(a.valueOf(), b.valueOf())) {\n        return false;\n      }\n\n      break;\n\n    case 'Error':\n      return a.name === b.name \u0026\u0026 a.message === b.message;\n\n    case 'RegExp':\n      if (!(a.source === b.source \u0026\u0026 a.global === b.global \u0026\u0026 a.ignoreCase === b.ignoreCase \u0026\u0026 a.multiline === b.multiline \u0026\u0026 a.sticky === b.sticky \u0026\u0026 a.unicode === b.unicode)) {\n        return false;\n      }\n\n      break;\n  }\n\n  var idx = stackA.length - 1;\n\n  while (idx \u003e= 0) {\n    if (stackA[idx] === a) {\n      return stackB[idx] === b;\n    }\n\n    idx -= 1;\n  }\n\n  switch (typeA) {\n    case 'Map':\n      if (a.size !== b.size) {\n        return false;\n      }\n\n      return _uniqContentEquals(a.entries(), b.entries(), stackA.concat([a]), stackB.concat([b]));\n\n    case 'Set':\n      if (a.size !== b.size) {\n        return false;\n      }\n\n      return _uniqContentEquals(a.values(), b.values(), stackA.concat([a]), stackB.concat([b]));\n\n    case 'Arguments':\n    case 'Array':\n    case 'Object':\n    case 'Boolean':\n    case 'Number':\n    case 'String':\n    case 'Date':\n    case 'Error':\n    case 'RegExp':\n    case 'Int8Array':\n    case 'Uint8Array':\n    case 'Uint8ClampedArray':\n    case 'Int16Array':\n    case 'Uint16Array':\n    case 'Int32Array':\n    case 'Uint32Array':\n    case 'Float32Array':\n    case 'Float64Array':\n    case 'ArrayBuffer':\n      break;\n\n    default:\n      // Values of other types are only equal if identical.\n      return false;\n  }\n\n  var keysA = keys(a);\n\n  if (keysA.length !== keys(b).length) {\n    return false;\n  }\n\n  var extendedStackA = stackA.concat([a]);\n  var extendedStackB = stackB.concat([b]);\n  idx = keysA.length - 1;\n\n  while (idx \u003e= 0) {\n    var key = keysA[idx];\n\n    if (!(_has(key, b) \u0026\u0026 _equals(b[key], a[key], extendedStackA, extendedStackB))) {\n      return false;\n    }\n\n    idx -= 1;\n  }\n\n  return true;\n}","import _curry2 from \"./internal/_curry2.js\";\nimport _equals from \"./internal/_equals.js\";\n/**\n * Returns `true` if its arguments are equivalent, `false` otherwise. Handles\n * cyclical data structures.\n *\n * Dispatches symmetrically to the `equals` methods of both arguments, if\n * present.\n *\n * @func\n * @memberOf R\n * @since v0.15.0\n * @category Relation\n * @sig a -\u003e b -\u003e Boolean\n * @param {*} a\n * @param {*} b\n * @return {Boolean}\n * @example\n *\n *      R.equals(1, 1); //=\u003e true\n *      R.equals(1, '1'); //=\u003e false\n *      R.equals([1, 2, 3], [1, 2, 3]); //=\u003e true\n *\n *      const a = {}; a.v = a;\n *      const b = {}; b.v = b;\n *      R.equals(a, b); //=\u003e true\n */\n\nvar equals =\n/*#__PURE__*/\n_curry2(function equals(a, b) {\n  return _equals(a, b, [], []);\n});\n\nexport default equals;","import equals from \"../equals.js\";\nexport default function _indexOf(list, a, idx) {\n  var inf, item; // Array.prototype.indexOf doesn't exist below IE9\n\n  if (typeof list.indexOf === 'function') {\n    switch (typeof a) {\n      case 'number':\n        if (a === 0) {\n          // manually crawl the list to distinguish between +0 and -0\n          inf = 1 / a;\n\n          while (idx \u003c list.length) {\n            item = list[idx];\n\n            if (item === 0 \u0026\u0026 1 / item === inf) {\n              return idx;\n            }\n\n            idx += 1;\n          }\n\n          return -1;\n        } else if (a !== a) {\n          // NaN\n          while (idx \u003c list.length) {\n            item = list[idx];\n\n            if (typeof item === 'number' \u0026\u0026 item !== item) {\n              return idx;\n            }\n\n            idx += 1;\n          }\n\n          return -1;\n        } // non-zero numbers can utilise Set\n\n\n        return list.indexOf(a, idx);\n      // all these types can utilise Set\n\n      case 'string':\n      case 'boolean':\n      case 'function':\n      case 'undefined':\n        return list.indexOf(a, idx);\n\n      case 'object':\n        if (a === null) {\n          // null can utilise Set\n          return list.indexOf(a, idx);\n        }\n\n    }\n  } // anything else not covered above, defer to R.equals\n\n\n  while (idx \u003c list.length) {\n    if (equals(list[idx], a)) {\n      return idx;\n    }\n\n    idx += 1;\n  }\n\n  return -1;\n}","import _indexOf from \"./_indexOf.js\";\nexport default function _includes(a, list) {\n  return _indexOf(list, a, 0) \u003e= 0;\n}","export default function _quote(s) {\n  var escaped = s.replace(/\\\\/g, '\\\\\\\\').replace(/[\\b]/g, '\\\\b') // \\b matches word boundary; [\\b] matches backspace\n  .replace(/\\f/g, '\\\\f').replace(/\\n/g, '\\\\n').replace(/\\r/g, '\\\\r').replace(/\\t/g, '\\\\t').replace(/\\v/g, '\\\\v').replace(/\\0/g, '\\\\0');\n  return '\"' + escaped.replace(/\"/g, '\\\\\"') + '\"';\n}","/**\n * Polyfill from \u003chttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString\u003e.\n */\nvar pad = function pad(n) {\n  return (n \u003c 10 ? '0' : '') + n;\n};\n\nvar _toISOString = typeof Date.prototype.toISOString === 'function' ? function _toISOString(d) {\n  return d.toISOString();\n} : function _toISOString(d) {\n  return d.getUTCFullYear() + '-' + pad(d.getUTCMonth() + 1) + '-' + pad(d.getUTCDate()) + 'T' + pad(d.getUTCHours()) + ':' + pad(d.getUTCMinutes()) + ':' + pad(d.getUTCSeconds()) + '.' + (d.getUTCMilliseconds() / 1000).toFixed(3).slice(2, 5) + 'Z';\n};\n\nexport default _toISOString;","export default function _complement(f) {\n  return function () {\n    return !f.apply(this, arguments);\n  };\n}","export default function _filter(fn, list) {\n  var idx = 0;\n  var len = list.length;\n  var result = [];\n\n  while (idx \u003c len) {\n    if (fn(list[idx])) {\n      result[result.length] = list[idx];\n    }\n\n    idx += 1;\n  }\n\n  return result;\n}","export default function _isObject(x) {\n  return Object.prototype.toString.call(x) === '[object Object]';\n}","import _curry2 from \"./_curry2.js\";\nimport _xfBase from \"./_xfBase.js\";\n\nvar XFilter =\n/*#__PURE__*/\nfunction () {\n  function XFilter(f, xf) {\n    this.xf = xf;\n    this.f = f;\n  }\n\n  XFilter.prototype['@@transducer/init'] = _xfBase.init;\n  XFilter.prototype['@@transducer/result'] = _xfBase.result;\n\n  XFilter.prototype['@@transducer/step'] = function (result, input) {\n    return this.f(input) ? this.xf['@@transducer/step'](result, input) : result;\n  };\n\n  return XFilter;\n}();\n\nvar _xfilter =\n/*#__PURE__*/\n_curry2(function _xfilter(f, xf) {\n  return new XFilter(f, xf);\n});\n\nexport default _xfilter;","import _curry2 from \"./internal/_curry2.js\";\nimport _dispatchable from \"./internal/_dispatchable.js\";\nimport _filter from \"./internal/_filter.js\";\nimport _isObject from \"./internal/_isObject.js\";\nimport _reduce from \"./internal/_reduce.js\";\nimport _xfilter from \"./internal/_xfilter.js\";\nimport keys from \"./keys.js\";\n/**\n * Takes a predicate and a `Filterable`, and returns a new filterable of the\n * same type containing the members of the given filterable which satisfy the\n * given predicate. Filterable objects include plain objects or any object\n * that has a filter method such as `Array`.\n *\n * Dispatches to the `filter` method of the second argument, if present.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig Filterable f =\u003e (a -\u003e Boolean) -\u003e f a -\u003e f a\n * @param {Function} pred\n * @param {Array} filterable\n * @return {Array} Filterable\n * @see R.reject, R.transduce, R.addIndex\n * @example\n *\n *      const isEven = n =\u003e n % 2 === 0;\n *\n *      R.filter(isEven, [1, 2, 3, 4]); //=\u003e [2, 4]\n *\n *      R.filter(isEven, {a: 1, b: 2, c: 3, d: 4}); //=\u003e {b: 2, d: 4}\n */\n\nvar filter =\n/*#__PURE__*/\n_curry2(\n/*#__PURE__*/\n_dispatchable(['fantasy-land/filter', 'filter'], _xfilter, function (pred, filterable) {\n  return _isObject(filterable) ? _reduce(function (acc, key) {\n    if (pred(filterable[key])) {\n      acc[key] = filterable[key];\n    }\n\n    return acc;\n  }, {}, keys(filterable)) : // else\n  _filter(pred, filterable);\n}));\n\nexport default filter;","import _complement from \"./internal/_complement.js\";\nimport _curry2 from \"./internal/_curry2.js\";\nimport filter from \"./filter.js\";\n/**\n * The complement of [`filter`](#filter).\n *\n * Acts as a transducer if a transformer is given in list position. Filterable\n * objects include plain objects or any object that has a filter method such\n * as `Array`.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig Filterable f =\u003e (a -\u003e Boolean) -\u003e f a -\u003e f a\n * @param {Function} pred\n * @param {Array} filterable\n * @return {Array}\n * @see R.filter, R.transduce, R.addIndex\n * @example\n *\n *      const isOdd = (n) =\u003e n % 2 !== 0;\n *\n *      R.reject(isOdd, [1, 2, 3, 4]); //=\u003e [2, 4]\n *\n *      R.reject(isOdd, {a: 1, b: 2, c: 3, d: 4}); //=\u003e {b: 2, d: 4}\n */\n\nvar reject =\n/*#__PURE__*/\n_curry2(function reject(pred, filterable) {\n  return filter(_complement(pred), filterable);\n});\n\nexport default reject;","import _includes from \"./_includes.js\";\nimport _map from \"./_map.js\";\nimport _quote from \"./_quote.js\";\nimport _toISOString from \"./_toISOString.js\";\nimport keys from \"../keys.js\";\nimport reject from \"../reject.js\";\nexport default function _toString(x, seen) {\n  var recur = function recur(y) {\n    var xs = seen.concat([x]);\n    return _includes(y, xs) ? '\u003cCircular\u003e' : _toString(y, xs);\n  }; //  mapPairs :: (Object, [String]) -\u003e [String]\n\n\n  var mapPairs = function (obj, keys) {\n    return _map(function (k) {\n      return _quote(k) + ': ' + recur(obj[k]);\n    }, keys.slice().sort());\n  };\n\n  switch (Object.prototype.toString.call(x)) {\n    case '[object Arguments]':\n      return '(function() { return arguments; }(' + _map(recur, x).join(', ') + '))';\n\n    case '[object Array]':\n      return '[' + _map(recur, x).concat(mapPairs(x, reject(function (k) {\n        return /^\\d+$/.test(k);\n      }, keys(x)))).join(', ') + ']';\n\n    case '[object Boolean]':\n      return typeof x === 'object' ? 'new Boolean(' + recur(x.valueOf()) + ')' : x.toString();\n\n    case '[object Date]':\n      return 'new Date(' + (isNaN(x.valueOf()) ? recur(NaN) : _quote(_toISOString(x))) + ')';\n\n    case '[object Null]':\n      return 'null';\n\n    case '[object Number]':\n      return typeof x === 'object' ? 'new Number(' + recur(x.valueOf()) + ')' : 1 / x === -Infinity ? '-0' : x.toString(10);\n\n    case '[object String]':\n      return typeof x === 'object' ? 'new String(' + recur(x.valueOf()) + ')' : _quote(x);\n\n    case '[object Undefined]':\n      return 'undefined';\n\n    default:\n      if (typeof x.toString === 'function') {\n        var repr = x.toString();\n\n        if (repr !== '[object Object]') {\n          return repr;\n        }\n      }\n\n      return '{' + mapPairs(x, keys(x)).join(', ') + '}';\n  }\n}","import _curry1 from \"./internal/_curry1.js\";\nimport _toString from \"./internal/_toString.js\";\n/**\n * Returns the string representation of the given value. `eval`'ing the output\n * should result in a value equivalent to the input value. Many of the built-in\n * `toString` methods do not satisfy this requirement.\n *\n * If the given value is an `[object Object]` with a `toString` method other\n * than `Object.prototype.toString`, this method is invoked with no arguments\n * to produce the return value. This means user-defined constructor functions\n * can provide a suitable `toString` method. For example:\n *\n *     function Point(x, y) {\n *       this.x = x;\n *       this.y = y;\n *     }\n *\n *     Point.prototype.toString = function() {\n *       return 'new Point(' + this.x + ', ' + this.y + ')';\n *     };\n *\n *     R.toString(new Point(1, 2)); //=\u003e 'new Point(1, 2)'\n *\n * @func\n * @memberOf R\n * @since v0.14.0\n * @category String\n * @sig * -\u003e String\n * @param {*} val\n * @return {String}\n * @example\n *\n *      R.toString(42); //=\u003e '42'\n *      R.toString('abc'); //=\u003e '\"abc\"'\n *      R.toString([1, 2, 3]); //=\u003e '[1, 2, 3]'\n *      R.toString({foo: 1, bar: 2, baz: 3}); //=\u003e '{\"bar\": 2, \"baz\": 3, \"foo\": 1}'\n *      R.toString(new Date('2001-02-03T04:05:06Z')); //=\u003e 'new Date(\"2001-02-03T04:05:06.000Z\")'\n */\n\nvar toString =\n/*#__PURE__*/\n_curry1(function toString(val) {\n  return _toString(val, []);\n});\n\nexport default toString;","import _curry2 from \"./internal/_curry2.js\";\nimport _isArray from \"./internal/_isArray.js\";\nimport _isFunction from \"./internal/_isFunction.js\";\nimport _isString from \"./internal/_isString.js\";\nimport toString from \"./toString.js\";\n/**\n * Returns the result of concatenating the given lists or strings.\n *\n * Note: `R.concat` expects both arguments to be of the same type,\n * unlike the native `Array.prototype.concat` method. It will throw\n * an error if you `concat` an Array with a non-Array value.\n *\n * Dispatches to the `concat` method of the first argument, if present.\n * Can also concatenate two members of a [fantasy-land\n * compatible semigroup](https://github.com/fantasyland/fantasy-land#semigroup).\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig [a] -\u003e [a] -\u003e [a]\n * @sig String -\u003e String -\u003e String\n * @param {Array|String} firstList The first list\n * @param {Array|String} secondList The second list\n * @return {Array|String} A list consisting of the elements of `firstList` followed by the elements of\n * `secondList`.\n *\n * @example\n *\n *      R.concat('ABC', 'DEF'); // 'ABCDEF'\n *      R.concat([4, 5, 6], [1, 2, 3]); //=\u003e [4, 5, 6, 1, 2, 3]\n *      R.concat([], []); //=\u003e []\n */\n\nvar concat =\n/*#__PURE__*/\n_curry2(function concat(a, b) {\n  if (_isArray(a)) {\n    if (_isArray(b)) {\n      return a.concat(b);\n    }\n\n    throw new TypeError(toString(b) + ' is not an array');\n  }\n\n  if (_isString(a)) {\n    if (_isString(b)) {\n      return a + b;\n    }\n\n    throw new TypeError(toString(b) + ' is not a string');\n  }\n\n  if (a != null \u0026\u0026 _isFunction(a['fantasy-land/concat'])) {\n    return a['fantasy-land/concat'](b);\n  }\n\n  if (a != null \u0026\u0026 _isFunction(a.concat)) {\n    return a.concat(b);\n  }\n\n  throw new TypeError(toString(a) + ' does not have a method named \"concat\" or \"fantasy-land/concat\"');\n});\n\nexport default concat;","import _arity from \"./internal/_arity.js\";\nimport _curry1 from \"./internal/_curry1.js\";\nimport map from \"./map.js\";\nimport max from \"./max.js\";\nimport reduce from \"./reduce.js\";\n/**\n * Returns a function, `fn`, which encapsulates `if/else, if/else, ...` logic.\n * `R.cond` takes a list of [predicate, transformer] pairs. All of the arguments\n * to `fn` are applied to each of the predicates in turn until one returns a\n * \"truthy\" value, at which point `fn` returns the result of applying its\n * arguments to the corresponding transformer. If none of the predicates\n * matches, `fn` returns undefined.\n *\n * **Please note**: This is not a direct substitute for a `switch` statement.\n * Remember that both elements of every pair passed to `cond` are *functions*,\n * and `cond` returns a function.\n *\n * @func\n * @memberOf R\n * @since v0.6.0\n * @category Logic\n * @sig [[(*... -\u003e Boolean),(*... -\u003e *)]] -\u003e (*... -\u003e *)\n * @param {Array} pairs A list of [predicate, transformer]\n * @return {Function}\n * @see R.ifElse, R.unless, R.when\n * @example\n *\n *      const fn = R.cond([\n *        [R.equals(0),   R.always('water freezes at 0°C')],\n *        [R.equals(100), R.always('water boils at 100°C')],\n *        [R.T,           temp =\u003e 'nothing special happens at ' + temp + '°C']\n *      ]);\n *      fn(0); //=\u003e 'water freezes at 0°C'\n *      fn(50); //=\u003e 'nothing special happens at 50°C'\n *      fn(100); //=\u003e 'water boils at 100°C'\n */\n\nvar cond =\n/*#__PURE__*/\n_curry1(function cond(pairs) {\n  var arity = reduce(max, 0, map(function (pair) {\n    return pair[0].length;\n  }, pairs));\n  return _arity(arity, function () {\n    var idx = 0;\n\n    while (idx \u003c pairs.length) {\n      if (pairs[idx][0].apply(this, arguments)) {\n        return pairs[idx][1].apply(this, arguments);\n      }\n\n      idx += 1;\n    }\n  });\n});\n\nexport default cond;","import _curry1 from \"./internal/_curry1.js\";\nimport curryN from \"./curryN.js\";\n/**\n * Returns a curried equivalent of the provided function. The curried function\n * has two unusual capabilities. First, its arguments needn't be provided one\n * at a time. If `f` is a ternary function and `g` is `R.curry(f)`, the\n * following are equivalent:\n *\n *   - `g(1)(2)(3)`\n *   - `g(1)(2, 3)`\n *   - `g(1, 2)(3)`\n *   - `g(1, 2, 3)`\n *\n * Secondly, the special placeholder value [`R.__`](#__) may be used to specify\n * \"gaps\", allowing partial application of any combination of arguments,\n * regardless of their positions. If `g` is as above and `_` is [`R.__`](#__),\n * the following are equivalent:\n *\n *   - `g(1, 2, 3)`\n *   - `g(_, 2, 3)(1)`\n *   - `g(_, _, 3)(1)(2)`\n *   - `g(_, _, 3)(1, 2)`\n *   - `g(_, 2)(1)(3)`\n *   - `g(_, 2)(1, 3)`\n *   - `g(_, 2)(_, 3)(1)`\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Function\n * @sig (* -\u003e a) -\u003e (* -\u003e a)\n * @param {Function} fn The function to curry.\n * @return {Function} A new, curried function.\n * @see R.curryN, R.partial\n * @example\n *\n *      const addFourNumbers = (a, b, c, d) =\u003e a + b + c + d;\n *\n *      const curriedAddFourNumbers = R.curry(addFourNumbers);\n *      const f = curriedAddFourNumbers(1, 2);\n *      const g = f(3);\n *      g(4); //=\u003e 10\n */\n\nvar curry =\n/*#__PURE__*/\n_curry1(function curry(fn) {\n  return curryN(fn.length, fn);\n});\n\nexport default curry;","import _curry2 from \"./internal/_curry2.js\";\nimport curry from \"./curry.js\";\nimport nAry from \"./nAry.js\";\n/**\n * Wraps a constructor function inside a curried function that can be called\n * with the same arguments and returns the same type. The arity of the function\n * returned is specified to allow using variadic constructor functions.\n *\n * @func\n * @memberOf R\n * @since v0.4.0\n * @category Function\n * @sig Number -\u003e (* -\u003e {*}) -\u003e (* -\u003e {*})\n * @param {Number} n The arity of the constructor function.\n * @param {Function} Fn The constructor function to wrap.\n * @return {Function} A wrapped, curried constructor function.\n * @example\n *\n *      // Variadic Constructor function\n *      function Salad() {\n *        this.ingredients = arguments;\n *      }\n *\n *      Salad.prototype.recipe = function() {\n *        const instructions = R.map(ingredient =\u003e 'Add a dollop of ' + ingredient, this.ingredients);\n *        return R.join('\\n', instructions);\n *      };\n *\n *      const ThreeLayerSalad = R.constructN(3, Salad);\n *\n *      // Notice we no longer need the 'new' keyword, and the constructor is curried for 3 arguments.\n *      const salad = ThreeLayerSalad('Mayonnaise')('Potato Chips')('Ketchup');\n *\n *      console.log(salad.recipe());\n *      // Add a dollop of Mayonnaise\n *      // Add a dollop of Potato Chips\n *      // Add a dollop of Ketchup\n */\n\nvar constructN =\n/*#__PURE__*/\n_curry2(function constructN(n, Fn) {\n  if (n \u003e 10) {\n    throw new Error('Constructor with greater than ten arguments');\n  }\n\n  if (n === 0) {\n    return function () {\n      return new Fn();\n    };\n  }\n\n  return curry(nAry(n, function ($0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {\n    switch (arguments.length) {\n      case 1:\n        return new Fn($0);\n\n      case 2:\n        return new Fn($0, $1);\n\n      case 3:\n        return new Fn($0, $1, $2);\n\n      case 4:\n        return new Fn($0, $1, $2, $3);\n\n      case 5:\n        return new Fn($0, $1, $2, $3, $4);\n\n      case 6:\n        return new Fn($0, $1, $2, $3, $4, $5);\n\n      case 7:\n        return new Fn($0, $1, $2, $3, $4, $5, $6);\n\n      case 8:\n        return new Fn($0, $1, $2, $3, $4, $5, $6, $7);\n\n      case 9:\n        return new Fn($0, $1, $2, $3, $4, $5, $6, $7, $8);\n\n      case 10:\n        return new Fn($0, $1, $2, $3, $4, $5, $6, $7, $8, $9);\n    }\n  }));\n});\n\nexport default constructN;","import _curry1 from \"./internal/_curry1.js\";\nimport constructN from \"./constructN.js\";\n/**\n * Wraps a constructor function inside a curried function that can be called\n * with the same arguments and returns the same type.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Function\n * @sig (* -\u003e {*}) -\u003e (* -\u003e {*})\n * @param {Function} fn The constructor function to wrap.\n * @return {Function} A wrapped, curried constructor function.\n * @see R.invoker\n * @example\n *\n *      // Constructor function\n *      function Animal(kind) {\n *        this.kind = kind;\n *      };\n *      Animal.prototype.sighting = function() {\n *        return \"It's a \" + this.kind + \"!\";\n *      }\n *\n *      const AnimalConstructor = R.construct(Animal)\n *\n *      // Notice we no longer need the 'new' keyword:\n *      AnimalConstructor('Pig'); //=\u003e {\"kind\": \"Pig\", \"sighting\": function (){...}};\n *\n *      const animalTypes = [\"Lion\", \"Tiger\", \"Bear\"];\n *      const animalSighting = R.invoker(0, 'sighting');\n *      const sightNewAnimal = R.compose(animalSighting, AnimalConstructor);\n *      R.map(sightNewAnimal, animalTypes); //=\u003e [\"It's a Lion!\", \"It's a Tiger!\", \"It's a Bear!\"]\n */\n\nvar construct =\n/*#__PURE__*/\n_curry1(function construct(Fn) {\n  return constructN(Fn.length, Fn);\n});\n\nexport default construct;","import _curry2 from \"./internal/_curry2.js\";\nimport _map from \"./internal/_map.js\";\nimport curryN from \"./curryN.js\";\nimport max from \"./max.js\";\nimport pluck from \"./pluck.js\";\nimport reduce from \"./reduce.js\";\n/**\n * Accepts a converging function and a list of branching functions and returns\n * a new function. The arity of the new function is the same as the arity of\n * the longest branching function. When invoked, this new function is applied\n * to some arguments, and each branching function is applied to those same\n * arguments. The results of each branching function are passed as arguments\n * to the converging function to produce the return value.\n *\n * @func\n * @memberOf R\n * @since v0.4.2\n * @category Function\n * @sig ((x1, x2, ...) -\u003e z) -\u003e [((a, b, ...) -\u003e x1), ((a, b, ...) -\u003e x2), ...] -\u003e (a -\u003e b -\u003e ... -\u003e z)\n * @param {Function} after A function. `after` will be invoked with the return values of\n *        `fn1` and `fn2` as its arguments.\n * @param {Array} functions A list of functions.\n * @return {Function} A new function.\n * @see R.useWith\n * @example\n *\n *      const average = R.converge(R.divide, [R.sum, R.length])\n *      average([1, 2, 3, 4, 5, 6, 7]) //=\u003e 4\n *\n *      const strangeConcat = R.converge(R.concat, [R.toUpper, R.toLower])\n *      strangeConcat(\"Yodel\") //=\u003e \"YODELyodel\"\n *\n * @symb R.converge(f, [g, h])(a, b) = f(g(a, b), h(a, b))\n */\n\nvar converge =\n/*#__PURE__*/\n_curry2(function converge(after, fns) {\n  return curryN(reduce(max, 0, pluck('length', fns)), function () {\n    var args = arguments;\n    var context = this;\n    return after.apply(context, _map(function (fn) {\n      return fn.apply(context, args);\n    }, fns));\n  });\n});\n\nexport default converge;","import _reduce from \"./internal/_reduce.js\";\nimport curry from \"./curry.js\";\n/**\n * Returns the number of items in a given `list` matching the predicate `f`\n *\n * @func\n * @memberOf R\n * @since v0.28.0\n * @category List\n * @sig (a -\u003e Boolean) -\u003e [a] -\u003e Number\n * @param {Function} predicate to match items against\n * @return {Array} list of items to count in\n * @example\n *\n *      const even = x =\u003e x % 2 == 0;\n *\n *      R.count(even, [1, 2, 3, 4, 5]); // =\u003e 2\n *      R.map(R.count(even), [[1, 1, 1], [2, 3, 4, 5], [6]]); // =\u003e [0, 2, 1]\n */\n\nvar count =\n/*#__PURE__*/\ncurry(function (pred, list) {\n  return _reduce(function (a, e) {\n    return pred(e) ? a + 1 : a;\n  }, 0, list);\n});\nexport default count;","import _curryN from \"./_curryN.js\";\nimport _has from \"./_has.js\";\nimport _xfBase from \"./_xfBase.js\";\n\nvar XReduceBy =\n/*#__PURE__*/\nfunction () {\n  function XReduceBy(valueFn, valueAcc, keyFn, xf) {\n    this.valueFn = valueFn;\n    this.valueAcc = valueAcc;\n    this.keyFn = keyFn;\n    this.xf = xf;\n    this.inputs = {};\n  }\n\n  XReduceBy.prototype['@@transducer/init'] = _xfBase.init;\n\n  XReduceBy.prototype['@@transducer/result'] = function (result) {\n    var key;\n\n    for (key in this.inputs) {\n      if (_has(key, this.inputs)) {\n        result = this.xf['@@transducer/step'](result, this.inputs[key]);\n\n        if (result['@@transducer/reduced']) {\n          result = result['@@transducer/value'];\n          break;\n        }\n      }\n    }\n\n    this.inputs = null;\n    return this.xf['@@transducer/result'](result);\n  };\n\n  XReduceBy.prototype['@@transducer/step'] = function (result, input) {\n    var key = this.keyFn(input);\n    this.inputs[key] = this.inputs[key] || [key, this.valueAcc];\n    this.inputs[key][1] = this.valueFn(this.inputs[key][1], input);\n    return result;\n  };\n\n  return XReduceBy;\n}();\n\nvar _xreduceBy =\n/*#__PURE__*/\n_curryN(4, [], function _xreduceBy(valueFn, valueAcc, keyFn, xf) {\n  return new XReduceBy(valueFn, valueAcc, keyFn, xf);\n});\n\nexport default _xreduceBy;","import _clone from \"./internal/_clone.js\";\nimport _curryN from \"./internal/_curryN.js\";\nimport _dispatchable from \"./internal/_dispatchable.js\";\nimport _has from \"./internal/_has.js\";\nimport _reduce from \"./internal/_reduce.js\";\nimport _reduced from \"./internal/_reduced.js\";\nimport _xreduceBy from \"./internal/_xreduceBy.js\";\n/**\n * Groups the elements of the list according to the result of calling\n * the String-returning function `keyFn` on each element and reduces the elements\n * of each group to a single value via the reducer function `valueFn`.\n *\n * The value function receives two values: *(acc, value)*. It may use\n * [`R.reduced`](#reduced) to short circuit the iteration.\n *\n * This function is basically a more general [`groupBy`](#groupBy) function.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.20.0\n * @category List\n * @sig ((a, b) -\u003e a) -\u003e a -\u003e (b -\u003e String) -\u003e [b] -\u003e {String: a}\n * @param {Function} valueFn The function that reduces the elements of each group to a single\n *        value. Receives two values, accumulator for a particular group and the current element.\n * @param {*} acc The (initial) accumulator value for each group.\n * @param {Function} keyFn The function that maps the list's element into a key.\n * @param {Array} list The array to group.\n * @return {Object} An object with the output of `keyFn` for keys, mapped to the output of\n *         `valueFn` for elements which produced that key when passed to `keyFn`.\n * @see R.groupBy, R.reduce, R.reduced\n * @example\n *\n *      const groupNames = (acc, {name}) =\u003e acc.concat(name)\n *      const toGrade = ({score}) =\u003e\n *        score \u003c 65 ? 'F' :\n *        score \u003c 70 ? 'D' :\n *        score \u003c 80 ? 'C' :\n *        score \u003c 90 ? 'B' : 'A'\n *\n *      var students = [\n *        {name: 'Abby', score: 83},\n *        {name: 'Bart', score: 62},\n *        {name: 'Curt', score: 88},\n *        {name: 'Dora', score: 92},\n *      ]\n *\n *      reduceBy(groupNames, [], toGrade, students)\n *      //=\u003e {\"A\": [\"Dora\"], \"B\": [\"Abby\", \"Curt\"], \"F\": [\"Bart\"]}\n */\n\nvar reduceBy =\n/*#__PURE__*/\n_curryN(4, [],\n/*#__PURE__*/\n_dispatchable([], _xreduceBy, function reduceBy(valueFn, valueAcc, keyFn, list) {\n  return _reduce(function (acc, elt) {\n    var key = keyFn(elt);\n    var value = valueFn(_has(key, acc) ? acc[key] : _clone(valueAcc, [], [], false), elt);\n\n    if (value \u0026\u0026 value['@@transducer/reduced']) {\n      return _reduced(acc);\n    }\n\n    acc[key] = value;\n    return acc;\n  }, {}, list);\n}));\n\nexport default reduceBy;","import reduceBy from \"./reduceBy.js\";\n/**\n * Counts the elements of a list according to how many match each value of a\n * key generated by the supplied function. Returns an object mapping the keys\n * produced by `fn` to the number of occurrences in the list. Note that all\n * keys are coerced to strings because of how JavaScript objects work.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Relation\n * @sig (a -\u003e String) -\u003e [a] -\u003e {*}\n * @param {Function} fn The function used to map values to keys.\n * @param {Array} list The list to count elements from.\n * @return {Object} An object mapping keys to number of occurrences in the list.\n * @example\n *\n *      const numbers = [1.0, 1.1, 1.2, 2.0, 3.0, 2.2];\n *      R.countBy(Math.floor)(numbers);    //=\u003e {'1': 3, '2': 2, '3': 1}\n *\n *      const letters = ['a', 'b', 'A', 'a', 'B', 'c'];\n *      R.countBy(R.toLower)(letters);   //=\u003e {'a': 3, 'b': 2, 'c': 1}\n */\n\nvar countBy =\n/*#__PURE__*/\nreduceBy(function (acc, elem) {\n  return acc + 1;\n}, 0);\nexport default countBy;","import add from \"./add.js\";\n/**\n * Decrements its argument.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category Math\n * @sig Number -\u003e Number\n * @param {Number} n\n * @return {Number} n - 1\n * @see R.inc\n * @example\n *\n *      R.dec(42); //=\u003e 41\n */\n\nvar dec =\n/*#__PURE__*/\nadd(-1);\nexport default dec;","import _curry2 from \"./internal/_curry2.js\";\n/**\n * Returns the second argument if it is not `null`, `undefined` or `NaN`;\n * otherwise the first argument is returned.\n *\n * @func\n * @memberOf R\n * @since v0.10.0\n * @category Logic\n * @sig a -\u003e b -\u003e a | b\n * @param {a} default The default value.\n * @param {b} val `val` will be returned instead of `default` unless `val` is `null`, `undefined` or `NaN`.\n * @return {*} The second value if it is not `null`, `undefined` or `NaN`, otherwise the default value\n * @example\n *\n *      const defaultTo42 = R.defaultTo(42);\n *\n *      defaultTo42(null);  //=\u003e 42\n *      defaultTo42(undefined);  //=\u003e 42\n *      defaultTo42(false);  //=\u003e false\n *      defaultTo42('Ramda');  //=\u003e 'Ramda'\n *      // parseInt('string') results in NaN\n *      defaultTo42(parseInt('string')); //=\u003e 42\n */\n\nvar defaultTo =\n/*#__PURE__*/\n_curry2(function defaultTo(d, v) {\n  return v == null || v !== v ? d : v;\n});\n\nexport default defaultTo;","import _curry3 from \"./internal/_curry3.js\";\n/**\n * Makes a descending comparator function out of a function that returns a value\n * that can be compared with `\u003c` and `\u003e`.\n *\n * @func\n * @memberOf R\n * @since v0.23.0\n * @category Function\n * @sig Ord b =\u003e (a -\u003e b) -\u003e a -\u003e a -\u003e Number\n * @param {Function} fn A function of arity one that returns a value that can be compared\n * @param {*} a The first item to be compared.\n * @param {*} b The second item to be compared.\n * @return {Number} `-1` if fn(a) \u003e fn(b), `1` if fn(b) \u003e fn(a), otherwise `0`\n * @see R.ascend\n * @example\n *\n *      const byAge = R.descend(R.prop('age'));\n *      const people = [\n *        { name: 'Emma', age: 70 },\n *        { name: 'Peter', age: 78 },\n *        { name: 'Mikhail', age: 62 },\n *      ];\n *      const peopleByOldestFirst = R.sort(byAge, people);\n *        //=\u003e [{ name: 'Peter', age: 78 }, { name: 'Emma', age: 70 }, { name: 'Mikhail', age: 62 }]\n */\n\nvar descend =\n/*#__PURE__*/\n_curry3(function descend(fn, a, b) {\n  var aa = fn(a);\n  var bb = fn(b);\n  return aa \u003e bb ? -1 : aa \u003c bb ? 1 : 0;\n});\n\nexport default descend;","import _includes from \"./_includes.js\";\n\nvar _Set =\n/*#__PURE__*/\nfunction () {\n  function _Set() {\n    /* globals Set */\n    this._nativeSet = typeof Set === 'function' ? new Set() : null;\n    this._items = {};\n  }\n\n  // until we figure out why jsdoc chokes on this\n  // @param item The item to add to the Set\n  // @returns {boolean} true if the item did not exist prior, otherwise false\n  //\n  _Set.prototype.add = function (item) {\n    return !hasOrAdd(item, true, this);\n  }; //\n  // @param item The item to check for existence in the Set\n  // @returns {boolean} true if the item exists in the Set, otherwise false\n  //\n\n\n  _Set.prototype.has = function (item) {\n    return hasOrAdd(item, false, this);\n  }; //\n  // Combines the logic for checking whether an item is a member of the set and\n  // for adding a new item to the set.\n  //\n  // @param item       The item to check or add to the Set instance.\n  // @param shouldAdd  If true, the item will be added to the set if it doesn't\n  //                   already exist.\n  // @param set        The set instance to check or add to.\n  // @return {boolean} true if the item already existed, otherwise false.\n  //\n\n\n  return _Set;\n}();\n\nfunction hasOrAdd(item, shouldAdd, set) {\n  var type = typeof item;\n  var prevSize, newSize;\n\n  switch (type) {\n    case 'string':\n    case 'number':\n      // distinguish between +0 and -0\n      if (item === 0 \u0026\u0026 1 / item === -Infinity) {\n        if (set._items['-0']) {\n          return true;\n        } else {\n          if (shouldAdd) {\n            set._items['-0'] = true;\n          }\n\n          return false;\n        }\n      } // these types can all utilise the native Set\n\n\n      if (set._nativeSet !== null) {\n        if (shouldAdd) {\n          prevSize = set._nativeSet.size;\n\n          set._nativeSet.add(item);\n\n          newSize = set._nativeSet.size;\n          return newSize === prevSize;\n        } else {\n          return set._nativeSet.has(item);\n        }\n      } else {\n        if (!(type in set._items)) {\n          if (shouldAdd) {\n            set._items[type] = {};\n            set._items[type][item] = true;\n          }\n\n          return false;\n        } else if (item in set._items[type]) {\n          return true;\n        } else {\n          if (shouldAdd) {\n            set._items[type][item] = true;\n          }\n\n          return false;\n        }\n      }\n\n    case 'boolean':\n      // set._items['boolean'] holds a two element array\n      // representing [ falseExists, trueExists ]\n      if (type in set._items) {\n        var bIdx = item ? 1 : 0;\n\n        if (set._items[type][bIdx]) {\n          return true;\n        } else {\n          if (shouldAdd) {\n            set._items[type][bIdx] = true;\n          }\n\n          return false;\n        }\n      } else {\n        if (shouldAdd) {\n          set._items[type] = item ? [false, true] : [true, false];\n        }\n\n        return false;\n      }\n\n    case 'function':\n      // compare functions for reference equality\n      if (set._nativeSet !== null) {\n        if (shouldAdd) {\n          prevSize = set._nativeSet.size;\n\n          set._nativeSet.add(item);\n\n          newSize = set._nativeSet.size;\n          return newSize === prevSize;\n        } else {\n          return set._nativeSet.has(item);\n        }\n      } else {\n        if (!(type in set._items)) {\n          if (shouldAdd) {\n            set._items[type] = [item];\n          }\n\n          return false;\n        }\n\n        if (!_includes(item, set._items[type])) {\n          if (shouldAdd) {\n            set._items[type].push(item);\n          }\n\n          return false;\n        }\n\n        return true;\n      }\n\n    case 'undefined':\n      if (set._items[type]) {\n        return true;\n      } else {\n        if (shouldAdd) {\n          set._items[type] = true;\n        }\n\n        return false;\n      }\n\n    case 'object':\n      if (item === null) {\n        if (!set._items['null']) {\n          if (shouldAdd) {\n            set._items['null'] = true;\n          }\n\n          return false;\n        }\n\n        return true;\n      }\n\n    /* falls through */\n\n    default:\n      // reduce the search size of heterogeneous sets by creating buckets\n      // for each type.\n      type = Object.prototype.toString.call(item);\n\n      if (!(type in set._items)) {\n        if (shouldAdd) {\n          set._items[type] = [item];\n        }\n\n        return false;\n      } // scan through all previously applied items\n\n\n      if (!_includes(item, set._items[type])) {\n        if (shouldAdd) {\n          set._items[type].push(item);\n        }\n\n        return false;\n      }\n\n      return true;\n  }\n} // A simple Set type that honours R.equals semantics\n\n\nexport default _Set;","import _curry2 from \"./internal/_curry2.js\";\nimport _Set from \"./internal/_Set.js\";\n/**\n * Finds the set (i.e. no duplicates) of all elements in the first list not\n * contained in the second list. Objects and Arrays are compared in terms of\n * value equality, not reference equality.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Relation\n * @sig [*] -\u003e [*] -\u003e [*]\n * @param {Array} list1 The first list.\n * @param {Array} list2 The second list.\n * @return {Array} The elements in `list1` that are not in `list2`.\n * @see R.differenceWith, R.symmetricDifference, R.symmetricDifferenceWith, R.without\n * @example\n *\n *      R.difference([1,2,3,4], [7,6,5,4,3]); //=\u003e [1,2]\n *      R.difference([7,6,5,4,3], [1,2,3,4]); //=\u003e [7,6,5]\n *      R.difference([{a: 1}, {b: 2}], [{a: 1}, {c: 3}]) //=\u003e [{b: 2}]\n */\n\nvar difference =\n/*#__PURE__*/\n_curry2(function difference(first, second) {\n  var out = [];\n  var idx = 0;\n  var firstLen = first.length;\n  var secondLen = second.length;\n  var toFilterOut = new _Set();\n\n  for (var i = 0; i \u003c secondLen; i += 1) {\n    toFilterOut.add(second[i]);\n  }\n\n  while (idx \u003c firstLen) {\n    if (toFilterOut.add(first[idx])) {\n      out[out.length] = first[idx];\n    }\n\n    idx += 1;\n  }\n\n  return out;\n});\n\nexport default difference;","import _includesWith from \"./internal/_includesWith.js\";\nimport _curry3 from \"./internal/_curry3.js\";\n/**\n * Finds the set (i.e. no duplicates) of all elements in the first list not\n * contained in the second list. Duplication is determined according to the\n * value returned by applying the supplied predicate to two list elements.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Relation\n * @sig ((a, a) -\u003e Boolean) -\u003e [a] -\u003e [a] -\u003e [a]\n * @param {Function} pred A predicate used to test whether two items are equal.\n * @param {Array} list1 The first list.\n * @param {Array} list2 The second list.\n * @return {Array} The elements in `list1` that are not in `list2`.\n * @see R.difference, R.symmetricDifference, R.symmetricDifferenceWith\n * @example\n *\n *      const cmp = (x, y) =\u003e x.a === y.a;\n *      const l1 = [{a: 1}, {a: 2}, {a: 3}];\n *      const l2 = [{a: 3}, {a: 4}];\n *      R.differenceWith(cmp, l1, l2); //=\u003e [{a: 1}, {a: 2}]\n */\n\nvar differenceWith =\n/*#__PURE__*/\n_curry3(function differenceWith(pred, first, second) {\n  var out = [];\n  var idx = 0;\n  var firstLen = first.length;\n\n  while (idx \u003c firstLen) {\n    if (!_includesWith(pred, first[idx], second) \u0026\u0026 !_includesWith(pred, first[idx], out)) {\n      out.push(first[idx]);\n    }\n\n    idx += 1;\n  }\n\n  return out;\n});\n\nexport default differenceWith;","import _curry3 from \"./internal/_curry3.js\";\n/**\n * Removes the sub-list of `list` starting at index `start` and containing\n * `count` elements. _Note that this is not destructive_: it returns a copy of\n * the list with the changes.\n * \u003csmall\u003eNo lists have been harmed in the application of this function.\u003c/small\u003e\n *\n * @func\n * @memberOf R\n * @since v0.2.2\n * @category List\n * @sig Number -\u003e Number -\u003e [a] -\u003e [a]\n * @param {Number} start The position to start removing elements\n * @param {Number} count The number of elements to remove\n * @param {Array} list The list to remove from\n * @return {Array} A new Array with `count` elements from `start` removed.\n * @see R.without\n * @example\n *\n *      R.remove(2, 3, [1,2,3,4,5,6,7,8]); //=\u003e [1,2,6,7,8]\n */\n\nvar remove =\n/*#__PURE__*/\n_curry3(function remove(start, count, list) {\n  var result = Array.prototype.slice.call(list, 0);\n  result.splice(start, count);\n  return result;\n});\n\nexport default remove;","import _isInteger from \"./_isInteger.js\";\nimport _isArray from \"./_isArray.js\";\nimport remove from \"../remove.js\";\n/**\n * Returns a new object that does not contain a `prop` property.\n *\n * @private\n * @param {String|Number} prop The name of the property to dissociate\n * @param {Object|Array} obj The object to clone\n * @return {Object} A new object equivalent to the original but without the specified property\n */\n\nexport default function _dissoc(prop, obj) {\n  if (obj == null) {\n    return obj;\n  }\n\n  if (_isInteger(prop) \u0026\u0026 _isArray(obj)) {\n    return remove(prop, 1, obj);\n  }\n\n  var result = {};\n\n  for (var p in obj) {\n    result[p] = obj[p];\n  }\n\n  delete result[prop];\n  return result;\n}","import _curry2 from \"./internal/_curry2.js\";\nimport _dissoc from \"./internal/_dissoc.js\";\nimport _isInteger from \"./internal/_isInteger.js\";\nimport _isArray from \"./internal/_isArray.js\";\nimport assoc from \"./assoc.js\";\n/**\n * Makes a shallow clone of an object. Note that this copies and flattens\n * prototype properties onto the new object as well. All non-primitive\n * properties are copied by reference.\n *\n * @private\n * @param {String|Integer} prop The prop operating\n * @param {Object|Array} obj The object to clone\n * @return {Object|Array} A new object equivalent to the original.\n */\n\nfunction _shallowCloneObject(prop, obj) {\n  if (_isInteger(prop) \u0026\u0026 _isArray(obj)) {\n    return [].concat(obj);\n  }\n\n  var result = {};\n\n  for (var p in obj) {\n    result[p] = obj[p];\n  }\n\n  return result;\n}\n/**\n * Makes a shallow clone of an object, omitting the property at the given path.\n * Note that this copies and flattens prototype properties onto the new object\n * as well. All non-primitive properties are copied by reference.\n *\n * @func\n * @memberOf R\n * @since v0.11.0\n * @category Object\n * @typedefn Idx = String | Int | Symbol\n * @sig [Idx] -\u003e {k: v} -\u003e {k: v}\n * @param {Array} path The path to the value to omit\n * @param {Object} obj The object to clone\n * @return {Object} A new object without the property at path\n * @see R.assocPath\n * @example\n *\n *      R.dissocPath(['a', 'b', 'c'], {a: {b: {c: 42}}}); //=\u003e {a: {b: {}}}\n */\n\n\nvar dissocPath =\n/*#__PURE__*/\n_curry2(function dissocPath(path, obj) {\n  if (obj == null) {\n    return obj;\n  }\n\n  switch (path.length) {\n    case 0:\n      return obj;\n\n    case 1:\n      return _dissoc(path[0], obj);\n\n    default:\n      var head = path[0];\n      var tail = Array.prototype.slice.call(path, 1);\n\n      if (obj[head] == null) {\n        return _shallowCloneObject(head, obj);\n      } else {\n        return assoc(head, dissocPath(tail, obj[head]), obj);\n      }\n\n  }\n});\n\nexport default dissocPath;","import _curry2 from \"./internal/_curry2.js\";\nimport dissocPath from \"./dissocPath.js\";\n/**\n * Returns a new object that does not contain a `prop` property.\n *\n * @func\n * @memberOf R\n * @since v0.10.0\n * @category Object\n * @sig String -\u003e {k: v} -\u003e {k: v}\n * @param {String} prop The name of the property to dissociate\n * @param {Object} obj The object to clone\n * @return {Object} A new object equivalent to the original but without the specified property\n * @see R.assoc, R.omit\n * @example\n *\n *      R.dissoc('b', {a: 1, b: 2, c: 3}); //=\u003e {a: 1, c: 3}\n */\n\nvar dissoc =\n/*#__PURE__*/\n_curry2(function dissoc(prop, obj) {\n  return dissocPath([prop], obj);\n});\n\nexport default dissoc;","import _curry2 from \"./internal/_curry2.js\";\n/**\n * Divides two numbers. Equivalent to `a / b`.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Math\n * @sig Number -\u003e Number -\u003e Number\n * @param {Number} a The first value.\n * @param {Number} b The second value.\n * @return {Number} The result of `a / b`.\n * @see R.multiply\n * @example\n *\n *      R.divide(71, 100); //=\u003e 0.71\n *\n *      const half = R.divide(R.__, 2);\n *      half(42); //=\u003e 21\n *\n *      const reciprocal = R.divide(1);\n *      reciprocal(4);   //=\u003e 0.25\n */\n\nvar divide =\n/*#__PURE__*/\n_curry2(function divide(a, b) {\n  return a / b;\n});\n\nexport default divide;","import _curry2 from \"./_curry2.js\";\nimport _xfBase from \"./_xfBase.js\";\n\nvar XDrop =\n/*#__PURE__*/\nfunction () {\n  function XDrop(n, xf) {\n    this.xf = xf;\n    this.n = n;\n  }\n\n  XDrop.prototype['@@transducer/init'] = _xfBase.init;\n  XDrop.prototype['@@transducer/result'] = _xfBase.result;\n\n  XDrop.prototype['@@transducer/step'] = function (result, input) {\n    if (this.n \u003e 0) {\n      this.n -= 1;\n      return result;\n    }\n\n    return this.xf['@@transducer/step'](result, input);\n  };\n\n  return XDrop;\n}();\n\nvar _xdrop =\n/*#__PURE__*/\n_curry2(function _xdrop(n, xf) {\n  return new XDrop(n, xf);\n});\n\nexport default _xdrop;","import _curry2 from \"./internal/_curry2.js\";\nimport _dispatchable from \"./internal/_dispatchable.js\";\nimport _xdrop from \"./internal/_xdrop.js\";\nimport slice from \"./slice.js\";\n/**\n * Returns all but the first `n` elements of the given list, string, or\n * transducer/transformer (or object with a `drop` method).\n *\n * Dispatches to the `drop` method of the second argument, if present.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig Number -\u003e [a] -\u003e [a]\n * @sig Number -\u003e String -\u003e String\n * @param {Number} n\n * @param {*} list\n * @return {*} A copy of list without the first `n` elements\n * @see R.take, R.transduce, R.dropLast, R.dropWhile\n * @example\n *\n *      R.drop(1, ['foo', 'bar', 'baz']); //=\u003e ['bar', 'baz']\n *      R.drop(2, ['foo', 'bar', 'baz']); //=\u003e ['baz']\n *      R.drop(3, ['foo', 'bar', 'baz']); //=\u003e []\n *      R.drop(4, ['foo', 'bar', 'baz']); //=\u003e []\n *      R.drop(3, 'ramda');               //=\u003e 'da'\n */\n\nvar drop =\n/*#__PURE__*/\n_curry2(\n/*#__PURE__*/\n_dispatchable(['drop'], _xdrop, function drop(n, xs) {\n  return slice(Math.max(0, n), Infinity, xs);\n}));\n\nexport default drop;","import _curry2 from \"./_curry2.js\";\nimport _reduced from \"./_reduced.js\";\nimport _xfBase from \"./_xfBase.js\";\n\nvar XTake =\n/*#__PURE__*/\nfunction () {\n  function XTake(n, xf) {\n    this.xf = xf;\n    this.n = n;\n    this.i = 0;\n  }\n\n  XTake.prototype['@@transducer/init'] = _xfBase.init;\n  XTake.prototype['@@transducer/result'] = _xfBase.result;\n\n  XTake.prototype['@@transducer/step'] = function (result, input) {\n    this.i += 1;\n    var ret = this.n === 0 ? result : this.xf['@@transducer/step'](result, input);\n    return this.n \u003e= 0 \u0026\u0026 this.i \u003e= this.n ? _reduced(ret) : ret;\n  };\n\n  return XTake;\n}();\n\nvar _xtake =\n/*#__PURE__*/\n_curry2(function _xtake(n, xf) {\n  return new XTake(n, xf);\n});\n\nexport default _xtake;","import _curry2 from \"./internal/_curry2.js\";\nimport _dispatchable from \"./internal/_dispatchable.js\";\nimport _xtake from \"./internal/_xtake.js\";\nimport slice from \"./slice.js\";\n/**\n * Returns the first `n` elements of the given list, string, or\n * transducer/transformer (or object with a `take` method).\n *\n * Dispatches to the `take` method of the second argument, if present.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig Number -\u003e [a] -\u003e [a]\n * @sig Number -\u003e String -\u003e String\n * @param {Number} n\n * @param {*} list\n * @return {*}\n * @see R.drop\n * @example\n *\n *      R.take(1, ['foo', 'bar', 'baz']); //=\u003e ['foo']\n *      R.take(2, ['foo', 'bar', 'baz']); //=\u003e ['foo', 'bar']\n *      R.take(3, ['foo', 'bar', 'baz']); //=\u003e ['foo', 'bar', 'baz']\n *      R.take(4, ['foo', 'bar', 'baz']); //=\u003e ['foo', 'bar', 'baz']\n *      R.take(3, 'ramda');               //=\u003e 'ram'\n *\n *      const personnel = [\n *        'Dave Brubeck',\n *        'Paul Desmond',\n *        'Eugene Wright',\n *        'Joe Morello',\n *        'Gerry Mulligan',\n *        'Bob Bates',\n *        'Joe Dodge',\n *        'Ron Crotty'\n *      ];\n *\n *      const takeFive = R.take(5);\n *      takeFive(personnel);\n *      //=\u003e ['Dave Brubeck', 'Paul Desmond', 'Eugene Wright', 'Joe Morello', 'Gerry Mulligan']\n * @symb R.take(-1, [a, b]) = [a, b]\n * @symb R.take(0, [a, b]) = []\n * @symb R.take(1, [a, b]) = [a]\n * @symb R.take(2, [a, b]) = [a, b]\n */\n\nvar take =\n/*#__PURE__*/\n_curry2(\n/*#__PURE__*/\n_dispatchable(['take'], _xtake, function take(n, xs) {\n  return slice(0, n \u003c 0 ? Infinity : n, xs);\n}));\n\nexport default take;","import take from \"../take.js\";\nexport default function dropLast(n, xs) {\n  return take(n \u003c xs.length ? xs.length - n : 0, xs);\n}","import _curry2 from \"./_curry2.js\";\nimport _xfBase from \"./_xfBase.js\";\n\nvar XDropLast =\n/*#__PURE__*/\nfunction () {\n  function XDropLast(n, xf) {\n    this.xf = xf;\n    this.pos = 0;\n    this.full = false;\n    this.acc = new Array(n);\n  }\n\n  XDropLast.prototype['@@transducer/init'] = _xfBase.init;\n\n  XDropLast.prototype['@@transducer/result'] = function (result) {\n    this.acc = null;\n    return this.xf['@@transducer/result'](result);\n  };\n\n  XDropLast.prototype['@@transducer/step'] = function (result, input) {\n    if (this.full) {\n      result = this.xf['@@transducer/step'](result, this.acc[this.pos]);\n    }\n\n    this.store(input);\n    return result;\n  };\n\n  XDropLast.prototype.store = function (input) {\n    this.acc[this.pos] = input;\n    this.pos += 1;\n\n    if (this.pos === this.acc.length) {\n      this.pos = 0;\n      this.full = true;\n    }\n  };\n\n  return XDropLast;\n}();\n\nvar _xdropLast =\n/*#__PURE__*/\n_curry2(function _xdropLast(n, xf) {\n  return new XDropLast(n, xf);\n});\n\nexport default _xdropLast;","import _curry2 from \"./internal/_curry2.js\";\nimport _dispatchable from \"./internal/_dispatchable.js\";\nimport _dropLast from \"./internal/_dropLast.js\";\nimport _xdropLast from \"./internal/_xdropLast.js\";\n/**\n * Returns a list containing all but the last `n` elements of the given `list`.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.16.0\n * @category List\n * @sig Number -\u003e [a] -\u003e [a]\n * @sig Number -\u003e String -\u003e String\n * @param {Number} n The number of elements of `list` to skip.\n * @param {Array} list The list of elements to consider.\n * @return {Array} A copy of the list with only the first `list.length - n` elements\n * @see R.takeLast, R.drop, R.dropWhile, R.dropLastWhile\n * @example\n *\n *      R.dropLast(1, ['foo', 'bar', 'baz']); //=\u003e ['foo', 'bar']\n *      R.dropLast(2, ['foo', 'bar', 'baz']); //=\u003e ['foo']\n *      R.dropLast(3, ['foo', 'bar', 'baz']); //=\u003e []\n *      R.dropLast(4, ['foo', 'bar', 'baz']); //=\u003e []\n *      R.dropLast(3, 'ramda');               //=\u003e 'ra'\n */\n\nvar dropLast =\n/*#__PURE__*/\n_curry2(\n/*#__PURE__*/\n_dispatchable([], _xdropLast, _dropLast));\n\nexport default dropLast;","import slice from \"../slice.js\";\nexport default function dropLastWhile(pred, xs) {\n  var idx = xs.length - 1;\n\n  while (idx \u003e= 0 \u0026\u0026 pred(xs[idx])) {\n    idx -= 1;\n  }\n\n  return slice(0, idx + 1, xs);\n}","import _curry2 from \"./_curry2.js\";\nimport _reduce from \"./_reduce.js\";\nimport _xfBase from \"./_xfBase.js\";\n\nvar XDropLastWhile =\n/*#__PURE__*/\nfunction () {\n  function XDropLastWhile(fn, xf) {\n    this.f = fn;\n    this.retained = [];\n    this.xf = xf;\n  }\n\n  XDropLastWhile.prototype['@@transducer/init'] = _xfBase.init;\n\n  XDropLastWhile.prototype['@@transducer/result'] = function (result) {\n    this.retained = null;\n    return this.xf['@@transducer/result'](result);\n  };\n\n  XDropLastWhile.prototype['@@transducer/step'] = function (result, input) {\n    return this.f(input) ? this.retain(result, input) : this.flush(result, input);\n  };\n\n  XDropLastWhile.prototype.flush = function (result, input) {\n    result = _reduce(this.xf['@@transducer/step'], result, this.retained);\n    this.retained = [];\n    return this.xf['@@transducer/step'](result, input);\n  };\n\n  XDropLastWhile.prototype.retain = function (result, input) {\n    this.retained.push(input);\n    return result;\n  };\n\n  return XDropLastWhile;\n}();\n\nvar _xdropLastWhile =\n/*#__PURE__*/\n_curry2(function _xdropLastWhile(fn, xf) {\n  return new XDropLastWhile(fn, xf);\n});\n\nexport default _xdropLastWhile;","import _curry2 from \"./internal/_curry2.js\";\nimport _dispatchable from \"./internal/_dispatchable.js\";\nimport _dropLastWhile from \"./internal/_dropLastWhile.js\";\nimport _xdropLastWhile from \"./internal/_xdropLastWhile.js\";\n/**\n * Returns a new list excluding all the tailing elements of a given list which\n * satisfy the supplied predicate function. It passes each value from the right\n * to the supplied predicate function, skipping elements until the predicate\n * function returns a `falsy` value. The predicate function is applied to one argument:\n * *(value)*.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.16.0\n * @category List\n * @sig (a -\u003e Boolean) -\u003e [a] -\u003e [a]\n * @sig (a -\u003e Boolean) -\u003e String -\u003e String\n * @param {Function} predicate The function to be called on each element\n * @param {Array} xs The collection to iterate over.\n * @return {Array} A new array without any trailing elements that return `falsy` values from the `predicate`.\n * @see R.takeLastWhile, R.addIndex, R.drop, R.dropWhile\n * @example\n *\n *      const lteThree = x =\u003e x \u003c= 3;\n *\n *      R.dropLastWhile(lteThree, [1, 2, 3, 4, 3, 2, 1]); //=\u003e [1, 2, 3, 4]\n *\n *      R.dropLastWhile(x =\u003e x !== 'd' , 'Ramda'); //=\u003e 'Ramd'\n */\n\nvar dropLastWhile =\n/*#__PURE__*/\n_curry2(\n/*#__PURE__*/\n_dispatchable([], _xdropLastWhile, _dropLastWhile));\n\nexport default dropLastWhile;","import _curry2 from \"./_curry2.js\";\nimport _xfBase from \"./_xfBase.js\";\n\nvar XDropRepeatsWith =\n/*#__PURE__*/\nfunction () {\n  function XDropRepeatsWith(pred, xf) {\n    this.xf = xf;\n    this.pred = pred;\n    this.lastValue = undefined;\n    this.seenFirstValue = false;\n  }\n\n  XDropRepeatsWith.prototype['@@transducer/init'] = _xfBase.init;\n  XDropRepeatsWith.prototype['@@transducer/result'] = _xfBase.result;\n\n  XDropRepeatsWith.prototype['@@transducer/step'] = function (result, input) {\n    var sameAsLast = false;\n\n    if (!this.seenFirstValue) {\n      this.seenFirstValue = true;\n    } else if (this.pred(this.lastValue, input)) {\n      sameAsLast = true;\n    }\n\n    this.lastValue = input;\n    return sameAsLast ? result : this.xf['@@transducer/step'](result, input);\n  };\n\n  return XDropRepeatsWith;\n}();\n\nvar _xdropRepeatsWith =\n/*#__PURE__*/\n_curry2(function _xdropRepeatsWith(pred, xf) {\n  return new XDropRepeatsWith(pred, xf);\n});\n\nexport default _xdropRepeatsWith;","import nth from \"./nth.js\";\n/**\n * Returns the last element of the given list or string.\n *\n * @func\n * @memberOf R\n * @since v0.1.4\n * @category List\n * @sig [a] -\u003e a | Undefined\n * @sig String -\u003e String\n * @param {*} list\n * @return {*}\n * @see R.init, R.head, R.tail\n * @example\n *\n *      R.last(['fi', 'fo', 'fum']); //=\u003e 'fum'\n *      R.last([]); //=\u003e undefined\n *\n *      R.last('abc'); //=\u003e 'c'\n *      R.last(''); //=\u003e ''\n */\n\nvar last =\n/*#__PURE__*/\nnth(-1);\nexport default last;","import _curry2 from \"./internal/_curry2.js\";\nimport _dispatchable from \"./internal/_dispatchable.js\";\nimport _xdropRepeatsWith from \"./internal/_xdropRepeatsWith.js\";\nimport last from \"./last.js\";\n/**\n * Returns a new list without any consecutively repeating elements. Equality is\n * determined by applying the supplied predicate to each pair of consecutive elements. The\n * first element in a series of equal elements will be preserved.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.14.0\n * @category List\n * @sig ((a, a) -\u003e Boolean) -\u003e [a] -\u003e [a]\n * @param {Function} pred A predicate used to test whether two items are equal.\n * @param {Array} list The array to consider.\n * @return {Array} `list` without repeating elements.\n * @see R.transduce\n * @example\n *\n *      const l = [1, -1, 1, 3, 4, -4, -4, -5, 5, 3, 3];\n *      R.dropRepeatsWith(R.eqBy(Math.abs), l); //=\u003e [1, 3, 4, -5, 3]\n */\n\nvar dropRepeatsWith =\n/*#__PURE__*/\n_curry2(\n/*#__PURE__*/\n_dispatchable([], _xdropRepeatsWith, function dropRepeatsWith(pred, list) {\n  var result = [];\n  var idx = 1;\n  var len = list.length;\n\n  if (len !== 0) {\n    result[0] = list[0];\n\n    while (idx \u003c len) {\n      if (!pred(last(result), list[idx])) {\n        result[result.length] = list[idx];\n      }\n\n      idx += 1;\n    }\n  }\n\n  return result;\n}));\n\nexport default dropRepeatsWith;","import _curry1 from \"./internal/_curry1.js\";\nimport _dispatchable from \"./internal/_dispatchable.js\";\nimport _xdropRepeatsWith from \"./internal/_xdropRepeatsWith.js\";\nimport dropRepeatsWith from \"./dropRepeatsWith.js\";\nimport equals from \"./equals.js\";\n/**\n * Returns a new list without any consecutively repeating elements.\n * [`R.equals`](#equals) is used to determine equality.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.14.0\n * @category List\n * @sig [a] -\u003e [a]\n * @param {Array} list The array to consider.\n * @return {Array} `list` without repeating elements.\n * @see R.transduce\n * @example\n *\n *     R.dropRepeats([1, 1, 1, 2, 3, 4, 4, 2, 2]); //=\u003e [1, 2, 3, 4, 2]\n */\n\nvar dropRepeats =\n/*#__PURE__*/\n_curry1(\n/*#__PURE__*/\n_dispatchable([],\n/*#__PURE__*/\n_xdropRepeatsWith(equals),\n/*#__PURE__*/\ndropRepeatsWith(equals)));\n\nexport default dropRepeats;","import _curry2 from \"./_curry2.js\";\nimport _xfBase from \"./_xfBase.js\";\n\nvar XDropWhile =\n/*#__PURE__*/\nfunction () {\n  function XDropWhile(f, xf) {\n    this.xf = xf;\n    this.f = f;\n  }\n\n  XDropWhile.prototype['@@transducer/init'] = _xfBase.init;\n  XDropWhile.prototype['@@transducer/result'] = _xfBase.result;\n\n  XDropWhile.prototype['@@transducer/step'] = function (result, input) {\n    if (this.f) {\n      if (this.f(input)) {\n        return result;\n      }\n\n      this.f = null;\n    }\n\n    return this.xf['@@transducer/step'](result, input);\n  };\n\n  return XDropWhile;\n}();\n\nvar _xdropWhile =\n/*#__PURE__*/\n_curry2(function _xdropWhile(f, xf) {\n  return new XDropWhile(f, xf);\n});\n\nexport default _xdropWhile;","import _curry2 from \"./internal/_curry2.js\";\nimport _dispatchable from \"./internal/_dispatchable.js\";\nimport _xdropWhile from \"./internal/_xdropWhile.js\";\nimport slice from \"./slice.js\";\n/**\n * Returns a new list excluding the leading elements of a given list which\n * satisfy the supplied predicate function. It passes each value to the supplied\n * predicate function, skipping elements while the predicate function returns\n * `true`. The predicate function is applied to one argument: *(value)*.\n *\n * Dispatches to the `dropWhile` method of the second argument, if present.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category List\n * @sig (a -\u003e Boolean) -\u003e [a] -\u003e [a]\n * @sig (a -\u003e Boolean) -\u003e String -\u003e String\n * @param {Function} fn The function called per iteration.\n * @param {Array} xs The collection to iterate over.\n * @return {Array} A new array.\n * @see R.takeWhile, R.transduce, R.addIndex\n * @example\n *\n *      const lteTwo = x =\u003e x \u003c= 2;\n *\n *      R.dropWhile(lteTwo, [1, 2, 3, 4, 3, 2, 1]); //=\u003e [3, 4, 3, 2, 1]\n *\n *      R.dropWhile(x =\u003e x !== 'd' , 'Ramda'); //=\u003e 'da'\n */\n\nvar dropWhile =\n/*#__PURE__*/\n_curry2(\n/*#__PURE__*/\n_dispatchable(['dropWhile'], _xdropWhile, function dropWhile(pred, xs) {\n  var idx = 0;\n  var len = xs.length;\n\n  while (idx \u003c len \u0026\u0026 pred(xs[idx])) {\n    idx += 1;\n  }\n\n  return slice(idx, Infinity, xs);\n}));\n\nexport default dropWhile;","import _curry2 from \"./internal/_curry2.js\";\n/**\n * Returns the first argument if it is truthy, otherwise the second argument.\n * Acts as the boolean `or` statement if both inputs are `Boolean`s.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Logic\n * @sig a -\u003e b -\u003e a | b\n * @param {Any} a\n * @param {Any} b\n * @return {Any}\n * @see R.either, R.and\n * @example\n *\n *      R.or(true, true); //=\u003e true\n *      R.or(true, false); //=\u003e true\n *      R.or(false, true); //=\u003e true\n *      R.or(false, false); //=\u003e false\n */\n\nvar or =\n/*#__PURE__*/\n_curry2(function or(a, b) {\n  return a || b;\n});\n\nexport default or;","import _curry2 from \"./internal/_curry2.js\";\nimport _isFunction from \"./internal/_isFunction.js\";\nimport lift from \"./lift.js\";\nimport or from \"./or.js\";\n/**\n * A function wrapping calls to the two functions in an `||` operation,\n * returning the result of the first function if it is truth-y and the result\n * of the second function otherwise. Note that this is short-circuited,\n * meaning that the second function will not be invoked if the first returns a\n * truth-y value.\n *\n * In addition to functions, `R.either` also accepts any fantasy-land compatible\n * applicative functor.\n *\n * @func\n * @memberOf R\n * @since v0.12.0\n * @category Logic\n * @sig (*... -\u003e Boolean) -\u003e (*... -\u003e Boolean) -\u003e (*... -\u003e Boolean)\n * @param {Function} f a predicate\n * @param {Function} g another predicate\n * @return {Function} a function that applies its arguments to `f` and `g` and `||`s their outputs together.\n * @see R.both, R.or\n * @example\n *\n *      const gt10 = x =\u003e x \u003e 10;\n *      const even = x =\u003e x % 2 === 0;\n *      const f = R.either(gt10, even);\n *      f(101); //=\u003e true\n *      f(8); //=\u003e true\n *\n *      R.either(Maybe.Just(false), Maybe.Just(55)); // =\u003e Maybe.Just(55)\n *      R.either([false, false, 'a'], [11]) // =\u003e [11, 11, \"a\"]\n */\n\nvar either =\n/*#__PURE__*/\n_curry2(function either(f, g) {\n  return _isFunction(f) ? function _either() {\n    return f.apply(this, arguments) || g.apply(this, arguments);\n  } : lift(or)(f, g);\n});\n\nexport default either;","/**\n * Tests whether or not an object is a typed array.\n *\n * @private\n * @param {*} val The object to test.\n * @return {Boolean} `true` if `val` is a typed array, `false` otherwise.\n * @example\n *\n *      _isTypedArray(new Uint8Array([])); //=\u003e true\n *      _isTypedArray(new Float32Array([])); //=\u003e true\n *      _isTypedArray([]); //=\u003e false\n *      _isTypedArray(null); //=\u003e false\n *      _isTypedArray({}); //=\u003e false\n */\nexport default function _isTypedArray(val) {\n  var type = Object.prototype.toString.call(val);\n  return type === '[object Uint8ClampedArray]' || type === '[object Int8Array]' || type === '[object Uint8Array]' || type === '[object Int16Array]' || type === '[object Uint16Array]' || type === '[object Int32Array]' || type === '[object Uint32Array]' || type === '[object Float32Array]' || type === '[object Float64Array]' || type === '[object BigInt64Array]' || type === '[object BigUint64Array]';\n}","import _curry1 from \"./internal/_curry1.js\";\nimport _isArguments from \"./internal/_isArguments.js\";\nimport _isArray from \"./internal/_isArray.js\";\nimport _isObject from \"./internal/_isObject.js\";\nimport _isString from \"./internal/_isString.js\";\nimport _isTypedArray from \"./internal/_isTypedArray.js\";\n/**\n * Returns the empty value of its argument's type. Ramda defines the empty\n * value of Array (`[]`), Object (`{}`), String (`''`),\n * TypedArray (`Uint8Array []`, `Float32Array []`, etc), and Arguments. Other\n * types are supported if they define `\u003cType\u003e.empty`,\n * `\u003cType\u003e.prototype.empty` or implement the\n * [FantasyLand Monoid spec](https://github.com/fantasyland/fantasy-land#monoid).\n *\n * Dispatches to the `empty` method of the first argument, if present.\n *\n * @func\n * @memberOf R\n * @since v0.3.0\n * @category Function\n * @sig a -\u003e a\n * @param {*} x\n * @return {*}\n * @example\n *\n *      R.empty(Just(42));               //=\u003e Nothing()\n *      R.empty([1, 2, 3]);              //=\u003e []\n *      R.empty('unicorns');             //=\u003e ''\n *      R.empty({x: 1, y: 2});           //=\u003e {}\n *      R.empty(Uint8Array.from('123')); //=\u003e Uint8Array []\n */\n\nvar empty =\n/*#__PURE__*/\n_curry1(function empty(x) {\n  return x != null \u0026\u0026 typeof x['fantasy-land/empty'] === 'function' ? x['fantasy-land/empty']() : x != null \u0026\u0026 x.constructor != null \u0026\u0026 typeof x.constructor['fantasy-land/empty'] === 'function' ? x.constructor['fantasy-land/empty']() : x != null \u0026\u0026 typeof x.empty === 'function' ? x.empty() : x != null \u0026\u0026 x.constructor != null \u0026\u0026 typeof x.constructor.empty === 'function' ? x.constructor.empty() : _isArray(x) ? [] : _isString(x) ? '' : _isObject(x) ? {} : _isArguments(x) ? function () {\n    return arguments;\n  }() : _isTypedArray(x) ? x.constructor.from('') : void 0 // else\n  ;\n});\n\nexport default empty;","import _curry2 from \"./internal/_curry2.js\";\nimport drop from \"./drop.js\";\n/**\n * Returns a new list containing the last `n` elements of the given list.\n * If `n \u003e list.length`, returns a list of `list.length` elements.\n *\n * @func\n * @memberOf R\n * @since v0.16.0\n * @category List\n * @sig Number -\u003e [a] -\u003e [a]\n * @sig Number -\u003e String -\u003e String\n * @param {Number} n The number of elements to return.\n * @param {Array} xs The collection to consider.\n * @return {Array}\n * @see R.dropLast\n * @example\n *\n *      R.takeLast(1, ['foo', 'bar', 'baz']); //=\u003e ['baz']\n *      R.takeLast(2, ['foo', 'bar', 'baz']); //=\u003e ['bar', 'baz']\n *      R.takeLast(3, ['foo', 'bar', 'baz']); //=\u003e ['foo', 'bar', 'baz']\n *      R.takeLast(4, ['foo', 'bar', 'baz']); //=\u003e ['foo', 'bar', 'baz']\n *      R.takeLast(3, 'ramda');               //=\u003e 'mda'\n */\n\nvar takeLast =\n/*#__PURE__*/\n_curry2(function takeLast(n, xs) {\n  return drop(n \u003e= 0 ? xs.length - n : 0, xs);\n});\n\nexport default takeLast;","import _curry2 from \"./internal/_curry2.js\";\nimport equals from \"./equals.js\";\nimport takeLast from \"./takeLast.js\";\n/**\n * Checks if a list ends with the provided sublist.\n *\n * Similarly, checks if a string ends with the provided substring.\n *\n * @func\n * @memberOf R\n * @since v0.24.0\n * @category List\n * @sig [a] -\u003e [a] -\u003e Boolean\n * @sig String -\u003e String -\u003e Boolean\n * @param {*} suffix\n * @param {*} list\n * @return {Boolean}\n * @see R.startsWith\n * @example\n *\n *      R.endsWith('c', 'abc')                //=\u003e true\n *      R.endsWith('b', 'abc')                //=\u003e false\n *      R.endsWith(['c'], ['a', 'b', 'c'])    //=\u003e true\n *      R.endsWith(['b'], ['a', 'b', 'c'])    //=\u003e false\n */\n\nvar endsWith =\n/*#__PURE__*/\n_curry2(function (suffix, list) {\n  return equals(takeLast(suffix.length, list), suffix);\n});\n\nexport default endsWith;","import _curry3 from \"./internal/_curry3.js\";\nimport equals from \"./equals.js\";\n/**\n * Takes a function and two values in its domain and returns `true` if the\n * values map to the same value in the codomain; `false` otherwise.\n *\n * @func\n * @memberOf R\n * @since v0.18.0\n * @category Relation\n * @sig (a -\u003e b) -\u003e a -\u003e a -\u003e Boolean\n * @param {Function} f\n * @param {*} x\n * @param {*} y\n * @return {Boolean}\n * @example\n *\n *      R.eqBy(Math.abs, 5, -5); //=\u003e true\n */\n\nvar eqBy =\n/*#__PURE__*/\n_curry3(function eqBy(f, x, y) {\n  return equals(f(x), f(y));\n});\n\nexport default eqBy;","import _curry3 from \"./internal/_curry3.js\";\nimport equals from \"./equals.js\";\n/**\n * Reports whether two objects have the same value, in [`R.equals`](#equals)\n * terms, for the specified property. Useful as a curried predicate.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Object\n * @sig k -\u003e {k: v} -\u003e {k: v} -\u003e Boolean\n * @param {String} prop The name of the property to compare\n * @param {Object} obj1\n * @param {Object} obj2\n * @return {Boolean}\n *\n * @example\n *\n *      const o1 = { a: 1, b: 2, c: 3, d: 4 };\n *      const o2 = { a: 10, b: 20, c: 3, d: 40 };\n *      R.eqProps('a', o1, o2); //=\u003e false\n *      R.eqProps('c', o1, o2); //=\u003e true\n */\n\nvar eqProps =\n/*#__PURE__*/\n_curry3(function eqProps(prop, obj1, obj2) {\n  return equals(obj1[prop], obj2[prop]);\n});\n\nexport default eqProps;","import _curry2 from \"./internal/_curry2.js\";\nimport _isArray from \"./internal/_isArray.js\";\nimport _isObject from \"./internal/_isObject.js\";\n/**\n * Creates a new object by recursively evolving a shallow copy of `object`,\n * according to the `transformation` functions. All non-primitive properties\n * are copied by reference.\n *\n * A `transformation` function will not be invoked if its corresponding key\n * does not exist in the evolved object.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category Object\n * @sig {k: (v -\u003e v)} -\u003e {k: v} -\u003e {k: v}\n * @param {Object} transformations The object specifying transformation functions to apply\n *        to the object.\n * @param {Object} object The object to be transformed.\n * @return {Object} The transformed object.\n * @example\n *\n *      const tomato = {firstName: '  Tomato ', data: {elapsed: 100, remaining: 1400}, id:123};\n *      const transformations = {\n *        firstName: R.trim,\n *        lastName: R.trim, // Will not get invoked.\n *        data: {elapsed: R.add(1), remaining: R.add(-1)}\n *      };\n *      R.evolve(transformations, tomato); //=\u003e {firstName: 'Tomato', data: {elapsed: 101, remaining: 1399}, id:123}\n */\n\nvar evolve =\n/*#__PURE__*/\n_curry2(function evolve(transformations, object) {\n  if (!_isObject(object) \u0026\u0026 !_isArray(object)) {\n    return object;\n  }\n\n  var result = object instanceof Array ? [] : {};\n  var transformation, key, type;\n\n  for (key in object) {\n    transformation = transformations[key];\n    type = typeof transformation;\n    result[key] = type === 'function' ? transformation(object[key]) : transformation \u0026\u0026 type === 'object' ? evolve(transformation, object[key]) : object[key];\n  }\n\n  return result;\n});\n\nexport default evolve;","import _curry2 from \"./_curry2.js\";\nimport _reduced from \"./_reduced.js\";\nimport _xfBase from \"./_xfBase.js\";\n\nvar XFind =\n/*#__PURE__*/\nfunction () {\n  function XFind(f, xf) {\n    this.xf = xf;\n    this.f = f;\n    this.found = false;\n  }\n\n  XFind.prototype['@@transducer/init'] = _xfBase.init;\n\n  XFind.prototype['@@transducer/result'] = function (result) {\n    if (!this.found) {\n      result = this.xf['@@transducer/step'](result, void 0);\n    }\n\n    return this.xf['@@transducer/result'](result);\n  };\n\n  XFind.prototype['@@transducer/step'] = function (result, input) {\n    if (this.f(input)) {\n      this.found = true;\n      result = _reduced(this.xf['@@transducer/step'](result, input));\n    }\n\n    return result;\n  };\n\n  return XFind;\n}();\n\nvar _xfind =\n/*#__PURE__*/\n_curry2(function _xfind(f, xf) {\n  return new XFind(f, xf);\n});\n\nexport default _xfind;","import _curry2 from \"./internal/_curry2.js\";\nimport _dispatchable from \"./internal/_dispatchable.js\";\nimport _xfind from \"./internal/_xfind.js\";\n/**\n * Returns the first element of the list which matches the predicate, or\n * `undefined` if no element matches.\n *\n * Dispatches to the `find` method of the second argument, if present.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig (a -\u003e Boolean) -\u003e [a] -\u003e a | undefined\n * @param {Function} fn The predicate function used to determine if the element is the\n *        desired one.\n * @param {Array} list The array to consider.\n * @return {Object} The element found, or `undefined`.\n * @see R.transduce\n * @example\n *\n *      const xs = [{a: 1}, {a: 2}, {a: 3}];\n *      R.find(R.propEq('a', 2))(xs); //=\u003e {a: 2}\n *      R.find(R.propEq('a', 4))(xs); //=\u003e undefined\n */\n\nvar find =\n/*#__PURE__*/\n_curry2(\n/*#__PURE__*/\n_dispatchable(['find'], _xfind, function find(fn, list) {\n  var idx = 0;\n  var len = list.length;\n\n  while (idx \u003c len) {\n    if (fn(list[idx])) {\n      return list[idx];\n    }\n\n    idx += 1;\n  }\n}));\n\nexport default find;","import _curry2 from \"./_curry2.js\";\nimport _reduced from \"./_reduced.js\";\nimport _xfBase from \"./_xfBase.js\";\n\nvar XFindIndex =\n/*#__PURE__*/\nfunction () {\n  function XFindIndex(f, xf) {\n    this.xf = xf;\n    this.f = f;\n    this.idx = -1;\n    this.found = false;\n  }\n\n  XFindIndex.prototype['@@transducer/init'] = _xfBase.init;\n\n  XFindIndex.prototype['@@transducer/result'] = function (result) {\n    if (!this.found) {\n      result = this.xf['@@transducer/step'](result, -1);\n    }\n\n    return this.xf['@@transducer/result'](result);\n  };\n\n  XFindIndex.prototype['@@transducer/step'] = function (result, input) {\n    this.idx += 1;\n\n    if (this.f(input)) {\n      this.found = true;\n      result = _reduced(this.xf['@@transducer/step'](result, this.idx));\n    }\n\n    return result;\n  };\n\n  return XFindIndex;\n}();\n\nvar _xfindIndex =\n/*#__PURE__*/\n_curry2(function _xfindIndex(f, xf) {\n  return new XFindIndex(f, xf);\n});\n\nexport default _xfindIndex;","import _curry2 from \"./internal/_curry2.js\";\nimport _dispatchable from \"./internal/_dispatchable.js\";\nimport _xfindIndex from \"./internal/_xfindIndex.js\";\n/**\n * Returns the index of the first element of the list which matches the\n * predicate, or `-1` if no element matches.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.1.1\n * @category List\n * @sig (a -\u003e Boolean) -\u003e [a] -\u003e Number\n * @param {Function} fn The predicate function used to determine if the element is the\n * desired one.\n * @param {Array} list The array to consider.\n * @return {Number} The index of the element found, or `-1`.\n * @see R.transduce, R.indexOf\n * @example\n *\n *      const xs = [{a: 1}, {a: 2}, {a: 3}];\n *      R.findIndex(R.propEq('a', 2))(xs); //=\u003e 1\n *      R.findIndex(R.propEq('a', 4))(xs); //=\u003e -1\n */\n\nvar findIndex =\n/*#__PURE__*/\n_curry2(\n/*#__PURE__*/\n_dispatchable([], _xfindIndex, function findIndex(fn, list) {\n  var idx = 0;\n  var len = list.length;\n\n  while (idx \u003c len) {\n    if (fn(list[idx])) {\n      return idx;\n    }\n\n    idx += 1;\n  }\n\n  return -1;\n}));\n\nexport default findIndex;","import _curry2 from \"./_curry2.js\";\nimport _xfBase from \"./_xfBase.js\";\n\nvar XFindLast =\n/*#__PURE__*/\nfunction () {\n  function XFindLast(f, xf) {\n    this.xf = xf;\n    this.f = f;\n  }\n\n  XFindLast.prototype['@@transducer/init'] = _xfBase.init;\n\n  XFindLast.prototype['@@transducer/result'] = function (result) {\n    return this.xf['@@transducer/result'](this.xf['@@transducer/step'](result, this.last));\n  };\n\n  XFindLast.prototype['@@transducer/step'] = function (result, input) {\n    if (this.f(input)) {\n      this.last = input;\n    }\n\n    return result;\n  };\n\n  return XFindLast;\n}();\n\nvar _xfindLast =\n/*#__PURE__*/\n_curry2(function _xfindLast(f, xf) {\n  return new XFindLast(f, xf);\n});\n\nexport default _xfindLast;","import _curry2 from \"./internal/_curry2.js\";\nimport _dispatchable from \"./internal/_dispatchable.js\";\nimport _xfindLast from \"./internal/_xfindLast.js\";\n/**\n * Returns the last element of the list which matches the predicate, or\n * `undefined` if no element matches.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.1.1\n * @category List\n * @sig (a -\u003e Boolean) -\u003e [a] -\u003e a | undefined\n * @param {Function} fn The predicate function used to determine if the element is the\n * desired one.\n * @param {Array} list The array to consider.\n * @return {Object} The element found, or `undefined`.\n * @see R.transduce\n * @example\n *\n *      const xs = [{a: 1, b: 0}, {a:1, b: 1}];\n *      R.findLast(R.propEq('a', 1))(xs); //=\u003e {a: 1, b: 1}\n *      R.findLast(R.propEq('a', 4))(xs); //=\u003e undefined\n */\n\nvar findLast =\n/*#__PURE__*/\n_curry2(\n/*#__PURE__*/\n_dispatchable([], _xfindLast, function findLast(fn, list) {\n  var idx = list.length - 1;\n\n  while (idx \u003e= 0) {\n    if (fn(list[idx])) {\n      return list[idx];\n    }\n\n    idx -= 1;\n  }\n}));\n\nexport default findLast;","import _curry2 from \"./_curry2.js\";\nimport _xfBase from \"./_xfBase.js\";\n\nvar XFindLastIndex =\n/*#__PURE__*/\nfunction () {\n  function XFindLastIndex(f, xf) {\n    this.xf = xf;\n    this.f = f;\n    this.idx = -1;\n    this.lastIdx = -1;\n  }\n\n  XFindLastIndex.prototype['@@transducer/init'] = _xfBase.init;\n\n  XFindLastIndex.prototype['@@transducer/result'] = function (result) {\n    return this.xf['@@transducer/result'](this.xf['@@transducer/step'](result, this.lastIdx));\n  };\n\n  XFindLastIndex.prototype['@@transducer/step'] = function (result, input) {\n    this.idx += 1;\n\n    if (this.f(input)) {\n      this.lastIdx = this.idx;\n    }\n\n    return result;\n  };\n\n  return XFindLastIndex;\n}();\n\nvar _xfindLastIndex =\n/*#__PURE__*/\n_curry2(function _xfindLastIndex(f, xf) {\n  return new XFindLastIndex(f, xf);\n});\n\nexport default _xfindLastIndex;","import _curry2 from \"./internal/_curry2.js\";\nimport _dispatchable from \"./internal/_dispatchable.js\";\nimport _xfindLastIndex from \"./internal/_xfindLastIndex.js\";\n/**\n * Returns the index of the last element of the list which matches the\n * predicate, or `-1` if no element matches.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.1.1\n * @category List\n * @sig (a -\u003e Boolean) -\u003e [a] -\u003e Number\n * @param {Function} fn The predicate function used to determine if the element is the\n * desired one.\n * @param {Array} list The array to consider.\n * @return {Number} The index of the element found, or `-1`.\n * @see R.transduce, R.lastIndexOf\n * @example\n *\n *      const xs = [{a: 1, b: 0}, {a:1, b: 1}];\n *      R.findLastIndex(R.propEq('a', 1))(xs); //=\u003e 1\n *      R.findLastIndex(R.propEq('a', 4))(xs); //=\u003e -1\n */\n\nvar findLastIndex =\n/*#__PURE__*/\n_curry2(\n/*#__PURE__*/\n_dispatchable([], _xfindLastIndex, function findLastIndex(fn, list) {\n  var idx = list.length - 1;\n\n  while (idx \u003e= 0) {\n    if (fn(list[idx])) {\n      return idx;\n    }\n\n    idx -= 1;\n  }\n\n  return -1;\n}));\n\nexport default findLastIndex;","import _curry1 from \"./internal/_curry1.js\";\nimport _makeFlat from \"./internal/_makeFlat.js\";\n/**\n * Returns a new list by pulling every item out of it (and all its sub-arrays)\n * and putting them in a new array, depth-first.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig [a] -\u003e [b]\n * @param {Array} list The array to consider.\n * @return {Array} The flattened list.\n * @see R.unnest\n * @example\n *\n *      R.flatten([1, 2, [3, 4], 5, [6, [7, 8, [9, [10, 11], 12]]]]);\n *      //=\u003e [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]\n */\n\nvar flatten =\n/*#__PURE__*/\n_curry1(\n/*#__PURE__*/\n_makeFlat(true));\n\nexport default flatten;","import _curry1 from \"./internal/_curry1.js\";\nimport curryN from \"./curryN.js\";\n/**\n * Returns a new function much like the supplied one, except that the first two\n * arguments' order is reversed.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Function\n * @sig ((a, b, c, ...) -\u003e z) -\u003e (b -\u003e a -\u003e c -\u003e ... -\u003e z)\n * @param {Function} fn The function to invoke with its first two parameters reversed.\n * @return {*} The result of invoking `fn` with its first two parameters' order reversed.\n * @example\n *\n *      const mergeThree = (a, b, c) =\u003e [].concat(a, b, c);\n *\n *      mergeThree(1, 2, 3); //=\u003e [1, 2, 3]\n *\n *      R.flip(mergeThree)(1, 2, 3); //=\u003e [2, 1, 3]\n * @symb R.flip(f)(a, b, c) = f(b, a, c)\n */\n\nvar flip =\n/*#__PURE__*/\n_curry1(function flip(fn) {\n  return curryN(fn.length, function (a, b) {\n    var args = Array.prototype.slice.call(arguments, 0);\n    args[0] = b;\n    args[1] = a;\n    return fn.apply(this, args);\n  });\n});\n\nexport default flip;","import _checkForMethod from \"./internal/_checkForMethod.js\";\nimport _curry2 from \"./internal/_curry2.js\";\n/**\n * Iterate over an input `list`, calling a provided function `fn` for each\n * element in the list.\n *\n * `fn` receives one argument: *(value)*.\n *\n * Note: `R.forEach` does not skip deleted or unassigned indices (sparse\n * arrays), unlike the native `Array.prototype.forEach` method. For more\n * details on this behavior, see:\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach#Description\n *\n * Also note that, unlike `Array.prototype.forEach`, Ramda's `forEach` returns\n * the original array. In some libraries this function is named `each`.\n *\n * Dispatches to the `forEach` method of the second argument, if present.\n *\n * @func\n * @memberOf R\n * @since v0.1.1\n * @category List\n * @sig (a -\u003e *) -\u003e [a] -\u003e [a]\n * @param {Function} fn The function to invoke. Receives one argument, `value`.\n * @param {Array} list The list to iterate over.\n * @return {Array} The original list.\n * @see R.addIndex\n * @example\n *\n *      const printXPlusFive = x =\u003e console.log(x + 5);\n *      R.forEach(printXPlusFive, [1, 2, 3]); //=\u003e [1, 2, 3]\n *      // logs 6\n *      // logs 7\n *      // logs 8\n * @symb R.forEach(f, [a, b, c]) = [a, b, c]\n */\n\nvar forEach =\n/*#__PURE__*/\n_curry2(\n/*#__PURE__*/\n_checkForMethod('forEach', function forEach(fn, list) {\n  var len = list.length;\n  var idx = 0;\n\n  while (idx \u003c len) {\n    fn(list[idx]);\n    idx += 1;\n  }\n\n  return list;\n}));\n\nexport default forEach;","import _curry2 from \"./internal/_curry2.js\";\nimport keys from \"./keys.js\";\n/**\n * Iterate over an input `object`, calling a provided function `fn` for each\n * key and value in the object.\n *\n * `fn` receives three argument: *(value, key, obj)*.\n *\n * @func\n * @memberOf R\n * @since v0.23.0\n * @category Object\n * @sig ((a, String, StrMap a) -\u003e Any) -\u003e StrMap a -\u003e StrMap a\n * @param {Function} fn The function to invoke. Receives three argument, `value`, `key`, `obj`.\n * @param {Object} obj The object to iterate over.\n * @return {Object} The original object.\n * @example\n *\n *      const printKeyConcatValue = (value, key) =\u003e console.log(key + ':' + value);\n *      R.forEachObjIndexed(printKeyConcatValue, {x: 1, y: 2}); //=\u003e {x: 1, y: 2}\n *      // logs x:1\n *      // logs y:2\n * @symb R.forEachObjIndexed(f, {x: a, y: b}) = {x: a, y: b}\n */\n\nvar forEachObjIndexed =\n/*#__PURE__*/\n_curry2(function forEachObjIndexed(fn, obj) {\n  var keyList = keys(obj);\n  var idx = 0;\n\n  while (idx \u003c keyList.length) {\n    var key = keyList[idx];\n    fn(obj[key], key, obj);\n    idx += 1;\n  }\n\n  return obj;\n});\n\nexport default forEachObjIndexed;","import _curry1 from \"./internal/_curry1.js\";\n/**\n * Creates a new object from a list key-value pairs. If a key appears in\n * multiple pairs, the rightmost pair is included in the object.\n *\n * @func\n * @memberOf R\n * @since v0.3.0\n * @category List\n * @sig [[k,v]] -\u003e {k: v}\n * @param {Array} pairs An array of two-element arrays that will be the keys and values of the output object.\n * @return {Object} The object made by pairing up `keys` and `values`.\n * @see R.toPairs, R.pair\n * @example\n *\n *      R.fromPairs([['a', 1], ['b', 2], ['c', 3]]); //=\u003e {a: 1, b: 2, c: 3}\n */\n\nvar fromPairs =\n/*#__PURE__*/\n_curry1(function fromPairs(pairs) {\n  var result = {};\n  var idx = 0;\n\n  while (idx \u003c pairs.length) {\n    result[pairs[idx][0]] = pairs[idx][1];\n    idx += 1;\n  }\n\n  return result;\n});\n\nexport default fromPairs;","import _checkForMethod from \"./internal/_checkForMethod.js\";\nimport _curry2 from \"./internal/_curry2.js\";\nimport reduceBy from \"./reduceBy.js\";\n/**\n * Splits a list into sub-lists stored in an object, based on the result of\n * calling a key-returning function on each element, and grouping the\n * results according to values returned.\n *\n * Dispatches to the `groupBy` method of the second argument, if present.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @typedefn Idx = String | Int | Symbol\n * @sig Idx a =\u003e (b -\u003e a) -\u003e [b] -\u003e {a: [b]}\n * @param {Function} fn Function :: a -\u003e Idx\n * @param {Array} list The array to group\n * @return {Object} An object with the output of `fn` for keys, mapped to arrays of elements\n *         that produced that key when passed to `fn`.\n * @see R.reduceBy, R.transduce, R.indexBy\n * @example\n *\n *      const byGrade = R.groupBy(function(student) {\n *        const score = student.score;\n *        return score \u003c 65 ? 'F' :\n *               score \u003c 70 ? 'D' :\n *               score \u003c 80 ? 'C' :\n *               score \u003c 90 ? 'B' : 'A';\n *      });\n *      const students = [{name: 'Abby', score: 84},\n *                      {name: 'Eddy', score: 58},\n *                      // ...\n *                      {name: 'Jack', score: 69}];\n *      byGrade(students);\n *      // {\n *      //   'A': [{name: 'Dianne', score: 99}],\n *      //   'B': [{name: 'Abby', score: 84}]\n *      //   // ...,\n *      //   'F': [{name: 'Eddy', score: 58}]\n *      // }\n */\n\nvar groupBy =\n/*#__PURE__*/\n_curry2(\n/*#__PURE__*/\n_checkForMethod('groupBy',\n/*#__PURE__*/\nreduceBy(function (acc, item) {\n  acc.push(item);\n  return acc;\n}, [])));\n\nexport default groupBy;","import _curry2 from \"./internal/_curry2.js\";\n/**\n * Takes a list and returns a list of lists where each sublist's elements are\n * all satisfied pairwise comparison according to the provided function.\n * Only adjacent elements are passed to the comparison function.\n *\n * @func\n * @memberOf R\n * @since v0.21.0\n * @category List\n * @sig ((a, a) → Boolean) → [a] → [[a]]\n * @param {Function} fn Function for determining whether two given (adjacent)\n *        elements should be in the same group\n * @param {Array} list The array to group. Also accepts a string, which will be\n *        treated as a list of characters.\n * @return {List} A list that contains sublists of elements,\n *         whose concatenations are equal to the original list.\n * @example\n *\n * R.groupWith(R.equals, [0, 1, 1, 2, 3, 5, 8, 13, 21])\n * //=\u003e [[0], [1, 1], [2], [3], [5], [8], [13], [21]]\n *\n * R.groupWith((a, b) =\u003e a + 1 === b, [0, 1, 1, 2, 3, 5, 8, 13, 21])\n * //=\u003e [[0, 1], [1, 2, 3], [5], [8], [13], [21]]\n *\n * R.groupWith((a, b) =\u003e a % 2 === b % 2, [0, 1, 1, 2, 3, 5, 8, 13, 21])\n * //=\u003e [[0], [1, 1], [2], [3, 5], [8], [13, 21]]\n *\n * const isVowel = R.test(/^[aeiou]$/i);\n * R.groupWith(R.eqBy(isVowel), 'aestiou')\n * //=\u003e ['ae', 'st', 'iou']\n */\n\nvar groupWith =\n/*#__PURE__*/\n_curry2(function (fn, list) {\n  var res = [];\n  var idx = 0;\n  var len = list.length;\n\n  while (idx \u003c len) {\n    var nextidx = idx + 1;\n\n    while (nextidx \u003c len \u0026\u0026 fn(list[nextidx - 1], list[nextidx])) {\n      nextidx += 1;\n    }\n\n    res.push(list.slice(idx, nextidx));\n    idx = nextidx;\n  }\n\n  return res;\n});\n\nexport default groupWith;","import _curry2 from \"./internal/_curry2.js\";\n/**\n * Returns `true` if the first argument is greater than the second; `false`\n * otherwise.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Relation\n * @sig Ord a =\u003e a -\u003e a -\u003e Boolean\n * @param {*} a\n * @param {*} b\n * @return {Boolean}\n * @see R.lt\n * @example\n *\n *      R.gt(2, 1); //=\u003e true\n *      R.gt(2, 2); //=\u003e false\n *      R.gt(2, 3); //=\u003e false\n *      R.gt('a', 'z'); //=\u003e false\n *      R.gt('z', 'a'); //=\u003e true\n */\n\nvar gt =\n/*#__PURE__*/\n_curry2(function gt(a, b) {\n  return a \u003e b;\n});\n\nexport default gt;","import _curry2 from \"./internal/_curry2.js\";\n/**\n * Returns `true` if the first argument is greater than or equal to the second;\n * `false` otherwise.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Relation\n * @sig Ord a =\u003e a -\u003e a -\u003e Boolean\n * @param {Number} a\n * @param {Number} b\n * @return {Boolean}\n * @see R.lte\n * @example\n *\n *      R.gte(2, 1); //=\u003e true\n *      R.gte(2, 2); //=\u003e true\n *      R.gte(2, 3); //=\u003e false\n *      R.gte('a', 'z'); //=\u003e false\n *      R.gte('z', 'a'); //=\u003e true\n */\n\nvar gte =\n/*#__PURE__*/\n_curry2(function gte(a, b) {\n  return a \u003e= b;\n});\n\nexport default gte;","import _curry2 from \"./internal/_curry2.js\";\nimport _has from \"./internal/_has.js\";\nimport isNil from \"./isNil.js\";\n/**\n * Returns whether or not a path exists in an object. Only the object's\n * own properties are checked.\n *\n * @func\n * @memberOf R\n * @since v0.26.0\n * @category Object\n * @typedefn Idx = String | Int | Symbol\n * @sig [Idx] -\u003e {a} -\u003e Boolean\n * @param {Array} path The path to use.\n * @param {Object} obj The object to check the path in.\n * @return {Boolean} Whether the path exists.\n * @see R.has\n * @example\n *\n *      R.hasPath(['a', 'b'], {a: {b: 2}});         // =\u003e true\n *      R.hasPath(['a', 'b'], {a: {b: undefined}}); // =\u003e true\n *      R.hasPath(['a', 'b'], {a: {c: 2}});         // =\u003e false\n *      R.hasPath(['a', 'b'], {});                  // =\u003e false\n */\n\nvar hasPath =\n/*#__PURE__*/\n_curry2(function hasPath(_path, obj) {\n  if (_path.length === 0 || isNil(obj)) {\n    return false;\n  }\n\n  var val = obj;\n  var idx = 0;\n\n  while (idx \u003c _path.length) {\n    if (!isNil(val) \u0026\u0026 _has(_path[idx], val)) {\n      val = val[_path[idx]];\n      idx += 1;\n    } else {\n      return false;\n    }\n  }\n\n  return true;\n});\n\nexport default hasPath;","import _curry2 from \"./internal/_curry2.js\";\nimport hasPath from \"./hasPath.js\";\n/**\n * Returns whether or not an object has an own property with the specified name\n *\n * @func\n * @memberOf R\n * @since v0.7.0\n * @category Object\n * @sig s -\u003e {s: x} -\u003e Boolean\n * @param {String} prop The name of the property to check for.\n * @param {Object} obj The object to query.\n * @return {Boolean} Whether the property exists.\n * @example\n *\n *      const hasName = R.has('name');\n *      hasName({name: 'alice'});   //=\u003e true\n *      hasName({name: 'bob'});     //=\u003e true\n *      hasName({});                //=\u003e false\n *\n *      const point = {x: 0, y: 0};\n *      const pointHas = R.has(R.__, point);\n *      pointHas('x');  //=\u003e true\n *      pointHas('y');  //=\u003e true\n *      pointHas('z');  //=\u003e false\n */\n\nvar has =\n/*#__PURE__*/\n_curry2(function has(prop, obj) {\n  return hasPath([prop], obj);\n});\n\nexport default has;","import _curry2 from \"./internal/_curry2.js\";\nimport isNil from \"./isNil.js\";\n/**\n * Returns whether or not an object or its prototype chain has a property with\n * the specified name\n *\n * @func\n * @memberOf R\n * @since v0.7.0\n * @category Object\n * @sig s -\u003e {s: x} -\u003e Boolean\n * @param {String} prop The name of the property to check for.\n * @param {Object} obj The object to query.\n * @return {Boolean} Whether the property exists.\n * @example\n *\n *      function Rectangle(width, height) {\n *        this.width = width;\n *        this.height = height;\n *      }\n *      Rectangle.prototype.area = function() {\n *        return this.width * this.height;\n *      };\n *\n *      const square = new Rectangle(2, 2);\n *      R.hasIn('width', square);  //=\u003e true\n *      R.hasIn('area', square);  //=\u003e true\n */\n\nvar hasIn =\n/*#__PURE__*/\n_curry2(function hasIn(prop, obj) {\n  if (isNil(obj)) {\n    return false;\n  }\n\n  return prop in obj;\n});\n\nexport default hasIn;","import _objectIs from \"./internal/_objectIs.js\";\nimport _curry2 from \"./internal/_curry2.js\";\n/**\n * Returns true if its arguments are identical, false otherwise. Values are\n * identical if they reference the same memory. `NaN` is identical to `NaN`;\n * `0` and `-0` are not identical.\n *\n * Note this is merely a curried version of ES6 `Object.is`.\n *\n * @func\n * @memberOf R\n * @since v0.15.0\n * @category Relation\n * @sig a -\u003e a -\u003e Boolean\n * @param {*} a\n * @param {*} b\n * @return {Boolean}\n * @example\n *\n *      const o = {};\n *      R.identical(o, o); //=\u003e true\n *      R.identical(1, 1); //=\u003e true\n *      R.identical(1, '1'); //=\u003e false\n *      R.identical([], []); //=\u003e false\n *      R.identical(0, -0); //=\u003e false\n *      R.identical(NaN, NaN); //=\u003e true\n */\n\nvar identical =\n/*#__PURE__*/\n_curry2(_objectIs);\n\nexport default identical;","import _curry3 from \"./internal/_curry3.js\";\nimport curryN from \"./curryN.js\";\n/**\n * Creates a function that will process either the `onTrue` or the `onFalse`\n * function depending upon the result of the `condition` predicate.\n *\n * @func\n * @memberOf R\n * @since v0.8.0\n * @category Logic\n * @sig (*... -\u003e Boolean) -\u003e (*... -\u003e *) -\u003e (*... -\u003e *) -\u003e (*... -\u003e *)\n * @param {Function} condition A predicate function\n * @param {Function} onTrue A function to invoke when the `condition` evaluates to a truthy value.\n * @param {Function} onFalse A function to invoke when the `condition` evaluates to a falsy value.\n * @return {Function} A new function that will process either the `onTrue` or the `onFalse`\n *                    function depending upon the result of the `condition` predicate.\n * @see R.unless, R.when, R.cond\n * @example\n *\n *      const incCount = R.ifElse(\n *        R.has('count'),\n *        R.over(R.lensProp('count'), R.inc),\n *        R.assoc('count', 1)\n *      );\n *      incCount({ count: 1 }); //=\u003e { count: 2 }\n *      incCount({});           //=\u003e { count: 1 }\n */\n\nvar ifElse =\n/*#__PURE__*/\n_curry3(function ifElse(condition, onTrue, onFalse) {\n  return curryN(Math.max(condition.length, onTrue.length, onFalse.length), function _ifElse() {\n    return condition.apply(this, arguments) ? onTrue.apply(this, arguments) : onFalse.apply(this, arguments);\n  });\n});\n\nexport default ifElse;","import add from \"./add.js\";\n/**\n * Increments its argument.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category Math\n * @sig Number -\u003e Number\n * @param {Number} n\n * @return {Number} n + 1\n * @see R.dec\n * @example\n *\n *      R.inc(42); //=\u003e 43\n */\n\nvar inc =\n/*#__PURE__*/\nadd(1);\nexport default inc;","import _includes from \"./internal/_includes.js\";\nimport _curry2 from \"./internal/_curry2.js\";\n/**\n * Returns `true` if the specified value is equal, in [`R.equals`](#equals)\n * terms, to at least one element of the given list; `false` otherwise.\n * Also works with strings.\n *\n * @func\n * @memberOf R\n * @since v0.26.0\n * @category List\n * @sig a -\u003e [a] -\u003e Boolean\n * @param {Object} a The item to compare against.\n * @param {Array} list The array to consider.\n * @return {Boolean} `true` if an equivalent item is in the list, `false` otherwise.\n * @see R.any\n * @example\n *\n *      R.includes(3, [1, 2, 3]); //=\u003e true\n *      R.includes(4, [1, 2, 3]); //=\u003e false\n *      R.includes({ name: 'Fred' }, [{ name: 'Fred' }]); //=\u003e true\n *      R.includes([42], [[42]]); //=\u003e true\n *      R.includes('ba', 'banana'); //=\u003etrue\n */\n\nvar includes =\n/*#__PURE__*/\n_curry2(_includes);\n\nexport default includes;","import reduceBy from \"./reduceBy.js\";\n/**\n * Given a function that generates a key, turns a list of objects into an\n * object indexing the objects by the given key. Note that if multiple\n * objects generate the same value for the indexing key only the last value\n * will be included in the generated object.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.19.0\n * @category List\n * @typedefn Idx = String | Int | Symbol\n * @sig Idx a =\u003e (b -\u003e a) -\u003e [b] -\u003e {a: b}\n * @param {Function} fn Function :: a -\u003e Idx\n * @param {Array} array The array of objects to index\n * @return {Object} An object indexing each array element by the given property.\n * @see R.groupBy\n * @example\n *\n *      const list = [{id: 'xyz', title: 'A'}, {id: 'abc', title: 'B'}];\n *      R.indexBy(R.prop('id'), list);\n *      //=\u003e {abc: {id: 'abc', title: 'B'}, xyz: {id: 'xyz', title: 'A'}}\n */\n\nvar indexBy =\n/*#__PURE__*/\nreduceBy(function (acc, elem) {\n  return elem;\n}, null);\nexport default indexBy;","import _curry2 from \"./internal/_curry2.js\";\nimport _indexOf from \"./internal/_indexOf.js\";\nimport _isArray from \"./internal/_isArray.js\";\n/**\n * Returns the position of the first occurrence of an item in an array, or -1\n * if the item is not included in the array. [`R.equals`](#equals) is used to\n * determine equality.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig a -\u003e [a] -\u003e Number\n * @param {*} target The item to find.\n * @param {Array} xs The array to search in.\n * @return {Number} the index of the target, or -1 if the target is not found.\n * @see R.lastIndexOf, R.findIndex\n * @example\n *\n *      R.indexOf(3, [1,2,3,4]); //=\u003e 2\n *      R.indexOf(10, [1,2,3,4]); //=\u003e -1\n */\n\nvar indexOf =\n/*#__PURE__*/\n_curry2(function indexOf(target, xs) {\n  return typeof xs.indexOf === 'function' \u0026\u0026 !_isArray(xs) ? xs.indexOf(target) : _indexOf(xs, target, 0);\n});\n\nexport default indexOf;","import slice from \"./slice.js\";\n/**\n * Returns all but the last element of the given list or string.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category List\n * @sig [a] -\u003e [a]\n * @sig String -\u003e String\n * @param {*} list\n * @return {*}\n * @see R.last, R.head, R.tail\n * @example\n *\n *      R.init([1, 2, 3]);  //=\u003e [1, 2]\n *      R.init([1, 2]);     //=\u003e [1]\n *      R.init([1]);        //=\u003e []\n *      R.init([]);         //=\u003e []\n *\n *      R.init('abc');  //=\u003e 'ab'\n *      R.init('ab');   //=\u003e 'a'\n *      R.init('a');    //=\u003e ''\n *      R.init('');     //=\u003e ''\n */\n\nvar init =\n/*#__PURE__*/\nslice(0, -1);\nexport default init;","import _includesWith from \"./internal/_includesWith.js\";\nimport _curry3 from \"./internal/_curry3.js\";\nimport _filter from \"./internal/_filter.js\";\n/**\n * Takes a predicate `pred`, a list `xs`, and a list `ys`, and returns a list\n * `xs'` comprising each of the elements of `xs` which is equal to one or more\n * elements of `ys` according to `pred`.\n *\n * `pred` must be a binary function expecting an element from each list.\n *\n * `xs`, `ys`, and `xs'` are treated as sets, semantically, so ordering should\n * not be significant, but since `xs'` is ordered the implementation guarantees\n * that its values are in the same order as they appear in `xs`. Duplicates are\n * not removed, so `xs'` may contain duplicates if `xs` contains duplicates.\n *\n * @func\n * @memberOf R\n * @since v0.24.0\n * @category Relation\n * @sig ((a, b) -\u003e Boolean) -\u003e [a] -\u003e [b] -\u003e [a]\n * @param {Function} pred\n * @param {Array} xs\n * @param {Array} ys\n * @return {Array}\n * @see R.intersection\n * @example\n *\n *      R.innerJoin(\n *        (record, id) =\u003e record.id === id,\n *        [{id: 824, name: 'Richie Furay'},\n *         {id: 956, name: 'Dewey Martin'},\n *         {id: 313, name: 'Bruce Palmer'},\n *         {id: 456, name: 'Stephen Stills'},\n *         {id: 177, name: 'Neil Young'}],\n *        [177, 456, 999]\n *      );\n *      //=\u003e [{id: 456, name: 'Stephen Stills'}, {id: 177, name: 'Neil Young'}]\n */\n\nvar innerJoin =\n/*#__PURE__*/\n_curry3(function innerJoin(pred, xs, ys) {\n  return _filter(function (x) {\n    return _includesWith(pred, x, ys);\n  }, xs);\n});\n\nexport default innerJoin;","import _curry3 from \"./internal/_curry3.js\";\n/**\n * Inserts the supplied element into the list, at the specified `index`. _Note that\n\n * this is not destructive_: it returns a copy of the list with the changes.\n * \u003csmall\u003eNo lists have been harmed in the application of this function.\u003c/small\u003e\n *\n * @func\n * @memberOf R\n * @since v0.2.2\n * @category List\n * @sig Number -\u003e a -\u003e [a] -\u003e [a]\n * @param {Number} index The position to insert the element\n * @param {*} elt The element to insert into the Array\n * @param {Array} list The list to insert into\n * @return {Array} A new Array with `elt` inserted at `index`.\n * @example\n *\n *      R.insert(2, 'x', [1,2,3,4]); //=\u003e [1,2,'x',3,4]\n */\n\nvar insert =\n/*#__PURE__*/\n_curry3(function insert(idx, elt, list) {\n  idx = idx \u003c list.length \u0026\u0026 idx \u003e= 0 ? idx : list.length;\n  var result = Array.prototype.slice.call(list, 0);\n  result.splice(idx, 0, elt);\n  return result;\n});\n\nexport default insert;","import _curry3 from \"./internal/_curry3.js\";\n/**\n * Inserts the sub-list into the list, at the specified `index`. _Note that this is not\n * destructive_: it returns a copy of the list with the changes.\n * \u003csmall\u003eNo lists have been harmed in the application of this function.\u003c/small\u003e\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category List\n * @sig Number -\u003e [a] -\u003e [a] -\u003e [a]\n * @param {Number} index The position to insert the sub-list\n * @param {Array} elts The sub-list to insert into the Array\n * @param {Array} list The list to insert the sub-list into\n * @return {Array} A new Array with `elts` inserted starting at `index`.\n * @example\n *\n *      R.insertAll(2, ['x','y','z'], [1,2,3,4]); //=\u003e [1,2,'x','y','z',3,4]\n */\n\nvar insertAll =\n/*#__PURE__*/\n_curry3(function insertAll(idx, elts, list) {\n  idx = idx \u003c list.length \u0026\u0026 idx \u003e= 0 ? idx : list.length;\n  return [].concat(Array.prototype.slice.call(list, 0, idx), elts, Array.prototype.slice.call(list, idx));\n});\n\nexport default insertAll;","import _curry2 from \"./_curry2.js\";\nimport _Set from \"./_Set.js\";\nimport _xfBase from \"./_xfBase.js\";\n\nvar XUniqBy =\n/*#__PURE__*/\nfunction () {\n  function XUniqBy(f, xf) {\n    this.xf = xf;\n    this.f = f;\n    this.set = new _Set();\n  }\n\n  XUniqBy.prototype['@@transducer/init'] = _xfBase.init;\n  XUniqBy.prototype['@@transducer/result'] = _xfBase.result;\n\n  XUniqBy.prototype['@@transducer/step'] = function (result, input) {\n    return this.set.add(this.f(input)) ? this.xf['@@transducer/step'](result, input) : result;\n  };\n\n  return XUniqBy;\n}();\n\nvar _xuniqBy =\n/*#__PURE__*/\n_curry2(function _xuniqBy(f, xf) {\n  return new XUniqBy(f, xf);\n});\n\nexport default _xuniqBy;","import _Set from \"./internal/_Set.js\";\nimport _curry2 from \"./internal/_curry2.js\";\nimport _dispatchable from \"./internal/_dispatchable.js\";\nimport _xuniqBy from \"./internal/_xuniqBy.js\";\n/**\n * Returns a new list containing only one copy of each element in the original\n * list, based upon the value returned by applying the supplied function to\n * each list element. Prefers the first item if the supplied function produces\n * the same value on two items. [`R.equals`](#equals) is used for comparison.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.16.0\n * @category List\n * @sig (a -\u003e b) -\u003e [a] -\u003e [a]\n * @param {Function} fn A function used to produce a value to use during comparisons.\n * @param {Array} list The array to consider.\n * @return {Array} The list of unique items.\n * @example\n *\n *      R.uniqBy(Math.abs, [-1, -5, 2, 10, 1, 2]); //=\u003e [-1, -5, 2, 10]\n */\n\nvar uniqBy =\n/*#__PURE__*/\n_curry2(\n/*#__PURE__*/\n_dispatchable([], _xuniqBy, function (fn, list) {\n  var set = new _Set();\n  var result = [];\n  var idx = 0;\n  var appliedItem, item;\n\n  while (idx \u003c list.length) {\n    item = list[idx];\n    appliedItem = fn(item);\n\n    if (set.add(appliedItem)) {\n      result.push(item);\n    }\n\n    idx += 1;\n  }\n\n  return result;\n}));\n\nexport default uniqBy;","import identity from \"./identity.js\";\nimport uniqBy from \"./uniqBy.js\";\n/**\n * Returns a new list containing only one copy of each element in the original\n * list. [`R.equals`](#equals) is used to determine equality.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig [a] -\u003e [a]\n * @param {Array} list The array to consider.\n * @return {Array} The list of unique items.\n * @example\n *\n *      R.uniq([1, 1, 2, 1]); //=\u003e [1, 2]\n *      R.uniq([1, '1']);     //=\u003e [1, '1']\n *      R.uniq([[42], [42]]); //=\u003e [[42]]\n */\n\nvar uniq =\n/*#__PURE__*/\nuniqBy(identity);\nexport default uniq;","import _includes from \"./internal/_includes.js\";\nimport _curry2 from \"./internal/_curry2.js\";\nimport _filter from \"./internal/_filter.js\";\nimport flip from \"./flip.js\";\nimport uniq from \"./uniq.js\";\n/**\n * Combines two lists into a set (i.e. no duplicates) composed of those\n * elements common to both lists.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Relation\n * @sig [*] -\u003e [*] -\u003e [*]\n * @param {Array} list1 The first list.\n * @param {Array} list2 The second list.\n * @return {Array} The list of elements found in both `list1` and `list2`.\n * @see R.innerJoin\n * @example\n *\n *      R.intersection([1,2,3,4], [7,6,5,4,3]); //=\u003e [4, 3]\n */\n\nvar intersection =\n/*#__PURE__*/\n_curry2(function intersection(list1, list2) {\n  var lookupList, filteredList;\n\n  if (list1.length \u003e list2.length) {\n    lookupList = list1;\n    filteredList = list2;\n  } else {\n    lookupList = list2;\n    filteredList = list1;\n  }\n\n  return uniq(_filter(flip(_includes)(lookupList), filteredList));\n});\n\nexport default intersection;","import _checkForMethod from \"./internal/_checkForMethod.js\";\nimport _curry2 from \"./internal/_curry2.js\";\n/**\n * Creates a new list with the separator interposed between elements.\n *\n * Dispatches to the `intersperse` method of the second argument, if present.\n *\n * @func\n * @memberOf R\n * @since v0.14.0\n * @category List\n * @sig a -\u003e [a] -\u003e [a]\n * @param {*} separator The element to add to the list.\n * @param {Array} list The list to be interposed.\n * @return {Array} The new list.\n * @example\n *\n *      R.intersperse('a', ['b', 'n', 'n', 's']); //=\u003e ['b', 'a', 'n', 'a', 'n', 'a', 's']\n */\n\nvar intersperse =\n/*#__PURE__*/\n_curry2(\n/*#__PURE__*/\n_checkForMethod('intersperse', function intersperse(separator, list) {\n  var out = [];\n  var idx = 0;\n  var length = list.length;\n\n  while (idx \u003c length) {\n    if (idx === length - 1) {\n      out.push(list[idx]);\n    } else {\n      out.push(list[idx], separator);\n    }\n\n    idx += 1;\n  }\n\n  return out;\n}));\n\nexport default intersperse;","import _has from \"./_has.js\"; // Based on https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/assign\n\nfunction _objectAssign(target) {\n  if (target == null) {\n    throw new TypeError('Cannot convert undefined or null to object');\n  }\n\n  var output = Object(target);\n  var idx = 1;\n  var length = arguments.length;\n\n  while (idx \u003c length) {\n    var source = arguments[idx];\n\n    if (source != null) {\n      for (var nextKey in source) {\n        if (_has(nextKey, source)) {\n          output[nextKey] = source[nextKey];\n        }\n      }\n    }\n\n    idx += 1;\n  }\n\n  return output;\n}\n\nexport default typeof Object.assign === 'function' ? Object.assign : _objectAssign;","import _curry2 from \"./internal/_curry2.js\";\n/**\n * Creates an object containing a single key:value pair.\n *\n * @func\n * @memberOf R\n * @since v0.18.0\n * @category Object\n * @sig String -\u003e a -\u003e {String:a}\n * @param {String} key\n * @param {*} val\n * @return {Object}\n * @see R.pair\n * @example\n *\n *      const matchPhrases = R.compose(\n *        R.objOf('must'),\n *        R.map(R.objOf('match_phrase'))\n *      );\n *      matchPhrases(['foo', 'bar', 'baz']); //=\u003e {must: [{match_phrase: 'foo'}, {match_phrase: 'bar'}, {match_phrase: 'baz'}]}\n */\n\nvar objOf =\n/*#__PURE__*/\n_curry2(function objOf(key, val) {\n  var obj = {};\n  obj[key] = val;\n  return obj;\n});\n\nexport default objOf;","import _objectAssign from \"./_objectAssign.js\";\nimport _identity from \"./_identity.js\";\nimport _isArrayLike from \"./_isArrayLike.js\";\nimport _isTransformer from \"./_isTransformer.js\";\nimport objOf from \"../objOf.js\";\nvar _stepCatArray = {\n  '@@transducer/init': Array,\n  '@@transducer/step': function (xs, x) {\n    xs.push(x);\n    return xs;\n  },\n  '@@transducer/result': _identity\n};\nvar _stepCatString = {\n  '@@transducer/init': String,\n  '@@transducer/step': function (a, b) {\n    return a + b;\n  },\n  '@@transducer/result': _identity\n};\nvar _stepCatObject = {\n  '@@transducer/init': Object,\n  '@@transducer/step': function (result, input) {\n    return _objectAssign(result, _isArrayLike(input) ? objOf(input[0], input[1]) : input);\n  },\n  '@@transducer/result': _identity\n};\nexport default function _stepCat(obj) {\n  if (_isTransformer(obj)) {\n    return obj;\n  }\n\n  if (_isArrayLike(obj)) {\n    return _stepCatArray;\n  }\n\n  if (typeof obj === 'string') {\n    return _stepCatString;\n  }\n\n  if (typeof obj === 'object') {\n    return _stepCatObject;\n  }\n\n  throw new Error('Cannot create transformer for ' + obj);\n}","import _clone from \"./internal/_clone.js\";\nimport _curry3 from \"./internal/_curry3.js\";\nimport _isTransformer from \"./internal/_isTransformer.js\";\nimport _reduce from \"./internal/_reduce.js\";\nimport _stepCat from \"./internal/_stepCat.js\";\n/**\n * Transforms the items of the list with the transducer and appends the\n * transformed items to the accumulator using an appropriate iterator function\n * based on the accumulator type.\n *\n * The accumulator can be an array, string, object or a transformer. Iterated\n * items will be appended to arrays and concatenated to strings. Objects will\n * be merged directly or 2-item arrays will be merged as key, value pairs.\n *\n * The accumulator can also be a transformer object that provides a 2-arity\n * reducing iterator function, step, 0-arity initial value function, init, and\n * 1-arity result extraction function result. The step function is used as the\n * iterator function in reduce. The result function is used to convert the\n * final accumulator into the return type and in most cases is R.identity. The\n * init function is used to provide the initial accumulator.\n *\n * The iteration is performed with [`R.reduce`](#reduce) after initializing the\n * transducer.\n *\n * @func\n * @memberOf R\n * @since v0.12.0\n * @category List\n * @sig a -\u003e (b -\u003e b) -\u003e [c] -\u003e a\n * @param {*} acc The initial accumulator value.\n * @param {Function} xf The transducer function. Receives a transformer and returns a transformer.\n * @param {Array} list The list to iterate over.\n * @return {*} The final, accumulated value.\n * @see R.transduce\n * @example\n *\n *      const numbers = [1, 2, 3, 4];\n *      const transducer = R.compose(R.map(R.add(1)), R.take(2));\n *\n *      R.into([], transducer, numbers); //=\u003e [2, 3]\n *\n *      const intoArray = R.into([]);\n *      intoArray(transducer, numbers); //=\u003e [2, 3]\n */\n\nvar into =\n/*#__PURE__*/\n_curry3(function into(acc, xf, list) {\n  return _isTransformer(acc) ? _reduce(xf(acc), acc['@@transducer/init'](), list) : _reduce(xf(_stepCat(acc)), _clone(acc, [], [], false), list);\n});\n\nexport default into;","import _curry1 from \"./internal/_curry1.js\";\nimport _has from \"./internal/_has.js\";\nimport keys from \"./keys.js\";\n/**\n * Same as [`R.invertObj`](#invertObj), however this accounts for objects with\n * duplicate values by putting the values into an array.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category Object\n * @sig {s: x} -\u003e {x: [ s, ... ]}\n * @param {Object} obj The object or array to invert\n * @return {Object} out A new object with keys in an array.\n * @see R.invertObj\n * @example\n *\n *      const raceResultsByFirstName = {\n *        first: 'alice',\n *        second: 'jake',\n *        third: 'alice',\n *      };\n *      R.invert(raceResultsByFirstName);\n *      //=\u003e { 'alice': ['first', 'third'], 'jake':['second'] }\n */\n\nvar invert =\n/*#__PURE__*/\n_curry1(function invert(obj) {\n  var props = keys(obj);\n  var len = props.length;\n  var idx = 0;\n  var out = {};\n\n  while (idx \u003c len) {\n    var key = props[idx];\n    var val = obj[key];\n    var list = _has(val, out) ? out[val] : out[val] = [];\n    list[list.length] = key;\n    idx += 1;\n  }\n\n  return out;\n});\n\nexport default invert;","import _curry1 from \"./internal/_curry1.js\";\nimport keys from \"./keys.js\";\n/**\n * Returns a new object with the keys of the given object as values, and the\n * values of the given object, which are coerced to strings, as keys. Note\n * that the last key found is preferred when handling the same value.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category Object\n * @sig {s: x} -\u003e {x: s}\n * @param {Object} obj The object or array to invert\n * @return {Object} out A new object\n * @see R.invert\n * @example\n *\n *      const raceResults = {\n *        first: 'alice',\n *        second: 'jake'\n *      };\n *      R.invertObj(raceResults);\n *      //=\u003e { 'alice': 'first', 'jake':'second' }\n *\n *      // Alternatively:\n *      const raceResults = ['alice', 'jake'];\n *      R.invertObj(raceResults);\n *      //=\u003e { 'alice': '0', 'jake':'1' }\n */\n\nvar invertObj =\n/*#__PURE__*/\n_curry1(function invertObj(obj) {\n  var props = keys(obj);\n  var len = props.length;\n  var idx = 0;\n  var out = {};\n\n  while (idx \u003c len) {\n    var key = props[idx];\n    out[obj[key]] = key;\n    idx += 1;\n  }\n\n  return out;\n});\n\nexport default invertObj;","import _curry2 from \"./internal/_curry2.js\";\nimport _isFunction from \"./internal/_isFunction.js\";\nimport curryN from \"./curryN.js\";\nimport toString from \"./toString.js\";\n/**\n * Turns a named method with a specified arity into a function that can be\n * called directly supplied with arguments and a target object.\n *\n * The returned function is curried and accepts `arity + 1` parameters where\n * the final parameter is the target object.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Function\n * @sig Number -\u003e String -\u003e (a -\u003e b -\u003e ... -\u003e n -\u003e Object -\u003e *)\n * @param {Number} arity Number of arguments the returned function should take\n *        before the target object.\n * @param {String} method Name of any of the target object's methods to call.\n * @return {Function} A new curried function.\n * @see R.construct\n * @example\n *\n *      const sliceFrom = R.invoker(1, 'slice');\n *      sliceFrom(6, 'abcdefghijklm'); //=\u003e 'ghijklm'\n *      const sliceFrom6 = R.invoker(2, 'slice')(6);\n *      sliceFrom6(8, 'abcdefghijklm'); //=\u003e 'gh'\n *\n *      const dog = {\n *        speak: async () =\u003e 'Woof!'\n *      };\n *      const speak = R.invoker(0, 'speak');\n *      speak(dog).then(console.log) //~\u003e 'Woof!'\n *\n * @symb R.invoker(0, 'method')(o) = o['method']()\n * @symb R.invoker(1, 'method')(a, o) = o['method'](a)\n * @symb R.invoker(2, 'method')(a, b, o) = o['method'](a, b)\n */\n\nvar invoker =\n/*#__PURE__*/\n_curry2(function invoker(arity, method) {\n  return curryN(arity + 1, function () {\n    var target = arguments[arity];\n\n    if (target != null \u0026\u0026 _isFunction(target[method])) {\n      return target[method].apply(target, Array.prototype.slice.call(arguments, 0, arity));\n    }\n\n    throw new TypeError(toString(target) + ' does not have a method named \"' + method + '\"');\n  });\n});\n\nexport default invoker;","import _curry2 from \"./internal/_curry2.js\";\n/**\n * See if an object (i.e. `val`) is an instance of the supplied constructor. This\n * function will check up the inheritance chain, if any.\n * If `val` was created using `Object.create`, `R.is(Object, val) === true`.\n *\n * @func\n * @memberOf R\n * @since v0.3.0\n * @category Type\n * @sig (* -\u003e {*}) -\u003e a -\u003e Boolean\n * @param {Object} ctor A constructor\n * @param {*} val The value to test\n * @return {Boolean}\n * @example\n *\n *      R.is(Object, {}); //=\u003e true\n *      R.is(Number, 1); //=\u003e true\n *      R.is(Object, 1); //=\u003e false\n *      R.is(String, 's'); //=\u003e true\n *      R.is(String, new String('')); //=\u003e true\n *      R.is(Object, new String('')); //=\u003e true\n *      R.is(Object, 's'); //=\u003e false\n *      R.is(Number, {}); //=\u003e false\n */\n\nvar is =\n/*#__PURE__*/\n_curry2(function is(Ctor, val) {\n  return val instanceof Ctor || val != null \u0026\u0026 (val.constructor === Ctor || Ctor.name === 'Object' \u0026\u0026 typeof val === 'object');\n});\n\nexport default is;","import _curry1 from \"./internal/_curry1.js\";\nimport empty from \"./empty.js\";\nimport equals from \"./equals.js\";\n/**\n * Returns `true` if the given value is its type's empty value; `false`\n * otherwise.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Logic\n * @sig a -\u003e Boolean\n * @param {*} x\n * @return {Boolean}\n * @see R.empty\n * @example\n *\n *      R.isEmpty([1, 2, 3]);           //=\u003e false\n *      R.isEmpty([]);                  //=\u003e true\n *      R.isEmpty('');                  //=\u003e true\n *      R.isEmpty(null);                //=\u003e false\n *      R.isEmpty({});                  //=\u003e true\n *      R.isEmpty({length: 0});         //=\u003e false\n *      R.isEmpty(Uint8Array.from('')); //=\u003e true\n */\n\nvar isEmpty =\n/*#__PURE__*/\n_curry1(function isEmpty(x) {\n  return x != null \u0026\u0026 equals(x, empty(x));\n});\n\nexport default isEmpty;","import invoker from \"./invoker.js\";\n/**\n * Returns a string made by inserting the `separator` between each element and\n * concatenating all the elements into a single string.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig String -\u003e [a] -\u003e String\n * @param {Number|String} separator The string used to separate the elements.\n * @param {Array} xs The elements to join into a string.\n * @return {String} str The string made by concatenating `xs` with `separator`.\n * @see R.split\n * @example\n *\n *      const spacer = R.join(' ');\n *      spacer(['a', 2, 3.4]);   //=\u003e 'a 2 3.4'\n *      R.join('|', [1, 2, 3]);    //=\u003e '1|2|3'\n */\n\nvar join =\n/*#__PURE__*/\ninvoker(1, 'join');\nexport default join;","import _curry1 from \"./internal/_curry1.js\";\nimport converge from \"./converge.js\";\n/**\n * juxt applies a list of functions to a list of values.\n *\n * @func\n * @memberOf R\n * @since v0.19.0\n * @category Function\n * @sig [(a, b, ..., m) -\u003e n] -\u003e ((a, b, ..., m) -\u003e [n])\n * @param {Array} fns An array of functions\n * @return {Function} A function that returns a list of values after applying each of the original `fns` to its parameters.\n * @see R.applySpec\n * @example\n *\n *      const getRange = R.juxt([Math.min, Math.max]);\n *      getRange(3, 4, 9, -3); //=\u003e [-3, 9]\n * @symb R.juxt([f, g, h])(a, b) = [f(a, b), g(a, b), h(a, b)]\n */\n\nvar juxt =\n/*#__PURE__*/\n_curry1(function juxt(fns) {\n  return converge(function () {\n    return Array.prototype.slice.call(arguments, 0);\n  }, fns);\n});\n\nexport default juxt;","import _curry1 from \"./internal/_curry1.js\";\n/**\n * Returns a list containing the names of all the properties of the supplied\n * object, including prototype properties.\n * Note that the order of the output array is not guaranteed to be consistent\n * across different JS platforms.\n *\n * @func\n * @memberOf R\n * @since v0.2.0\n * @category Object\n * @sig {k: v} -\u003e [k]\n * @param {Object} obj The object to extract properties from\n * @return {Array} An array of the object's own and prototype properties.\n * @see R.keys, R.valuesIn\n * @example\n *\n *      const F = function() { this.x = 'X'; };\n *      F.prototype.y = 'Y';\n *      const f = new F();\n *      R.keysIn(f); //=\u003e ['x', 'y']\n */\n\nvar keysIn =\n/*#__PURE__*/\n_curry1(function keysIn(obj) {\n  var prop;\n  var ks = [];\n\n  for (prop in obj) {\n    ks[ks.length] = prop;\n  }\n\n  return ks;\n});\n\nexport default keysIn;","import _curry2 from \"./internal/_curry2.js\";\nimport _isArray from \"./internal/_isArray.js\";\nimport equals from \"./equals.js\";\n/**\n * Returns the position of the last occurrence of an item in an array, or -1 if\n * the item is not included in the array. [`R.equals`](#equals) is used to\n * determine equality.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig a -\u003e [a] -\u003e Number\n * @param {*} target The item to find.\n * @param {Array} xs The array to search in.\n * @return {Number} the index of the target, or -1 if the target is not found.\n * @see R.indexOf, R.findLastIndex\n * @example\n *\n *      R.lastIndexOf(3, [-1,3,3,0,1,2,3,4]); //=\u003e 6\n *      R.lastIndexOf(10, [1,2,3,4]); //=\u003e -1\n */\n\nvar lastIndexOf =\n/*#__PURE__*/\n_curry2(function lastIndexOf(target, xs) {\n  if (typeof xs.lastIndexOf === 'function' \u0026\u0026 !_isArray(xs)) {\n    return xs.lastIndexOf(target);\n  } else {\n    var idx = xs.length - 1;\n\n    while (idx \u003e= 0) {\n      if (equals(xs[idx], target)) {\n        return idx;\n      }\n\n      idx -= 1;\n    }\n\n    return -1;\n  }\n});\n\nexport default lastIndexOf;","export default function _isNumber(x) {\n  return Object.prototype.toString.call(x) === '[object Number]';\n}","import _curry1 from \"./internal/_curry1.js\";\nimport _isNumber from \"./internal/_isNumber.js\";\n/**\n * Returns the number of elements in the array by returning `list.length`.\n *\n * @func\n * @memberOf R\n * @since v0.3.0\n * @category List\n * @sig [a] -\u003e Number\n * @param {Array} list The array to inspect.\n * @return {Number} The length of the array.\n * @example\n *\n *      R.length([]); //=\u003e 0\n *      R.length([1, 2, 3]); //=\u003e 3\n */\n\nvar length =\n/*#__PURE__*/\n_curry1(function length(list) {\n  return list != null \u0026\u0026 _isNumber(list.length) ? list.length : NaN;\n});\n\nexport default length;","import _curry2 from \"./internal/_curry2.js\";\nimport map from \"./map.js\";\n/**\n * Returns a lens for the given getter and setter functions. The getter \"gets\"\n * the value of the focus; the setter \"sets\" the value of the focus. The setter\n * should not mutate the data structure.\n *\n * @func\n * @memberOf R\n * @since v0.8.0\n * @category Object\n * @typedefn Lens s a = Functor f =\u003e (a -\u003e f a) -\u003e s -\u003e f s\n * @sig (s -\u003e a) -\u003e ((a, s) -\u003e s) -\u003e Lens s a\n * @param {Function} getter\n * @param {Function} setter\n * @return {Lens}\n * @see R.view, R.set, R.over, R.lensIndex, R.lensProp\n * @example\n *\n *      const xLens = R.lens(R.prop('x'), R.assoc('x'));\n *\n *      R.view(xLens, {x: 1, y: 2});            //=\u003e 1\n *      R.set(xLens, 4, {x: 1, y: 2});          //=\u003e {x: 4, y: 2}\n *      R.over(xLens, R.negate, {x: 1, y: 2});  //=\u003e {x: -1, y: 2}\n */\n\nvar lens =\n/*#__PURE__*/\n_curry2(function lens(getter, setter) {\n  return function (toFunctorFn) {\n    return function (target) {\n      return map(function (focus) {\n        return setter(focus, target);\n      }, toFunctorFn(getter(target)));\n    };\n  };\n});\n\nexport default lens;","import _curry3 from \"./internal/_curry3.js\";\nimport adjust from \"./adjust.js\";\nimport always from \"./always.js\";\n/**\n * Returns a new copy of the array with the element at the provided index\n * replaced with the given value.\n *\n * @func\n * @memberOf R\n * @since v0.14.0\n * @category List\n * @sig Number -\u003e a -\u003e [a] -\u003e [a]\n * @param {Number} idx The index to update.\n * @param {*} x The value to exist at the given index of the returned array.\n * @param {Array|Arguments} list The source array-like object to be updated.\n * @return {Array} A copy of `list` with the value at index `idx` replaced with `x`.\n * @see R.adjust\n * @example\n *\n *      R.update(1, '_', ['a', 'b', 'c']);      //=\u003e ['a', '_', 'c']\n *      R.update(-1, '_', ['a', 'b', 'c']);     //=\u003e ['a', 'b', '_']\n * @symb R.update(-1, a, [b, c]) = [b, a]\n * @symb R.update(0, a, [b, c]) = [a, c]\n * @symb R.update(1, a, [b, c]) = [b, a]\n */\n\nvar update =\n/*#__PURE__*/\n_curry3(function update(idx, x, list) {\n  return adjust(idx, always(x), list);\n});\n\nexport default update;","import _curry1 from \"./internal/_curry1.js\";\nimport lens from \"./lens.js\";\nimport nth from \"./nth.js\";\nimport update from \"./update.js\";\n/**\n * Returns a lens whose focus is the specified index.\n *\n * @func\n * @memberOf R\n * @since v0.14.0\n * @category Object\n * @typedefn Lens s a = Functor f =\u003e (a -\u003e f a) -\u003e s -\u003e f s\n * @sig Number -\u003e Lens s a\n * @param {Number} n\n * @return {Lens}\n * @see R.view, R.set, R.over, R.nth\n * @example\n *\n *      const headLens = R.lensIndex(0);\n *\n *      R.view(headLens, ['a', 'b', 'c']);            //=\u003e 'a'\n *      R.set(headLens, 'x', ['a', 'b', 'c']);        //=\u003e ['x', 'b', 'c']\n *      R.over(headLens, R.toUpper, ['a', 'b', 'c']); //=\u003e ['A', 'b', 'c']\n */\n\nvar lensIndex =\n/*#__PURE__*/\n_curry1(function lensIndex(n) {\n  return lens(nth(n), update(n));\n});\n\nexport default lensIndex;","import _curry2 from \"./internal/_curry2.js\";\nimport _isInteger from \"./internal/_isInteger.js\";\nimport nth from \"./nth.js\";\n/**\n * Retrieves the values at given paths of an object.\n *\n * @func\n * @memberOf R\n * @since v0.27.1\n * @category Object\n * @typedefn Idx = [String | Int | Symbol]\n * @sig [Idx] -\u003e {a} -\u003e [a | Undefined]\n * @param {Array} pathsArray The array of paths to be fetched.\n * @param {Object} obj The object to retrieve the nested properties from.\n * @return {Array} A list consisting of values at paths specified by \"pathsArray\".\n * @see R.path\n * @example\n *\n *      R.paths([['a', 'b'], ['p', 0, 'q']], {a: {b: 2}, p: [{q: 3}]}); //=\u003e [2, 3]\n *      R.paths([['a', 'b'], ['p', 'r']], {a: {b: 2}, p: [{q: 3}]}); //=\u003e [2, undefined]\n */\n\nvar paths =\n/*#__PURE__*/\n_curry2(function paths(pathsArray, obj) {\n  return pathsArray.map(function (paths) {\n    var val = obj;\n    var idx = 0;\n    var p;\n\n    while (idx \u003c paths.length) {\n      if (val == null) {\n        return;\n      }\n\n      p = paths[idx];\n      val = _isInteger(p) ? nth(p, val) : val[p];\n      idx += 1;\n    }\n\n    return val;\n  });\n});\n\nexport default paths;","import _curry2 from \"./internal/_curry2.js\";\nimport paths from \"./paths.js\";\n/**\n * Retrieve the value at a given path.\n *\n * @func\n * @memberOf R\n * @since v0.2.0\n * @category Object\n * @typedefn Idx = String | Int | Symbol\n * @sig [Idx] -\u003e {a} -\u003e a | Undefined\n * @param {Array} path The path to use.\n * @param {Object} obj The object to retrieve the nested property from.\n * @return {*} The data at `path`.\n * @see R.prop, R.nth\n * @example\n *\n *      R.path(['a', 'b'], {a: {b: 2}}); //=\u003e 2\n *      R.path(['a', 'b'], {c: {b: 2}}); //=\u003e undefined\n *      R.path(['a', 'b', 0], {a: {b: [1, 2, 3]}}); //=\u003e 1\n *      R.path(['a', 'b', -2], {a: {b: [1, 2, 3]}}); //=\u003e 2\n */\n\nvar path =\n/*#__PURE__*/\n_curry2(function path(pathAr, obj) {\n  return paths([pathAr], obj)[0];\n});\n\nexport default path;","import _curry1 from \"./internal/_curry1.js\";\nimport assocPath from \"./assocPath.js\";\nimport lens from \"./lens.js\";\nimport path from \"./path.js\";\n/**\n * Returns a lens whose focus is the specified path.\n *\n * @func\n * @memberOf R\n * @since v0.19.0\n * @category Object\n * @typedefn Idx = String | Int | Symbol\n * @typedefn Lens s a = Functor f =\u003e (a -\u003e f a) -\u003e s -\u003e f s\n * @sig [Idx] -\u003e Lens s a\n * @param {Array} path The path to use.\n * @return {Lens}\n * @see R.view, R.set, R.over\n * @example\n *\n *      const xHeadYLens = R.lensPath(['x', 0, 'y']);\n *\n *      R.view(xHeadYLens, {x: [{y: 2, z: 3}, {y: 4, z: 5}]});\n *      //=\u003e 2\n *      R.set(xHeadYLens, 1, {x: [{y: 2, z: 3}, {y: 4, z: 5}]});\n *      //=\u003e {x: [{y: 1, z: 3}, {y: 4, z: 5}]}\n *      R.over(xHeadYLens, R.negate, {x: [{y: 2, z: 3}, {y: 4, z: 5}]});\n *      //=\u003e {x: [{y: -2, z: 3}, {y: 4, z: 5}]}\n */\n\nvar lensPath =\n/*#__PURE__*/\n_curry1(function lensPath(p) {\n  return lens(path(p), assocPath(p));\n});\n\nexport default lensPath;","import _curry1 from \"./internal/_curry1.js\";\nimport assoc from \"./assoc.js\";\nimport lens from \"./lens.js\";\nimport prop from \"./prop.js\";\n/**\n * Returns a lens whose focus is the specified property.\n *\n * @func\n * @memberOf R\n * @since v0.14.0\n * @category Object\n * @typedefn Lens s a = Functor f =\u003e (a -\u003e f a) -\u003e s -\u003e f s\n * @sig String -\u003e Lens s a\n * @param {String} k\n * @return {Lens}\n * @see R.view, R.set, R.over\n * @example\n *\n *      const xLens = R.lensProp('x');\n *\n *      R.view(xLens, {x: 1, y: 2});            //=\u003e 1\n *      R.set(xLens, 4, {x: 1, y: 2});          //=\u003e {x: 4, y: 2}\n *      R.over(xLens, R.negate, {x: 1, y: 2});  //=\u003e {x: -1, y: 2}\n */\n\nvar lensProp =\n/*#__PURE__*/\n_curry1(function lensProp(k) {\n  return lens(prop(k), assoc(k));\n});\n\nexport default lensProp;","import _curry2 from \"./internal/_curry2.js\";\n/**\n * Returns `true` if the first argument is less than the second; `false`\n * otherwise.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Relation\n * @sig Ord a =\u003e a -\u003e a -\u003e Boolean\n * @param {*} a\n * @param {*} b\n * @return {Boolean}\n * @see R.gt\n * @example\n *\n *      R.lt(2, 1); //=\u003e false\n *      R.lt(2, 2); //=\u003e false\n *      R.lt(2, 3); //=\u003e true\n *      R.lt('a', 'z'); //=\u003e true\n *      R.lt('z', 'a'); //=\u003e false\n */\n\nvar lt =\n/*#__PURE__*/\n_curry2(function lt(a, b) {\n  return a \u003c b;\n});\n\nexport default lt;","import _curry2 from \"./internal/_curry2.js\";\n/**\n * Returns `true` if the first argument is less than or equal to the second;\n * `false` otherwise.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Relation\n * @sig Ord a =\u003e a -\u003e a -\u003e Boolean\n * @param {Number} a\n * @param {Number} b\n * @return {Boolean}\n * @see R.gte\n * @example\n *\n *      R.lte(2, 1); //=\u003e false\n *      R.lte(2, 2); //=\u003e true\n *      R.lte(2, 3); //=\u003e true\n *      R.lte('a', 'z'); //=\u003e true\n *      R.lte('z', 'a'); //=\u003e false\n */\n\nvar lte =\n/*#__PURE__*/\n_curry2(function lte(a, b) {\n  return a \u003c= b;\n});\n\nexport default lte;","import _curry3 from \"./internal/_curry3.js\";\n/**\n * The `mapAccum` function behaves like a combination of map and reduce; it\n * applies a function to each element of a list, passing an accumulating\n * parameter from left to right, and returning a final value of this\n * accumulator together with the new list.\n *\n * The iterator function receives two arguments, *acc* and *value*, and should\n * return a tuple *[acc, value]*.\n *\n * @func\n * @memberOf R\n * @since v0.10.0\n * @category List\n * @sig ((acc, x) -\u003e (acc, y)) -\u003e acc -\u003e [x] -\u003e (acc, [y])\n * @param {Function} fn The function to be called on every element of the input `list`.\n * @param {*} acc The accumulator value.\n * @param {Array} list The list to iterate over.\n * @return {*} The final, accumulated value.\n * @see R.scan, R.addIndex, R.mapAccumRight\n * @example\n *\n *      const digits = ['1', '2', '3', '4'];\n *      const appender = (a, b) =\u003e [a + b, a + b];\n *\n *      R.mapAccum(appender, 0, digits); //=\u003e ['01234', ['01', '012', '0123', '01234']]\n * @symb R.mapAccum(f, a, [b, c, d]) = [\n *   f(f(f(a, b)[0], c)[0], d)[0],\n *   [\n *     f(a, b)[1],\n *     f(f(a, b)[0], c)[1],\n *     f(f(f(a, b)[0], c)[0], d)[1]\n *   ]\n * ]\n */\n\nvar mapAccum =\n/*#__PURE__*/\n_curry3(function mapAccum(fn, acc, list) {\n  var idx = 0;\n  var len = list.length;\n  var result = [];\n  var tuple = [acc];\n\n  while (idx \u003c len) {\n    tuple = fn(tuple[0], list[idx]);\n    result[idx] = tuple[1];\n    idx += 1;\n  }\n\n  return [tuple[0], result];\n});\n\nexport default mapAccum;","import _curry3 from \"./internal/_curry3.js\";\n/**\n * The `mapAccumRight` function behaves like a combination of map and reduce; it\n * applies a function to each element of a list, passing an accumulating\n * parameter from right to left, and returning a final value of this\n * accumulator together with the new list.\n *\n * Similar to [`mapAccum`](#mapAccum), except moves through the input list from\n * the right to the left.\n *\n * The iterator function receives two arguments, *acc* and *value*, and should\n * return a tuple *[acc, value]*.\n *\n * @func\n * @memberOf R\n * @since v0.10.0\n * @category List\n * @sig ((acc, x) -\u003e (acc, y)) -\u003e acc -\u003e [x] -\u003e (acc, [y])\n * @param {Function} fn The function to be called on every element of the input `list`.\n * @param {*} acc The accumulator value.\n * @param {Array} list The list to iterate over.\n * @return {*} The final, accumulated value.\n * @see R.addIndex, R.mapAccum\n * @example\n *\n *      const digits = ['1', '2', '3', '4'];\n *      const appender = (a, b) =\u003e [b + a, b + a];\n *\n *      R.mapAccumRight(appender, 5, digits); //=\u003e ['12345', ['12345', '2345', '345', '45']]\n * @symb R.mapAccumRight(f, a, [b, c, d]) = [\n *   f(f(f(a, d)[0], c)[0], b)[0],\n *   [\n *     f(a, d)[1],\n *     f(f(a, d)[0], c)[1],\n *     f(f(f(a, d)[0], c)[0], b)[1]\n *   ]\n * ]\n */\n\nvar mapAccumRight =\n/*#__PURE__*/\n_curry3(function mapAccumRight(fn, acc, list) {\n  var idx = list.length - 1;\n  var result = [];\n  var tuple = [acc];\n\n  while (idx \u003e= 0) {\n    tuple = fn(tuple[0], list[idx]);\n    result[idx] = tuple[1];\n    idx -= 1;\n  }\n\n  return [tuple[0], result];\n});\n\nexport default mapAccumRight;","import _curry2 from \"./internal/_curry2.js\";\nimport _reduce from \"./internal/_reduce.js\";\nimport keys from \"./keys.js\";\n/**\n * An Object-specific version of [`map`](#map). The function is applied to three\n * arguments: *(value, key, obj)*. If only the value is significant, use\n * [`map`](#map) instead.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category Object\n * @sig ((*, String, Object) -\u003e *) -\u003e Object -\u003e Object\n * @param {Function} fn\n * @param {Object} obj\n * @return {Object}\n * @see R.map\n * @example\n *\n *      const xyz = { x: 1, y: 2, z: 3 };\n *      const prependKeyAndDouble = (num, key, obj) =\u003e key + (num * 2);\n *\n *      R.mapObjIndexed(prependKeyAndDouble, xyz); //=\u003e { x: 'x2', y: 'y4', z: 'z6' }\n */\n\nvar mapObjIndexed =\n/*#__PURE__*/\n_curry2(function mapObjIndexed(fn, obj) {\n  return _reduce(function (acc, key) {\n    acc[key] = fn(obj[key], key, obj);\n    return acc;\n  }, {}, keys(obj));\n});\n\nexport default mapObjIndexed;","import _curry2 from \"./internal/_curry2.js\";\n/**\n * Tests a regular expression against a String. Note that this function will\n * return an empty array when there are no matches. This differs from\n * [`String.prototype.match`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/match)\n * which returns `null` when there are no matches.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category String\n * @sig RegExp -\u003e String -\u003e [String | Undefined]\n * @param {RegExp} rx A regular expression.\n * @param {String} str The string to match against\n * @return {Array} The list of matches or empty array.\n * @see R.test\n * @example\n *\n *      R.match(/([a-z]a)/g, 'bananas'); //=\u003e ['ba', 'na', 'na']\n *      R.match(/a/, 'b'); //=\u003e []\n *      R.match(/a/, null); //=\u003e TypeError: null does not have a method named \"match\"\n */\n\nvar match =\n/*#__PURE__*/\n_curry2(function match(rx, str) {\n  return str.match(rx) || [];\n});\n\nexport default match;","import _curry2 from \"./internal/_curry2.js\";\nimport _isInteger from \"./internal/_isInteger.js\";\n/**\n * `mathMod` behaves like the modulo operator should mathematically, unlike the\n * `%` operator (and by extension, [`R.modulo`](#modulo)). So while\n * `-17 % 5` is `-2`, `mathMod(-17, 5)` is `3`. `mathMod` requires Integer\n * arguments, and returns NaN when the modulus is zero or negative.\n *\n * @func\n * @memberOf R\n * @since v0.3.0\n * @category Math\n * @sig Number -\u003e Number -\u003e Number\n * @param {Number} m The dividend.\n * @param {Number} p the modulus.\n * @return {Number} The result of `b mod a`.\n * @see R.modulo\n * @example\n *\n *      R.mathMod(-17, 5);  //=\u003e 3\n *      R.mathMod(17, 5);   //=\u003e 2\n *      R.mathMod(17, -5);  //=\u003e NaN\n *      R.mathMod(17, 0);   //=\u003e NaN\n *      R.mathMod(17.2, 5); //=\u003e NaN\n *      R.mathMod(17, 5.3); //=\u003e NaN\n *\n *      const clock = R.mathMod(R.__, 12);\n *      clock(15); //=\u003e 3\n *      clock(24); //=\u003e 0\n *\n *      const seventeenMod = R.mathMod(17);\n *      seventeenMod(3);  //=\u003e 2\n *      seventeenMod(4);  //=\u003e 1\n *      seventeenMod(10); //=\u003e 7\n */\n\nvar mathMod =\n/*#__PURE__*/\n_curry2(function mathMod(m, p) {\n  if (!_isInteger(m)) {\n    return NaN;\n  }\n\n  if (!_isInteger(p) || p \u003c 1) {\n    return NaN;\n  }\n\n  return (m % p + p) % p;\n});\n\nexport default mathMod;","import _curry3 from \"./internal/_curry3.js\";\n/**\n * Takes a function and two values, and returns whichever value produces the\n * larger result when passed to the provided function.\n *\n * @func\n * @memberOf R\n * @since v0.8.0\n * @category Relation\n * @sig Ord b =\u003e (a -\u003e b) -\u003e a -\u003e a -\u003e a\n * @param {Function} f\n * @param {*} a\n * @param {*} b\n * @return {*}\n * @see R.max, R.minBy\n * @example\n *\n *      //  square :: Number -\u003e Number\n *      const square = n =\u003e n * n;\n *\n *      R.maxBy(square, -3, 2); //=\u003e -3\n *\n *      R.reduce(R.maxBy(square), 0, [3, -5, 4, 1, -2]); //=\u003e -5\n *      R.reduce(R.maxBy(square), 0, []); //=\u003e 0\n */\n\nvar maxBy =\n/*#__PURE__*/\n_curry3(function maxBy(f, a, b) {\n  return f(b) \u003e f(a) ? b : a;\n});\n\nexport default maxBy;","import add from \"./add.js\";\nimport reduce from \"./reduce.js\";\n/**\n * Adds together all the elements of a list.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Math\n * @sig [Number] -\u003e Number\n * @param {Array} list An array of numbers\n * @return {Number} The sum of all the numbers in the list.\n * @see R.reduce\n * @example\n *\n *      R.sum([2,4,6,8,100,1]); //=\u003e 121\n */\n\nvar sum =\n/*#__PURE__*/\nreduce(add, 0);\nexport default sum;","import _curry1 from \"./internal/_curry1.js\";\nimport sum from \"./sum.js\";\n/**\n * Returns the mean of the given list of numbers.\n *\n * @func\n * @memberOf R\n * @since v0.14.0\n * @category Math\n * @sig [Number] -\u003e Number\n * @param {Array} list\n * @return {Number}\n * @see R.median\n * @example\n *\n *      R.mean([2, 7, 9]); //=\u003e 6\n *      R.mean([]); //=\u003e NaN\n */\n\nvar mean =\n/*#__PURE__*/\n_curry1(function mean(list) {\n  return sum(list) / list.length;\n});\n\nexport default mean;","import _curry1 from \"./internal/_curry1.js\";\nimport mean from \"./mean.js\";\n/**\n * Returns the median of the given list of numbers.\n *\n * @func\n * @memberOf R\n * @since v0.14.0\n * @category Math\n * @sig [Number] -\u003e Number\n * @param {Array} list\n * @return {Number}\n * @see R.mean\n * @example\n *\n *      R.median([2, 9, 7]); //=\u003e 7\n *      R.median([7, 2, 10, 9]); //=\u003e 8\n *      R.median([]); //=\u003e NaN\n */\n\nvar median =\n/*#__PURE__*/\n_curry1(function median(list) {\n  var len = list.length;\n\n  if (len === 0) {\n    return NaN;\n  }\n\n  var width = 2 - len % 2;\n  var idx = (len - width) / 2;\n  return mean(Array.prototype.slice.call(list, 0).sort(function (a, b) {\n    return a \u003c b ? -1 : a \u003e b ? 1 : 0;\n  }).slice(idx, idx + width));\n});\n\nexport default median;","import _arity from \"./internal/_arity.js\";\nimport _curry2 from \"./internal/_curry2.js\";\nimport _has from \"./internal/_has.js\";\n/**\n * Creates a new function that, when invoked, caches the result of calling `fn`\n * for a given argument set and returns the result. Subsequent calls to the\n * memoized `fn` with the same argument set will not result in an additional\n * call to `fn`; instead, the cached result for that set of arguments will be\n * returned.\n *\n * Care must be taken when implementing key generation to avoid key collision,\n * or if tracking references, memory leaks and mutating arguments.\n *\n * @func\n * @memberOf R\n * @since v0.24.0\n * @category Function\n * @sig (*... -\u003e String) -\u003e (*... -\u003e a) -\u003e (*... -\u003e a)\n * @param {Function} fn The function to generate the cache key.\n * @param {Function} fn The function to memoize.\n * @return {Function} Memoized version of `fn`.\n * @example\n *\n *      let count = 0;\n *      const factorial = R.memoizeWith(Number, n =\u003e {\n *        count += 1;\n *        return R.product(R.range(1, n + 1));\n *      });\n *      factorial(5); //=\u003e 120\n *      factorial(5); //=\u003e 120\n *      factorial(5); //=\u003e 120\n *      count; //=\u003e 1\n */\n\nvar memoizeWith =\n/*#__PURE__*/\n_curry2(function memoizeWith(mFn, fn) {\n  var cache = {};\n  return _arity(fn.length, function () {\n    var key = mFn.apply(this, arguments);\n\n    if (!_has(key, cache)) {\n      cache[key] = fn.apply(this, arguments);\n    }\n\n    return cache[key];\n  });\n});\n\nexport default memoizeWith;","import _objectAssign from \"./internal/_objectAssign.js\";\nimport _curry1 from \"./internal/_curry1.js\";\n/**\n * Creates one new object with the own properties from a list of objects.\n * If a key exists in more than one object, the value from the last\n * object it exists in will be used.\n *\n * @func\n * @memberOf R\n * @since v0.10.0\n * @category List\n * @sig [{k: v}] -\u003e {k: v}\n * @param {Array} list An array of objects\n * @return {Object} A merged object.\n * @see R.reduce\n * @example\n *\n *      R.mergeAll([{foo:1},{bar:2},{baz:3}]); //=\u003e {foo:1,bar:2,baz:3}\n *      R.mergeAll([{foo:1},{foo:2},{bar:2}]); //=\u003e {foo:2,bar:2}\n * @symb R.mergeAll([{ x: 1 }, { y: 2 }, { z: 3 }]) = { x: 1, y: 2, z: 3 }\n */\n\nvar mergeAll =\n/*#__PURE__*/\n_curry1(function mergeAll(list) {\n  return _objectAssign.apply(null, [{}].concat(list));\n});\n\nexport default mergeAll;","import _curry3 from \"./internal/_curry3.js\";\nimport _has from \"./internal/_has.js\";\n/**\n * Creates a new object with the own properties of the two provided objects. If\n * a key exists in both objects, the provided function is applied to the key\n * and the values associated with the key in each object, with the result being\n * used as the value associated with the key in the returned object.\n *\n * @func\n * @memberOf R\n * @since v0.19.0\n * @category Object\n * @sig ((String, a, a) -\u003e a) -\u003e {a} -\u003e {a} -\u003e {a}\n * @param {Function} fn\n * @param {Object} l\n * @param {Object} r\n * @return {Object}\n * @see R.mergeDeepWithKey, R.merge, R.mergeWith\n * @example\n *\n *      let concatValues = (k, l, r) =\u003e k == 'values' ? R.concat(l, r) : r\n *      R.mergeWithKey(concatValues,\n *                     { a: true, thing: 'foo', values: [10, 20] },\n *                     { b: true, thing: 'bar', values: [15, 35] });\n *      //=\u003e { a: true, b: true, thing: 'bar', values: [10, 20, 15, 35] }\n * @symb R.mergeWithKey(f, { x: 1, y: 2 }, { y: 5, z: 3 }) = { x: 1, y: f('y', 2, 5), z: 3 }\n */\n\nvar mergeWithKey =\n/*#__PURE__*/\n_curry3(function mergeWithKey(fn, l, r) {\n  var result = {};\n  var k;\n\n  for (k in l) {\n    if (_has(k, l)) {\n      result[k] = _has(k, r) ? fn(k, l[k], r[k]) : l[k];\n    }\n  }\n\n  for (k in r) {\n    if (_has(k, r) \u0026\u0026 !_has(k, result)) {\n      result[k] = r[k];\n    }\n  }\n\n  return result;\n});\n\nexport default mergeWithKey;","import _curry3 from \"./internal/_curry3.js\";\nimport _isObject from \"./internal/_isObject.js\";\nimport mergeWithKey from \"./mergeWithKey.js\";\n/**\n * Creates a new object with the own properties of the two provided objects.\n * If a key exists in both objects:\n * - and both associated values are also objects then the values will be\n *   recursively merged.\n * - otherwise the provided function is applied to the key and associated values\n *   using the resulting value as the new value associated with the key.\n * If a key only exists in one object, the value will be associated with the key\n * of the resulting object.\n *\n * @func\n * @memberOf R\n * @since v0.24.0\n * @category Object\n * @sig ((String, a, a) -\u003e a) -\u003e {a} -\u003e {a} -\u003e {a}\n * @param {Function} fn\n * @param {Object} lObj\n * @param {Object} rObj\n * @return {Object}\n * @see R.mergeWithKey, R.mergeDeepWith\n * @example\n *\n *      let concatValues = (k, l, r) =\u003e k == 'values' ? R.concat(l, r) : r\n *      R.mergeDeepWithKey(concatValues,\n *                         { a: true, c: { thing: 'foo', values: [10, 20] }},\n *                         { b: true, c: { thing: 'bar', values: [15, 35] }});\n *      //=\u003e { a: true, b: true, c: { thing: 'bar', values: [10, 20, 15, 35] }}\n */\n\nvar mergeDeepWithKey =\n/*#__PURE__*/\n_curry3(function mergeDeepWithKey(fn, lObj, rObj) {\n  return mergeWithKey(function (k, lVal, rVal) {\n    if (_isObject(lVal) \u0026\u0026 _isObject(rVal)) {\n      return mergeDeepWithKey(fn, lVal, rVal);\n    } else {\n      return fn(k, lVal, rVal);\n    }\n  }, lObj, rObj);\n});\n\nexport default mergeDeepWithKey;","import _curry2 from \"./internal/_curry2.js\";\nimport mergeDeepWithKey from \"./mergeDeepWithKey.js\";\n/**\n * Creates a new object with the own properties of the first object merged with\n * the own properties of the second object. If a key exists in both objects:\n * - and both values are objects, the two values will be recursively merged\n * - otherwise the value from the first object will be used.\n *\n * @func\n * @memberOf R\n * @since v0.24.0\n * @category Object\n * @sig {a} -\u003e {a} -\u003e {a}\n * @param {Object} lObj\n * @param {Object} rObj\n * @return {Object}\n * @see R.merge, R.mergeDeepRight, R.mergeDeepWith, R.mergeDeepWithKey\n * @example\n *\n *      R.mergeDeepLeft({ name: 'fred', age: 10, contact: { email: 'moo@example.com' }},\n *                      { age: 40, contact: { email: 'baa@example.com' }});\n *      //=\u003e { name: 'fred', age: 10, contact: { email: 'moo@example.com' }}\n */\n\nvar mergeDeepLeft =\n/*#__PURE__*/\n_curry2(function mergeDeepLeft(lObj, rObj) {\n  return mergeDeepWithKey(function (k, lVal, rVal) {\n    return lVal;\n  }, lObj, rObj);\n});\n\nexport default mergeDeepLeft;","import _curry2 from \"./internal/_curry2.js\";\nimport mergeDeepWithKey from \"./mergeDeepWithKey.js\";\n/**\n * Creates a new object with the own properties of the first object merged with\n * the own properties of the second object. If a key exists in both objects:\n * - and both values are objects, the two values will be recursively merged\n * - otherwise the value from the second object will be used.\n *\n * @func\n * @memberOf R\n * @since v0.24.0\n * @category Object\n * @sig {a} -\u003e {a} -\u003e {a}\n * @param {Object} lObj\n * @param {Object} rObj\n * @return {Object}\n * @see R.merge, R.mergeDeepLeft, R.mergeDeepWith, R.mergeDeepWithKey\n * @example\n *\n *      R.mergeDeepRight({ name: 'fred', age: 10, contact: { email: 'moo@example.com' }},\n *                       { age: 40, contact: { email: 'baa@example.com' }});\n *      //=\u003e { name: 'fred', age: 40, contact: { email: 'baa@example.com' }}\n */\n\nvar mergeDeepRight =\n/*#__PURE__*/\n_curry2(function mergeDeepRight(lObj, rObj) {\n  return mergeDeepWithKey(function (k, lVal, rVal) {\n    return rVal;\n  }, lObj, rObj);\n});\n\nexport default mergeDeepRight;","import _curry3 from \"./internal/_curry3.js\";\nimport mergeDeepWithKey from \"./mergeDeepWithKey.js\";\n/**\n * Creates a new object with the own properties of the two provided objects.\n * If a key exists in both objects:\n * - and both associated values are also objects then the values will be\n *   recursively merged.\n * - otherwise the provided function is applied to associated values using the\n *   resulting value as the new value associated with the key.\n * If a key only exists in one object, the value will be associated with the key\n * of the resulting object.\n *\n * @func\n * @memberOf R\n * @since v0.24.0\n * @category Object\n * @sig ((a, a) -\u003e a) -\u003e {a} -\u003e {a} -\u003e {a}\n * @param {Function} fn\n * @param {Object} lObj\n * @param {Object} rObj\n * @return {Object}\n * @see R.mergeWith, R.mergeDeepWithKey\n * @example\n *\n *      R.mergeDeepWith(R.concat,\n *                      { a: true, c: { values: [10, 20] }},\n *                      { b: true, c: { values: [15, 35] }});\n *      //=\u003e { a: true, b: true, c: { values: [10, 20, 15, 35] }}\n */\n\nvar mergeDeepWith =\n/*#__PURE__*/\n_curry3(function mergeDeepWith(fn, lObj, rObj) {\n  return mergeDeepWithKey(function (k, lVal, rVal) {\n    return fn(lVal, rVal);\n  }, lObj, rObj);\n});\n\nexport default mergeDeepWith;","import _objectAssign from \"./internal/_objectAssign.js\";\nimport _curry2 from \"./internal/_curry2.js\";\n/**\n * Create a new object with the own properties of the first object merged with\n * the own properties of the second object. If a key exists in both objects,\n * the value from the first object will be used.\n *\n * @func\n * @memberOf R\n * @since v0.26.0\n * @category Object\n * @sig {k: v} -\u003e {k: v} -\u003e {k: v}\n * @param {Object} l\n * @param {Object} r\n * @return {Object}\n * @see R.mergeRight, R.mergeDeepLeft, R.mergeWith, R.mergeWithKey\n * @example\n *\n *      R.mergeLeft({ 'age': 40 }, { 'name': 'fred', 'age': 10 });\n *      //=\u003e { 'name': 'fred', 'age': 40 }\n *\n *      const resetToDefault = R.mergeLeft({x: 0});\n *      resetToDefault({x: 5, y: 2}); //=\u003e {x: 0, y: 2}\n * @symb R.mergeLeft(a, b) = {...b, ...a}\n */\n\nvar mergeLeft =\n/*#__PURE__*/\n_curry2(function mergeLeft(l, r) {\n  return _objectAssign({}, r, l);\n});\n\nexport default mergeLeft;","import _objectAssign from \"./internal/_objectAssign.js\";\nimport _curry2 from \"./internal/_curry2.js\";\n/**\n * Create a new object with the own properties of the first object merged with\n * the own properties of the second object. If a key exists in both objects,\n * the value from the second object will be used.\n *\n * @func\n * @memberOf R\n * @since v0.26.0\n * @category Object\n * @sig {k: v} -\u003e {k: v} -\u003e {k: v}\n * @param {Object} l\n * @param {Object} r\n * @return {Object}\n * @see R.mergeLeft, R.mergeDeepRight, R.mergeWith, R.mergeWithKey\n * @example\n *\n *      R.mergeRight({ 'name': 'fred', 'age': 10 }, { 'age': 40 });\n *      //=\u003e { 'name': 'fred', 'age': 40 }\n *\n *      const withDefaults = R.mergeRight({x: 0, y: 0});\n *      withDefaults({y: 2}); //=\u003e {x: 0, y: 2}\n * @symb R.mergeRight(a, b) = {...a, ...b}\n */\n\nvar mergeRight =\n/*#__PURE__*/\n_curry2(function mergeRight(l, r) {\n  return _objectAssign({}, l, r);\n});\n\nexport default mergeRight;","import _curry3 from \"./internal/_curry3.js\";\nimport mergeWithKey from \"./mergeWithKey.js\";\n/**\n * Creates a new object with the own properties of the two provided objects. If\n * a key exists in both objects, the provided function is applied to the values\n * associated with the key in each object, with the result being used as the\n * value associated with the key in the returned object.\n *\n * @func\n * @memberOf R\n * @since v0.19.0\n * @category Object\n * @sig ((a, a) -\u003e a) -\u003e {a} -\u003e {a} -\u003e {a}\n * @param {Function} fn\n * @param {Object} l\n * @param {Object} r\n * @return {Object}\n * @see R.mergeDeepWith, R.merge, R.mergeWithKey\n * @example\n *\n *      R.mergeWith(R.concat,\n *                  { a: true, values: [10, 20] },\n *                  { b: true, values: [15, 35] });\n *      //=\u003e { a: true, b: true, values: [10, 20, 15, 35] }\n */\n\nvar mergeWith =\n/*#__PURE__*/\n_curry3(function mergeWith(fn, l, r) {\n  return mergeWithKey(function (_, _l, _r) {\n    return fn(_l, _r);\n  }, l, r);\n});\n\nexport default mergeWith;","import _curry2 from \"./internal/_curry2.js\";\n/**\n * Returns the smaller of its two arguments.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Relation\n * @sig Ord a =\u003e a -\u003e a -\u003e a\n * @param {*} a\n * @param {*} b\n * @return {*}\n * @see R.minBy, R.max\n * @example\n *\n *      R.min(789, 123); //=\u003e 123\n *      R.min('a', 'b'); //=\u003e 'a'\n */\n\nvar min =\n/*#__PURE__*/\n_curry2(function min(a, b) {\n  return b \u003c a ? b : a;\n});\n\nexport default min;","import _curry3 from \"./internal/_curry3.js\";\n/**\n * Takes a function and two values, and returns whichever value produces the\n * smaller result when passed to the provided function.\n *\n * @func\n * @memberOf R\n * @since v0.8.0\n * @category Relation\n * @sig Ord b =\u003e (a -\u003e b) -\u003e a -\u003e a -\u003e a\n * @param {Function} f\n * @param {*} a\n * @param {*} b\n * @return {*}\n * @see R.min, R.maxBy\n * @example\n *\n *      //  square :: Number -\u003e Number\n *      const square = n =\u003e n * n;\n *\n *      R.minBy(square, -3, 2); //=\u003e 2\n *\n *      R.reduce(R.minBy(square), Infinity, [3, -5, 4, 1, -2]); //=\u003e 1\n *      R.reduce(R.minBy(square), Infinity, []); //=\u003e Infinity\n */\n\nvar minBy =\n/*#__PURE__*/\n_curry3(function minBy(f, a, b) {\n  return f(b) \u003c f(a) ? b : a;\n});\n\nexport default minBy;","import _isArray from \"./_isArray.js\";\nimport _isInteger from \"./_isInteger.js\";\n/**\n * Makes a shallow clone of an object, applying the given fn to the specified\n * property with the given value. Note that this copies and flattens prototype\n * properties onto the new object as well. All non-primitive properties are\n * copied by reference.\n *\n * @private\n * @param {String|Number} prop The property name to set\n * @param {Function} fn The function to apply to the property\n * @param {Object|Array} obj The object to clone\n * @return {Object|Array} A new object equivalent to the original except for the changed property.\n */\n\nexport default function _modify(prop, fn, obj) {\n  if (_isInteger(prop) \u0026\u0026 _isArray(obj)) {\n    var arr = [].concat(obj);\n    arr[prop] = fn(arr[prop]);\n    return arr;\n  }\n\n  var result = {};\n\n  for (var p in obj) {\n    result[p] = obj[p];\n  }\n\n  result[prop] = fn(result[prop]);\n  return result;\n}","import _curry3 from \"./internal/_curry3.js\";\nimport _isArray from \"./internal/_isArray.js\";\nimport _isObject from \"./internal/_isObject.js\";\nimport _has from \"./internal/_has.js\";\nimport _assoc from \"./internal/_assoc.js\";\nimport _modify from \"./internal/_modify.js\";\n/**\n * Creates a shallow clone of the passed object by applying an `fn` function\n * to the value at the given path.\n *\n * The function will not be invoked, and the object will not change\n * if its corresponding path does not exist in the object.\n * All non-primitive properties are copied to the new object by reference.\n *\n * @func\n * @memberOf R\n * @since v0.28.0\n * @category Object\n * @sig [Idx] -\u003e (v -\u003e v) -\u003e {k: v} -\u003e {k: v}\n * @param {Array} path The path to be modified.\n * @param {Function} fn The function to apply to the path.\n * @param {Object} object The object to be transformed.\n * @return {Object} The transformed object.\n * @example\n *\n *      const person = {name: 'James', address: { zipCode: '90216' }};\n *      R.modifyPath(['address', 'zipCode'], R.reverse, person); //=\u003e {name: 'James', address: { zipCode: '61209' }}\n *\n *      // Can handle arrays too\n *      const person = {name: 'James', addresses: [{ zipCode: '90216' }]};\n *      R.modifyPath(['addresses', 0, 'zipCode'], R.reverse, person); //=\u003e {name: 'James', addresses: [{ zipCode: '61209' }]}\n */\n\nvar modifyPath =\n/*#__PURE__*/\n_curry3(function modifyPath(path, fn, object) {\n  if (!_isObject(object) \u0026\u0026 !_isArray(object) || path.length === 0) {\n    return object;\n  }\n\n  var idx = path[0];\n\n  if (!_has(idx, object)) {\n    return object;\n  }\n\n  if (path.length === 1) {\n    return _modify(idx, fn, object);\n  }\n\n  var val = modifyPath(Array.prototype.slice.call(path, 1), fn, object[idx]);\n\n  if (val === object[idx]) {\n    return object;\n  }\n\n  return _assoc(idx, val, object);\n});\n\nexport default modifyPath;","import _curry3 from \"./internal/_curry3.js\";\nimport modifyPath from \"./modifyPath.js\";\n/**\n * Creates a copy of the passed object by applying an `fn` function to the given `prop` property.\n *\n * The function will not be invoked, and the object will not change\n * if its corresponding property does not exist in the object.\n * All non-primitive properties are copied to the new object by reference.\n *\n * @func\n * @memberOf R\n * @since v0.28.0\n * @category Object\n * @sig Idx -\u003e (v -\u003e v) -\u003e {k: v} -\u003e {k: v}\n * @param {String|Number} prop The property to be modified.\n * @param {Function} fn The function to apply to the property.\n * @param {Object} object The object to be transformed.\n * @return {Object} The transformed object.\n * @example\n *\n *      const person = {name: 'James', age: 20, pets: ['dog', 'cat']};\n *      R.modify('age', R.add(1), person); //=\u003e {name: 'James', age: 21, pets: ['dog', 'cat']}\n *      R.modify('pets', R.append('turtle'), person); //=\u003e {name: 'James', age: 20, pets: ['dog', 'cat', 'turtle']}\n */\n\nvar modify =\n/*#__PURE__*/\n_curry3(function modify(prop, fn, object) {\n  return modifyPath([prop], fn, object);\n});\n\nexport default modify;","import _curry2 from \"./internal/_curry2.js\";\n/**\n * Divides the first parameter by the second and returns the remainder. Note\n * that this function preserves the JavaScript-style behavior for modulo. For\n * mathematical modulo see [`mathMod`](#mathMod).\n *\n * @func\n * @memberOf R\n * @since v0.1.1\n * @category Math\n * @sig Number -\u003e Number -\u003e Number\n * @param {Number} a The value to the divide.\n * @param {Number} b The pseudo-modulus\n * @return {Number} The result of `b % a`.\n * @see R.mathMod\n * @example\n *\n *      R.modulo(17, 3); //=\u003e 2\n *      // JS behavior:\n *      R.modulo(-17, 3); //=\u003e -2\n *      R.modulo(17, -3); //=\u003e 2\n *\n *      const isOdd = R.modulo(R.__, 2);\n *      isOdd(42); //=\u003e 0\n *      isOdd(21); //=\u003e 1\n */\n\nvar modulo =\n/*#__PURE__*/\n_curry2(function modulo(a, b) {\n  return a % b;\n});\n\nexport default modulo;","import _curry3 from \"./internal/_curry3.js\";\n/**\n * Move an item, at index `from`, to index `to`, in a list of elements.\n * A new list will be created containing the new elements order.\n *\n * @func\n * @memberOf R\n * @since v0.27.1\n * @category List\n * @sig Number -\u003e Number -\u003e [a] -\u003e [a]\n * @param {Number} from The source index\n * @param {Number} to The destination index\n * @param {Array} list The list which will serve to realise the move\n * @return {Array} The new list reordered\n * @example\n *\n *      R.move(0, 2, ['a', 'b', 'c', 'd', 'e', 'f']); //=\u003e ['b', 'c', 'a', 'd', 'e', 'f']\n *      R.move(-1, 0, ['a', 'b', 'c', 'd', 'e', 'f']); //=\u003e ['f', 'a', 'b', 'c', 'd', 'e'] list rotation\n */\n\nvar move =\n/*#__PURE__*/\n_curry3(function (from, to, list) {\n  var length = list.length;\n  var result = list.slice();\n  var positiveFrom = from \u003c 0 ? length + from : from;\n  var positiveTo = to \u003c 0 ? length + to : to;\n  var item = result.splice(positiveFrom, 1);\n  return positiveFrom \u003c 0 || positiveFrom \u003e= list.length || positiveTo \u003c 0 || positiveTo \u003e= list.length ? list : [].concat(result.slice(0, positiveTo)).concat(item).concat(result.slice(positiveTo, list.length));\n});\n\nexport default move;","import _curry2 from \"./internal/_curry2.js\";\n/**\n * Multiplies two numbers. Equivalent to `a * b` but curried.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Math\n * @sig Number -\u003e Number -\u003e Number\n * @param {Number} a The first value.\n * @param {Number} b The second value.\n * @return {Number} The result of `a * b`.\n * @see R.divide\n * @example\n *\n *      const double = R.multiply(2);\n *      const triple = R.multiply(3);\n *      double(3);       //=\u003e  6\n *      triple(4);       //=\u003e 12\n *      R.multiply(2, 5);  //=\u003e 10\n */\n\nvar multiply =\n/*#__PURE__*/\n_curry2(function multiply(a, b) {\n  return a * b;\n});\n\nexport default multiply;","import mergeDeepRight from \"./mergeDeepRight.js\";\nimport _curry2 from \"./internal/_curry2.js\";\n/**\n * Takes a function `f` and an object, and returns a function `g`.\n * When applied, `g` returns the result of applying `f` to the object\n * provided initially merged deeply (right) with the object provided as an argument to `g`.\n *\n * @func\n * @memberOf R\n * @since v0.28.0\n * @category Function\n * @sig (({ a, b, c, ..., n }) -\u003e x) -\u003e { a, b, c, ...} -\u003e ({ d, e, f, ..., n } -\u003e x)\n * @param {Function} f\n * @param {Object} props\n * @return {Function}\n * @see R.partial, R.partialRight, R.curry, R.mergeDeepRight\n * @example\n *\n *      const multiply2 = ({ a, b }) =\u003e a * b;\n *      const double = R.partialObject(multiply2, { a: 2 });\n *      double({ b: 2 }); //=\u003e 4\n *\n *      const greet = ({ salutation, title, firstName, lastName }) =\u003e\n *        salutation + ', ' + title + ' ' + firstName + ' ' + lastName + '!';\n *\n *      const sayHello = R.partialObject(greet, { salutation: 'Hello' });\n *      const sayHelloToMs = R.partialObject(sayHello, { title: 'Ms.' });\n *      sayHelloToMs({ firstName: 'Jane', lastName: 'Jones' }); //=\u003e 'Hello, Ms. Jane Jones!'\n * @symb R.partialObject(f, { a, b })({ c, d }) = f({ a, b, c, d })\n */\n\nexport default\n/*#__PURE__*/\n_curry2((f, o) =\u003e props =\u003e f.call(this, mergeDeepRight(o, props)));","import _curry1 from \"./internal/_curry1.js\";\n/**\n * Negates its argument.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category Math\n * @sig Number -\u003e Number\n * @param {Number} n\n * @return {Number}\n * @example\n *\n *      R.negate(42); //=\u003e -42\n */\n\nvar negate =\n/*#__PURE__*/\n_curry1(function negate(n) {\n  return -n;\n});\n\nexport default negate;","import _complement from \"./internal/_complement.js\";\nimport _curry2 from \"./internal/_curry2.js\";\nimport all from \"./all.js\";\n/**\n * Returns `true` if no elements of the list match the predicate, `false`\n * otherwise.\n *\n * Dispatches to the `all` method of the second argument, if present.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.12.0\n * @category List\n * @sig (a -\u003e Boolean) -\u003e [a] -\u003e Boolean\n * @param {Function} fn The predicate function.\n * @param {Array} list The array to consider.\n * @return {Boolean} `true` if the predicate is not satisfied by every element, `false` otherwise.\n * @see R.all, R.any\n * @example\n *\n *      const isEven = n =\u003e n % 2 === 0;\n *      const isOdd = n =\u003e n % 2 !== 0;\n *\n *      R.none(isEven, [1, 3, 5, 7, 9, 11]); //=\u003e true\n *      R.none(isOdd, [1, 3, 5, 7, 8, 11]); //=\u003e false\n */\n\nvar none =\n/*#__PURE__*/\n_curry2(function none(fn, input) {\n  return all(_complement(fn), input);\n});\n\nexport default none;","import _curry1 from \"./internal/_curry1.js\";\nimport curryN from \"./curryN.js\";\nimport nth from \"./nth.js\";\n/**\n * Returns a function which returns its nth argument.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category Function\n * @sig Number -\u003e *... -\u003e *\n * @param {Number} n\n * @return {Function}\n * @example\n *\n *      R.nthArg(1)('a', 'b', 'c'); //=\u003e 'b'\n *      R.nthArg(-1)('a', 'b', 'c'); //=\u003e 'c'\n * @symb R.nthArg(-1)(a, b, c) = c\n * @symb R.nthArg(0)(a, b, c) = a\n * @symb R.nthArg(1)(a, b, c) = b\n */\n\nvar nthArg =\n/*#__PURE__*/\n_curry1(function nthArg(n) {\n  var arity = n \u003c 0 ? 1 : n + 1;\n  return curryN(arity, function () {\n    return nth(n, arguments);\n  });\n});\n\nexport default nthArg;","import _curry3 from \"./internal/_curry3.js\";\n/**\n * `o` is a curried composition function that returns a unary function.\n * Like [`compose`](#compose), `o` performs right-to-left function composition.\n * Unlike [`compose`](#compose), the rightmost function passed to `o` will be\n * invoked with only one argument. Also, unlike [`compose`](#compose), `o` is\n * limited to accepting only 2 unary functions. The name o was chosen because\n * of its similarity to the mathematical composition operator ∘.\n *\n * @func\n * @memberOf R\n * @since v0.24.0\n * @category Function\n * @sig (b -\u003e c) -\u003e (a -\u003e b) -\u003e a -\u003e c\n * @param {Function} f\n * @param {Function} g\n * @return {Function}\n * @see R.compose, R.pipe\n * @example\n *\n *      const classyGreeting = name =\u003e \"The name's \" + name.last + \", \" + name.first + \" \" + name.last\n *      const yellGreeting = R.o(R.toUpper, classyGreeting);\n *      yellGreeting({first: 'James', last: 'Bond'}); //=\u003e \"THE NAME'S BOND, JAMES BOND\"\n *\n *      R.o(R.multiply(10), R.add(10))(-4) //=\u003e 60\n *\n * @symb R.o(f, g, x) = f(g(x))\n */\n\nvar o =\n/*#__PURE__*/\n_curry3(function o(f, g, x) {\n  return f(g(x));\n});\n\nexport default o;","export default function _of(x) {\n  return [x];\n}","import _curry1 from \"./internal/_curry1.js\";\nimport _of from \"./internal/_of.js\";\n/**\n * Returns a singleton array containing the value provided.\n *\n * Note this `of` is different from the ES6 `of`; See\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/of\n *\n * @func\n * @memberOf R\n * @since v0.3.0\n * @category Function\n * @sig a -\u003e [a]\n * @param {*} x any value\n * @return {Array} An array wrapping `x`.\n * @example\n *\n *      R.of(null); //=\u003e [null]\n *      R.of([42]); //=\u003e [[42]]\n */\n\nvar of =\n/*#__PURE__*/\n_curry1(_of);\n\nexport default of;","import _curry2 from \"./internal/_curry2.js\";\n/**\n * Returns a partial copy of an object omitting the keys specified.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Object\n * @sig [String] -\u003e {String: *} -\u003e {String: *}\n * @param {Array} names an array of String property names to omit from the new object\n * @param {Object} obj The object to copy from\n * @return {Object} A new object with properties from `names` not on it.\n * @see R.pick\n * @example\n *\n *      R.omit(['a', 'd'], {a: 1, b: 2, c: 3, d: 4}); //=\u003e {b: 2, c: 3}\n */\n\nvar omit =\n/*#__PURE__*/\n_curry2(function omit(names, obj) {\n  var result = {};\n  var index = {};\n  var idx = 0;\n  var len = names.length;\n\n  while (idx \u003c len) {\n    index[names[idx]] = 1;\n    idx += 1;\n  }\n\n  for (var prop in obj) {\n    if (!index.hasOwnProperty(prop)) {\n      result[prop] = obj[prop];\n    }\n  }\n\n  return result;\n});\n\nexport default omit;","import curryN from \"./internal/_curryN.js\";\n/**\n * Takes a binary function `f`, a unary function `g`, and two values.\n * Applies `g` to each value, then applies the result of each to `f`.\n *\n * Also known as the P combinator.\n *\n * @func\n * @memberOf R\n * @since v0.28.0\n * @category Function\n * @sig ((a, a) -\u003e b) -\u003e (c -\u003e a) -\u003e c -\u003e c -\u003e b\n * @param {Function} f a binary function\n * @param {Function} g a unary function\n * @param {any} a any value\n * @param {any} b any value\n * @return {any} The result of `f`\n * @example\n *\n *      const eqBy = R.on((a, b) =\u003e a === b);\n *      eqBy(R.prop('a'), {b:0, a:1}, {a:1}) //=\u003e true;\n *\n *      const containsInsensitive = R.on(R.contains, R.toLower);\n *      containsInsensitive('o', 'FOO'); //=\u003e true\n * @symb R.on(f, g, a, b) = f(g(a), g(b))\n */\n\nvar on =\n/*#__PURE__*/\ncurryN(4, [], function on(f, g, a, b) {\n  return f(g(a), g(b));\n});\nexport default on;","import _arity from \"./internal/_arity.js\";\nimport _curry1 from \"./internal/_curry1.js\";\n/**\n * Accepts a function `fn` and returns a function that guards invocation of\n * `fn` such that `fn` can only ever be called once, no matter how many times\n * the returned function is invoked. The first value calculated is returned in\n * subsequent invocations.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Function\n * @sig (a... -\u003e b) -\u003e (a... -\u003e b)\n * @param {Function} fn The function to wrap in a call-only-once wrapper.\n * @return {Function} The wrapped function.\n * @example\n *\n *      const addOneOnce = R.once(x =\u003e x + 1);\n *      addOneOnce(10); //=\u003e 11\n *      addOneOnce(addOneOnce(50)); //=\u003e 11\n */\n\nvar once =\n/*#__PURE__*/\n_curry1(function once(fn) {\n  var called = false;\n  var result;\n  return _arity(fn.length, function () {\n    if (called) {\n      return result;\n    }\n\n    called = true;\n    result = fn.apply(this, arguments);\n    return result;\n  });\n});\n\nexport default once;","import _isFunction from \"./_isFunction.js\";\nimport _toString from \"./_toString.js\";\nexport default function _assertPromise(name, p) {\n  if (p == null || !_isFunction(p.then)) {\n    throw new TypeError('`' + name + '` expected a Promise, received ' + _toString(p, []));\n  }\n}","import _curry2 from \"./internal/_curry2.js\";\nimport _assertPromise from \"./internal/_assertPromise.js\";\n/**\n * Returns the result of applying the onFailure function to the value inside\n * a failed promise. This is useful for handling rejected promises\n * inside function compositions.\n *\n * @func\n * @memberOf R\n * @since v0.26.0\n * @category Function\n * @sig (e -\u003e b) -\u003e (Promise e a) -\u003e (Promise e b)\n * @sig (e -\u003e (Promise f b)) -\u003e (Promise e a) -\u003e (Promise f b)\n * @param {Function} onFailure The function to apply. Can return a value or a promise of a value.\n * @param {Promise} p\n * @return {Promise} The result of calling `p.then(null, onFailure)`\n * @see R.andThen\n * @example\n *\n *      const failedFetch = id =\u003e Promise.reject('bad ID');\n *      const useDefault = () =\u003e ({ firstName: 'Bob', lastName: 'Loblaw' });\n *\n *      //recoverFromFailure :: String -\u003e Promise ({ firstName, lastName })\n *      const recoverFromFailure = R.pipe(\n *        failedFetch,\n *        R.otherwise(useDefault),\n *        R.andThen(R.pick(['firstName', 'lastName'])),\n *      );\n *      recoverFromFailure(12345).then(console.log);\n */\n\nvar otherwise =\n/*#__PURE__*/\n_curry2(function otherwise(f, p) {\n  _assertPromise('otherwise', p);\n\n  return p.then(null, f);\n});\n\nexport default otherwise;","import _curry3 from \"./internal/_curry3.js\"; // `Identity` is a functor that holds a single value, where `map` simply\n// transforms the held value with the provided function.\n\nvar Identity = function (x) {\n  return {\n    value: x,\n    map: function (f) {\n      return Identity(f(x));\n    }\n  };\n};\n/**\n * Returns the result of \"setting\" the portion of the given data structure\n * focused by the given lens to the result of applying the given function to\n * the focused value.\n *\n * @func\n * @memberOf R\n * @since v0.16.0\n * @category Object\n * @typedefn Lens s a = Functor f =\u003e (a -\u003e f a) -\u003e s -\u003e f s\n * @sig Lens s a -\u003e (a -\u003e a) -\u003e s -\u003e s\n * @param {Lens} lens\n * @param {*} v\n * @param {*} x\n * @return {*}\n * @see R.view, R.set, R.lens, R.lensIndex, R.lensProp, R.lensPath\n * @example\n *\n *      const headLens = R.lensIndex(0);\n *\n *      R.over(headLens, R.toUpper, ['foo', 'bar', 'baz']); //=\u003e ['FOO', 'bar', 'baz']\n */\n\n\nvar over =\n/*#__PURE__*/\n_curry3(function over(lens, f, x) {\n  // The value returned by the getter function is first transformed with `f`,\n  // then set as the value of an `Identity`. This is then mapped over with the\n  // setter function of the lens.\n  return lens(function (y) {\n    return Identity(f(y));\n  })(x).value;\n});\n\nexport default over;","import _curry2 from \"./internal/_curry2.js\";\n/**\n * Takes two arguments, `fst` and `snd`, and returns `[fst, snd]`.\n *\n * @func\n * @memberOf R\n * @since v0.18.0\n * @category List\n * @sig a -\u003e b -\u003e (a,b)\n * @param {*} fst\n * @param {*} snd\n * @return {Array}\n * @see R.objOf, R.of\n * @example\n *\n *      R.pair('foo', 'bar'); //=\u003e ['foo', 'bar']\n */\n\nvar pair =\n/*#__PURE__*/\n_curry2(function pair(fst, snd) {\n  return [fst, snd];\n});\n\nexport default pair;","import _arity from \"./_arity.js\";\nimport _curry2 from \"./_curry2.js\";\nexport default function _createPartialApplicator(concat) {\n  return _curry2(function (fn, args) {\n    return _arity(Math.max(0, fn.length - args.length), function () {\n      return fn.apply(this, concat(args, arguments));\n    });\n  });\n}","import _concat from \"./internal/_concat.js\";\nimport _createPartialApplicator from \"./internal/_createPartialApplicator.js\";\n/**\n * Takes a function `f` and a list of arguments, and returns a function `g`.\n * When applied, `g` returns the result of applying `f` to the arguments\n * provided initially followed by the arguments provided to `g`.\n *\n * @func\n * @memberOf R\n * @since v0.10.0\n * @category Function\n * @sig ((a, b, c, ..., n) -\u003e x) -\u003e [a, b, c, ...] -\u003e ((d, e, f, ..., n) -\u003e x)\n * @param {Function} f\n * @param {Array} args\n * @return {Function}\n * @see R.partialRight, R.curry\n * @example\n *\n *      const multiply2 = (a, b) =\u003e a * b;\n *      const double = R.partial(multiply2, [2]);\n *      double(3); //=\u003e 6\n *\n *      const greet = (salutation, title, firstName, lastName) =\u003e\n *        salutation + ', ' + title + ' ' + firstName + ' ' + lastName + '!';\n *\n *      const sayHello = R.partial(greet, ['Hello']);\n *      const sayHelloToMs = R.partial(sayHello, ['Ms.']);\n *      sayHelloToMs('Jane', 'Jones'); //=\u003e 'Hello, Ms. Jane Jones!'\n * @symb R.partial(f, [a, b])(c, d) = f(a, b, c, d)\n */\n\nvar partial =\n/*#__PURE__*/\n_createPartialApplicator(_concat);\n\nexport default partial;","import _concat from \"./internal/_concat.js\";\nimport _createPartialApplicator from \"./internal/_createPartialApplicator.js\";\nimport flip from \"./flip.js\";\n/**\n * Takes a function `f` and a list of arguments, and returns a function `g`.\n * When applied, `g` returns the result of applying `f` to the arguments\n * provided to `g` followed by the arguments provided initially.\n *\n * @func\n * @memberOf R\n * @since v0.10.0\n * @category Function\n * @sig ((a, b, c, ..., n) -\u003e x) -\u003e [d, e, f, ..., n] -\u003e ((a, b, c, ...) -\u003e x)\n * @param {Function} f\n * @param {Array} args\n * @return {Function}\n * @see R.partial\n * @example\n *\n *      const greet = (salutation, title, firstName, lastName) =\u003e\n *        salutation + ', ' + title + ' ' + firstName + ' ' + lastName + '!';\n *\n *      const greetMsJaneJones = R.partialRight(greet, ['Ms.', 'Jane', 'Jones']);\n *\n *      greetMsJaneJones('Hello'); //=\u003e 'Hello, Ms. Jane Jones!'\n * @symb R.partialRight(f, [a, b])(c, d) = f(c, d, a, b)\n */\n\nvar partialRight =\n/*#__PURE__*/\n_createPartialApplicator(\n/*#__PURE__*/\nflip(_concat));\n\nexport default partialRight;","import filter from \"./filter.js\";\nimport juxt from \"./juxt.js\";\nimport reject from \"./reject.js\";\n/**\n * Takes a predicate and a list or other `Filterable` object and returns the\n * pair of filterable objects of the same type of elements which do and do not\n * satisfy, the predicate, respectively. Filterable objects include plain objects or any object\n * that has a filter method such as `Array`.\n *\n * @func\n * @memberOf R\n * @since v0.1.4\n * @category List\n * @sig Filterable f =\u003e (a -\u003e Boolean) -\u003e f a -\u003e [f a, f a]\n * @param {Function} pred A predicate to determine which side the element belongs to.\n * @param {Array} filterable the list (or other filterable) to partition.\n * @return {Array} An array, containing first the subset of elements that satisfy the\n *         predicate, and second the subset of elements that do not satisfy.\n * @see R.filter, R.reject\n * @example\n *\n *      R.partition(R.includes('s'), ['sss', 'ttt', 'foo', 'bars']);\n *      // =\u003e [ [ 'sss', 'bars' ],  [ 'ttt', 'foo' ] ]\n *\n *      R.partition(R.includes('s'), { a: 'sss', b: 'ttt', foo: 'bars' });\n *      // =\u003e [ { a: 'sss', foo: 'bars' }, { b: 'ttt' }  ]\n */\n\nvar partition =\n/*#__PURE__*/\njuxt([filter, reject]);\nexport default partition;","import _curry3 from \"./internal/_curry3.js\";\nimport equals from \"./equals.js\";\nimport path from \"./path.js\";\n/**\n * Determines whether a nested path on an object has a specific value, in\n * [`R.equals`](#equals) terms. Most likely used to filter a list.\n *\n * @func\n * @memberOf R\n * @since v0.7.0\n * @category Relation\n * @typedefn Idx = String | Int | Symbol\n * @sig [Idx] -\u003e a -\u003e {a} -\u003e Boolean\n * @param {Array} path The path of the nested property to use\n * @param {*} val The value to compare the nested property with\n * @param {Object} obj The object to check the nested property in\n * @return {Boolean} `true` if the value equals the nested object property,\n *         `false` otherwise.\n * @example\n *\n *      const user1 = { address: { zipCode: 90210 } };\n *      const user2 = { address: { zipCode: 55555 } };\n *      const user3 = { name: 'Bob' };\n *      const users = [ user1, user2, user3 ];\n *      const isFamous = R.pathEq(['address', 'zipCode'], 90210);\n *      R.filter(isFamous, users); //=\u003e [ user1 ]\n */\n\nvar pathEq =\n/*#__PURE__*/\n_curry3(function pathEq(_path, val, obj) {\n  return equals(path(_path, obj), val);\n});\n\nexport default pathEq;","import _curry3 from \"./internal/_curry3.js\";\nimport defaultTo from \"./defaultTo.js\";\nimport path from \"./path.js\";\n/**\n * If the given, non-null object has a value at the given path, returns the\n * value at that path. Otherwise returns the provided default value.\n *\n * @func\n * @memberOf R\n * @since v0.18.0\n * @category Object\n * @typedefn Idx = String | Int | Symbol\n * @sig a -\u003e [Idx] -\u003e {a} -\u003e a\n * @param {*} d The default value.\n * @param {Array} p The path to use.\n * @param {Object} obj The object to retrieve the nested property from.\n * @return {*} The data at `path` of the supplied object or the default value.\n * @example\n *\n *      R.pathOr('N/A', ['a', 'b'], {a: {b: 2}}); //=\u003e 2\n *      R.pathOr('N/A', ['a', 'b'], {c: {b: 2}}); //=\u003e \"N/A\"\n */\n\nvar pathOr =\n/*#__PURE__*/\n_curry3(function pathOr(d, p, obj) {\n  return defaultTo(d, path(p, obj));\n});\n\nexport default pathOr;","import _curry3 from \"./internal/_curry3.js\";\nimport path from \"./path.js\";\n/**\n * Returns `true` if the specified object property at given path satisfies the\n * given predicate; `false` otherwise.\n *\n * @func\n * @memberOf R\n * @since v0.19.0\n * @category Logic\n * @typedefn Idx = String | Int | Symbol\n * @sig (a -\u003e Boolean) -\u003e [Idx] -\u003e {a} -\u003e Boolean\n * @param {Function} pred\n * @param {Array} propPath\n * @param {*} obj\n * @return {Boolean}\n * @see R.propSatisfies, R.path\n * @example\n *\n *      R.pathSatisfies(y =\u003e y \u003e 0, ['x', 'y'], {x: {y: 2}}); //=\u003e true\n *      R.pathSatisfies(R.is(Object), [], {x: {y: 2}}); //=\u003e true\n */\n\nvar pathSatisfies =\n/*#__PURE__*/\n_curry3(function pathSatisfies(pred, propPath, obj) {\n  return pred(path(propPath, obj));\n});\n\nexport default pathSatisfies;","import _curry2 from \"./internal/_curry2.js\";\n/**\n * Returns a partial copy of an object containing only the keys specified. If\n * the key does not exist, the property is ignored.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Object\n * @sig [k] -\u003e {k: v} -\u003e {k: v}\n * @param {Array} names an array of String property names to copy onto a new object\n * @param {Object} obj The object to copy from\n * @return {Object} A new object with only properties from `names` on it.\n * @see R.omit, R.props\n * @example\n *\n *      R.pick(['a', 'd'], {a: 1, b: 2, c: 3, d: 4}); //=\u003e {a: 1, d: 4}\n *      R.pick(['a', 'e', 'f'], {a: 1, b: 2, c: 3, d: 4}); //=\u003e {a: 1}\n */\n\nvar pick =\n/*#__PURE__*/\n_curry2(function pick(names, obj) {\n  var result = {};\n  var idx = 0;\n\n  while (idx \u003c names.length) {\n    if (names[idx] in obj) {\n      result[names[idx]] = obj[names[idx]];\n    }\n\n    idx += 1;\n  }\n\n  return result;\n});\n\nexport default pick;","import _curry2 from \"./internal/_curry2.js\";\n/**\n * Similar to `pick` except that this one includes a `key: undefined` pair for\n * properties that don't exist.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Object\n * @sig [k] -\u003e {k: v} -\u003e {k: v}\n * @param {Array} names an array of String property names to copy onto a new object\n * @param {Object} obj The object to copy from\n * @return {Object} A new object with only properties from `names` on it.\n * @see R.pick\n * @example\n *\n *      R.pickAll(['a', 'd'], {a: 1, b: 2, c: 3, d: 4}); //=\u003e {a: 1, d: 4}\n *      R.pickAll(['a', 'e', 'f'], {a: 1, b: 2, c: 3, d: 4}); //=\u003e {a: 1, e: undefined, f: undefined}\n */\n\nvar pickAll =\n/*#__PURE__*/\n_curry2(function pickAll(names, obj) {\n  var result = {};\n  var idx = 0;\n  var len = names.length;\n\n  while (idx \u003c len) {\n    var name = names[idx];\n    result[name] = obj[name];\n    idx += 1;\n  }\n\n  return result;\n});\n\nexport default pickAll;","import _curry2 from \"./internal/_curry2.js\";\n/**\n * Returns a partial copy of an object containing only the keys that satisfy\n * the supplied predicate.\n *\n * @func\n * @memberOf R\n * @since v0.8.0\n * @category Object\n * @sig ((v, k) -\u003e Boolean) -\u003e {k: v} -\u003e {k: v}\n * @param {Function} pred A predicate to determine whether or not a key\n *        should be included on the output object.\n * @param {Object} obj The object to copy from\n * @return {Object} A new object with only properties that satisfy `pred`\n *         on it.\n * @see R.pick, R.filter\n * @example\n *\n *      const isUpperCase = (val, key) =\u003e key.toUpperCase() === key;\n *      R.pickBy(isUpperCase, {a: 1, b: 2, A: 3, B: 4}); //=\u003e {A: 3, B: 4}\n */\n\nvar pickBy =\n/*#__PURE__*/\n_curry2(function pickBy(test, obj) {\n  var result = {};\n\n  for (var prop in obj) {\n    if (test(obj[prop], prop, obj)) {\n      result[prop] = obj[prop];\n    }\n  }\n\n  return result;\n});\n\nexport default pickBy;","import _concat from \"./internal/_concat.js\";\nimport _curry2 from \"./internal/_curry2.js\";\n/**\n * Returns a new list with the given element at the front, followed by the\n * contents of the list.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig a -\u003e [a] -\u003e [a]\n * @param {*} el The item to add to the head of the output list.\n * @param {Array} list The array to add to the tail of the output list.\n * @return {Array} A new array.\n * @see R.append\n * @example\n *\n *      R.prepend('fee', ['fi', 'fo', 'fum']); //=\u003e ['fee', 'fi', 'fo', 'fum']\n */\n\nvar prepend =\n/*#__PURE__*/\n_curry2(function prepend(el, list) {\n  return _concat([el], list);\n});\n\nexport default prepend;","import multiply from \"./multiply.js\";\nimport reduce from \"./reduce.js\";\n/**\n * Multiplies together all the elements of a list.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Math\n * @sig [Number] -\u003e Number\n * @param {Array} list An array of numbers\n * @return {Number} The product of all the numbers in the list.\n * @see R.reduce\n * @example\n *\n *      R.product([2,4,6,8,100,1]); //=\u003e 38400\n */\n\nvar product =\n/*#__PURE__*/\nreduce(multiply, 1);\nexport default product;","import _curry2 from \"./internal/_curry2.js\";\nimport curryN from \"./curryN.js\";\n/**\n * Accepts a function `fn` and a list of transformer functions and returns a\n * new curried function. When the new function is invoked, it calls the\n * function `fn` with parameters consisting of the result of calling each\n * supplied handler on successive arguments to the new function.\n *\n * If more arguments are passed to the returned function than transformer\n * functions, those arguments are passed directly to `fn` as additional\n * parameters. If you expect additional arguments that don't need to be\n * transformed, although you can ignore them, it's best to pass an identity\n * function so that the new function reports the correct arity.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Function\n * @sig ((x1, x2, ...) -\u003e z) -\u003e [(a -\u003e x1), (b -\u003e x2), ...] -\u003e (a -\u003e b -\u003e ... -\u003e z)\n * @param {Function} fn The function to wrap.\n * @param {Array} transformers A list of transformer functions\n * @return {Function} The wrapped function.\n * @see R.converge\n * @example\n *\n *      R.useWith(Math.pow, [R.identity, R.identity])(3, 4); //=\u003e 81\n *      R.useWith(Math.pow, [R.identity, R.identity])(3)(4); //=\u003e 81\n *      R.useWith(Math.pow, [R.dec, R.inc])(3, 4); //=\u003e 32\n *      R.useWith(Math.pow, [R.dec, R.inc])(3)(4); //=\u003e 32\n * @symb R.useWith(f, [g, h])(a, b) = f(g(a), h(b))\n */\n\nvar useWith =\n/*#__PURE__*/\n_curry2(function useWith(fn, transformers) {\n  return curryN(transformers.length, function () {\n    var args = [];\n    var idx = 0;\n\n    while (idx \u003c transformers.length) {\n      args.push(transformers[idx].call(this, arguments[idx]));\n      idx += 1;\n    }\n\n    return fn.apply(this, args.concat(Array.prototype.slice.call(arguments, transformers.length)));\n  });\n});\n\nexport default useWith;","import _map from \"./internal/_map.js\";\nimport identity from \"./identity.js\";\nimport pickAll from \"./pickAll.js\";\nimport useWith from \"./useWith.js\";\n/**\n * Reasonable analog to SQL `select` statement.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Object\n * @category Relation\n * @sig [k] -\u003e [{k: v}] -\u003e [{k: v}]\n * @param {Array} props The property names to project\n * @param {Array} objs The objects to query\n * @return {Array} An array of objects with just the `props` properties.\n * @see R.pluck, R.props, R.prop\n * @example\n *\n *      const abby = {name: 'Abby', age: 7, hair: 'blond', grade: 2};\n *      const fred = {name: 'Fred', age: 12, hair: 'brown', grade: 7};\n *      const kids = [abby, fred];\n *      R.project(['name', 'grade'], kids); //=\u003e [{name: 'Abby', grade: 2}, {name: 'Fred', grade: 7}]\n */\n\nvar project =\n/*#__PURE__*/\nuseWith(_map, [pickAll, identity]); // passing `identity` gives correct arity\n\nexport default project;","export default function _promap(f, g, profunctor) {\n  return function (x) {\n    return g(profunctor(f(x)));\n  };\n}","import _curry3 from \"./_curry3.js\";\nimport _xfBase from \"./_xfBase.js\";\nimport _promap from \"./_promap.js\";\n\nvar XPromap =\n/*#__PURE__*/\nfunction () {\n  function XPromap(f, g, xf) {\n    this.xf = xf;\n    this.f = f;\n    this.g = g;\n  }\n\n  XPromap.prototype['@@transducer/init'] = _xfBase.init;\n  XPromap.prototype['@@transducer/result'] = _xfBase.result;\n\n  XPromap.prototype['@@transducer/step'] = function (result, input) {\n    return this.xf['@@transducer/step'](result, _promap(this.f, this.g, input));\n  };\n\n  return XPromap;\n}();\n\nvar _xpromap =\n/*#__PURE__*/\n_curry3(function _xpromap(f, g, xf) {\n  return new XPromap(f, g, xf);\n});\n\nexport default _xpromap;","import _curry3 from \"./internal/_curry3.js\";\nimport _dispatchable from \"./internal/_dispatchable.js\";\nimport _promap from \"./internal/_promap.js\";\nimport _xpromap from \"./internal/_xpromap.js\";\n/**\n * Takes two functions as pre- and post- processors respectively for a third function,\n * i.e. `promap(f, g, h)(x) === g(h(f(x)))`.\n *\n * Dispatches to the `promap` method of the third argument, if present,\n * according to the [FantasyLand Profunctor spec](https://github.com/fantasyland/fantasy-land#profunctor).\n *\n * Acts as a transducer if a transformer is given in profunctor position.\n *\n * @func\n * @memberOf R\n * @since v0.28.0\n * @category Function\n * @sig (a -\u003e b) -\u003e (c -\u003e d) -\u003e (b -\u003e c) -\u003e (a -\u003e d)\n * @sig Profunctor p =\u003e (a -\u003e b) -\u003e (c -\u003e d) -\u003e p b c -\u003e p a d\n * @param {Function} f The preprocessor function, a -\u003e b\n * @param {Function} g The postprocessor function, c -\u003e d\n * @param {Profunctor} profunctor The profunctor instance to be promapped, e.g. b -\u003e c\n * @return {Profunctor} The new profunctor instance, e.g. a -\u003e d\n * @see R.transduce\n * @example\n *\n *      const decodeChar = R.promap(s =\u003e s.charCodeAt(), String.fromCharCode, R.add(-8))\n *      const decodeString = R.promap(R.split(''), R.join(''), R.map(decodeChar))\n *      decodeString(\"ziuli\") //=\u003e \"ramda\"\n *\n * @symb R.promap(f, g, h) = x =\u003e g(h(f(x)))\n * @symb R.promap(f, g, profunctor) = profunctor.promap(f, g)\n */\n\nvar promap =\n/*#__PURE__*/\n_curry3(\n/*#__PURE__*/\n_dispatchable(['fantasy-land/promap', 'promap'], _xpromap, _promap));\n\nexport default promap;","import _curry3 from \"./internal/_curry3.js\";\nimport prop from \"./prop.js\";\nimport equals from \"./equals.js\";\n/**\n * Returns `true` if the specified object property is equal, in\n * [`R.equals`](#equals) terms, to the given value; `false` otherwise.\n * You can test multiple properties with [`R.whereEq`](#whereEq).\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Relation\n * @sig String -\u003e a -\u003e Object -\u003e Boolean\n * @param {String} name\n * @param {*} val\n * @param {*} obj\n * @return {Boolean}\n * @see R.whereEq, R.propSatisfies, R.equals\n * @example\n *\n *      const abby = {name: 'Abby', age: 7, hair: 'blond'};\n *      const fred = {name: 'Fred', age: 12, hair: 'brown'};\n *      const rusty = {name: 'Rusty', age: 10, hair: 'brown'};\n *      const alois = {name: 'Alois', age: 15, disposition: 'surly'};\n *      const kids = [abby, fred, rusty, alois];\n *      const hasBrownHair = R.propEq('hair', 'brown');\n *      R.filter(hasBrownHair, kids); //=\u003e [fred, rusty]\n */\n\nvar propEq =\n/*#__PURE__*/\n_curry3(function propEq(name, val, obj) {\n  return equals(val, prop(name, obj));\n});\n\nexport default propEq;","import _curry3 from \"./internal/_curry3.js\";\nimport prop from \"./prop.js\";\nimport is from \"./is.js\";\n/**\n * Returns `true` if the specified object property is of the given type;\n * `false` otherwise.\n *\n * @func\n * @memberOf R\n * @since v0.16.0\n * @category Type\n * @sig Type -\u003e String -\u003e Object -\u003e Boolean\n * @param {Function} type\n * @param {String} name\n * @param {*} obj\n * @return {Boolean}\n * @see R.is, R.propSatisfies\n * @example\n *\n *      R.propIs(Number, 'x', {x: 1, y: 2});  //=\u003e true\n *      R.propIs(Number, 'x', {x: 'foo'});    //=\u003e false\n *      R.propIs(Number, 'x', {});            //=\u003e false\n */\n\nvar propIs =\n/*#__PURE__*/\n_curry3(function propIs(type, name, obj) {\n  return is(type, prop(name, obj));\n});\n\nexport default propIs;","import _curry3 from \"./internal/_curry3.js\";\nimport defaultTo from \"./defaultTo.js\";\nimport prop from \"./prop.js\";\n/**\n * Return the specified property of the given non-null object if the property\n * is present and it's value is not `null`, `undefined` or `NaN`.\n *\n * Otherwise the first argument is returned.\n *\n * @func\n * @memberOf R\n * @since v0.6.0\n * @category Object\n * @sig a -\u003e String -\u003e Object -\u003e a\n * @param {*} val The default value.\n * @param {String} p The name of the property to return.\n * @param {Object} obj The object to query.\n * @return {*} The value of given property of the supplied object or the default value.\n * @example\n *\n *      const alice = {\n *        name: 'ALICE',\n *        age: 101\n *      };\n *      const favorite = R.prop('favoriteLibrary');\n *      const favoriteWithDefault = R.propOr('Ramda', 'favoriteLibrary');\n *\n *      favorite(alice);  //=\u003e undefined\n *      favoriteWithDefault(alice);  //=\u003e 'Ramda'\n */\n\nvar propOr =\n/*#__PURE__*/\n_curry3(function propOr(val, p, obj) {\n  return defaultTo(val, prop(p, obj));\n});\n\nexport default propOr;","import _curry3 from \"./internal/_curry3.js\";\nimport prop from \"./prop.js\";\n/**\n * Returns `true` if the specified object property satisfies the given\n * predicate; `false` otherwise. You can test multiple properties with\n * [`R.where`](#where).\n *\n * @func\n * @memberOf R\n * @since v0.16.0\n * @category Logic\n * @sig (a -\u003e Boolean) -\u003e String -\u003e {String: a} -\u003e Boolean\n * @param {Function} pred\n * @param {String} name\n * @param {*} obj\n * @return {Boolean}\n * @see R.where, R.propEq, R.propIs\n * @example\n *\n *      R.propSatisfies(x =\u003e x \u003e 0, 'x', {x: 1, y: 2}); //=\u003e true\n */\n\nvar propSatisfies =\n/*#__PURE__*/\n_curry3(function propSatisfies(pred, name, obj) {\n  return pred(prop(name, obj));\n});\n\nexport default propSatisfies;","import _curry2 from \"./internal/_curry2.js\";\nimport path from \"./path.js\";\n/**\n * Acts as multiple `prop`: array of keys in, array of values out. Preserves\n * order.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Object\n * @sig [k] -\u003e {k: v} -\u003e [v]\n * @param {Array} ps The property names to fetch\n * @param {Object} obj The object to query\n * @return {Array} The corresponding values or partially applied function.\n * @see R.prop, R.pluck, R.project\n * @example\n *\n *      R.props(['x', 'y'], {x: 1, y: 2}); //=\u003e [1, 2]\n *      R.props(['c', 'a', 'b'], {b: 2, a: 1}); //=\u003e [undefined, 1, 2]\n *\n *      const fullName = R.compose(R.join(' '), R.props(['first', 'last']));\n *      fullName({last: 'Bullet-Tooth', age: 33, first: 'Tony'}); //=\u003e 'Tony Bullet-Tooth'\n */\n\nvar props =\n/*#__PURE__*/\n_curry2(function props(ps, obj) {\n  return ps.map(function (p) {\n    return path([p], obj);\n  });\n});\n\nexport default props;","import _curry2 from \"./internal/_curry2.js\";\nimport _isNumber from \"./internal/_isNumber.js\";\n/**\n * Returns a list of numbers from `from` (inclusive) to `to` (exclusive).\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig Number -\u003e Number -\u003e [Number]\n * @param {Number} from The first number in the list.\n * @param {Number} to One more than the last number in the list.\n * @return {Array} The list of numbers in the set `[a, b)`.\n * @example\n *\n *      R.range(1, 5);    //=\u003e [1, 2, 3, 4]\n *      R.range(50, 53);  //=\u003e [50, 51, 52]\n */\n\nvar range =\n/*#__PURE__*/\n_curry2(function range(from, to) {\n  if (!(_isNumber(from) \u0026\u0026 _isNumber(to))) {\n    throw new TypeError('Both arguments to range must be numbers');\n  }\n\n  var result = [];\n  var n = from;\n\n  while (n \u003c to) {\n    result.push(n);\n    n += 1;\n  }\n\n  return result;\n});\n\nexport default range;","import _curry3 from \"./internal/_curry3.js\";\n/**\n * Returns a single item by iterating through the list, successively calling\n * the iterator function and passing it an accumulator value and the current\n * value from the array, and then passing the result to the next call.\n *\n * Similar to [`reduce`](#reduce), except moves through the input list from the\n * right to the left.\n *\n * The iterator function receives two values: *(value, acc)*, while the arguments'\n * order of `reduce`'s iterator function is *(acc, value)*. `reduceRight` may use [`reduced`](#reduced)\n * to short circuit the iteration.\n *\n * Note: `R.reduceRight` does not skip deleted or unassigned indices (sparse\n * arrays), unlike the native `Array.prototype.reduceRight` method. For more details\n * on this behavior, see:\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduceRight#Description\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig ((a, b) -\u003e b) -\u003e b -\u003e [a] -\u003e b\n * @param {Function} fn The iterator function. Receives two values, the current element from the array\n *        and the accumulator.\n * @param {*} acc The accumulator value.\n * @param {Array} list The list to iterate over.\n * @return {*} The final, accumulated value.\n * @see R.reduce, R.addIndex, R.reduced\n * @example\n *\n *      R.reduceRight(R.subtract, 0, [1, 2, 3, 4]) // =\u003e (1 - (2 - (3 - (4 - 0)))) = -2\n *      //    -               -2\n *      //   / \\              / \\\n *      //  1   -            1   3\n *      //     / \\              / \\\n *      //    2   -     ==\u003e    2  -1\n *      //       / \\              / \\\n *      //      3   -            3   4\n *      //         / \\              / \\\n *      //        4   0            4   0\n *\n * @symb R.reduceRight(f, a, [b, c, d]) = f(b, f(c, f(d, a)))\n */\n\nvar reduceRight =\n/*#__PURE__*/\n_curry3(function reduceRight(fn, acc, list) {\n  var idx = list.length - 1;\n\n  while (idx \u003e= 0) {\n    acc = fn(list[idx], acc);\n\n    if (acc \u0026\u0026 acc['@@transducer/reduced']) {\n      acc = acc['@@transducer/value'];\n      break;\n    }\n\n    idx -= 1;\n  }\n\n  return acc;\n});\n\nexport default reduceRight;","import _curryN from \"./internal/_curryN.js\";\nimport _reduce from \"./internal/_reduce.js\";\nimport _reduced from \"./internal/_reduced.js\";\n/**\n * Like [`reduce`](#reduce), `reduceWhile` returns a single item by iterating\n * through the list, successively calling the iterator function. `reduceWhile`\n * also takes a predicate that is evaluated before each step. If the predicate\n * returns `false`, it \"short-circuits\" the iteration and returns the current\n * value of the accumulator. `reduceWhile` may alternatively be short-circuited\n * via [`reduced`](#reduced).\n *\n * @func\n * @memberOf R\n * @since v0.22.0\n * @category List\n * @sig ((a, b) -\u003e Boolean) -\u003e ((a, b) -\u003e a) -\u003e a -\u003e [b] -\u003e a\n * @param {Function} pred The predicate. It is passed the accumulator and the\n *        current element.\n * @param {Function} fn The iterator function. Receives two values, the\n *        accumulator and the current element.\n * @param {*} a The accumulator value.\n * @param {Array} list The list to iterate over.\n * @return {*} The final, accumulated value.\n * @see R.reduce, R.reduced\n * @example\n *\n *      const isOdd = (acc, x) =\u003e x % 2 !== 0;\n *      const xs = [1, 3, 5, 60, 777, 800];\n *      R.reduceWhile(isOdd, R.add, 0, xs); //=\u003e 9\n *\n *      const ys = [2, 4, 6]\n *      R.reduceWhile(isOdd, R.add, 111, ys); //=\u003e 111\n */\n\nvar reduceWhile =\n/*#__PURE__*/\n_curryN(4, [], function _reduceWhile(pred, fn, a, list) {\n  return _reduce(function (acc, x) {\n    return pred(acc, x) ? fn(acc, x) : _reduced(acc);\n  }, a, list);\n});\n\nexport default reduceWhile;","import _curry1 from \"./internal/_curry1.js\";\nimport _reduced from \"./internal/_reduced.js\";\n/**\n * Returns a value wrapped to indicate that it is the final value of the reduce\n * and transduce functions. The returned value should be considered a black\n * box: the internal structure is not guaranteed to be stable.\n *\n * This optimization is available to the below functions:\n * - [`reduce`](#reduce)\n * - [`reduceWhile`](#reduceWhile)\n * - [`reduceBy`](#reduceBy)\n * - [`reduceRight`](#reduceRight)\n * - [`transduce`](#transduce)\n *\n * @func\n * @memberOf R\n * @since v0.15.0\n * @category List\n * @sig a -\u003e *\n * @param {*} x The final value of the reduce.\n * @return {*} The wrapped value.\n * @see R.reduce, R.reduceWhile, R.reduceBy, R.reduceRight, R.transduce\n * @example\n *\n *     R.reduce(\n *       (acc, item) =\u003e item \u003e 3 ? R.reduced(acc) : acc.concat(item),\n *       [],\n *       [1, 2, 3, 4, 5]) // [1, 2, 3]\n */\n\nvar reduced =\n/*#__PURE__*/\n_curry1(_reduced);\n\nexport default reduced;","import _curry2 from \"./internal/_curry2.js\";\n/**\n * Calls an input function `n` times, returning an array containing the results\n * of those function calls.\n *\n * `fn` is passed one argument: The current value of `n`, which begins at `0`\n * and is gradually incremented to `n - 1`.\n *\n * @func\n * @memberOf R\n * @since v0.2.3\n * @category List\n * @sig (Number -\u003e a) -\u003e Number -\u003e [a]\n * @param {Function} fn The function to invoke. Passed one argument, the current value of `n`.\n * @param {Number} n A value between `0` and `n - 1`. Increments after each function call.\n * @return {Array} An array containing the return values of all calls to `fn`.\n * @see R.repeat\n * @example\n *\n *      R.times(R.identity, 5); //=\u003e [0, 1, 2, 3, 4]\n * @symb R.times(f, 0) = []\n * @symb R.times(f, 1) = [f(0)]\n * @symb R.times(f, 2) = [f(0), f(1)]\n */\n\nvar times =\n/*#__PURE__*/\n_curry2(function times(fn, n) {\n  var len = Number(n);\n  var idx = 0;\n  var list;\n\n  if (len \u003c 0 || isNaN(len)) {\n    throw new RangeError('n must be a non-negative number');\n  }\n\n  list = new Array(len);\n\n  while (idx \u003c len) {\n    list[idx] = fn(idx);\n    idx += 1;\n  }\n\n  return list;\n});\n\nexport default times;","import _curry2 from \"./internal/_curry2.js\";\nimport always from \"./always.js\";\nimport times from \"./times.js\";\n/**\n * Returns a fixed list of size `n` containing a specified identical value.\n *\n * @func\n * @memberOf R\n * @since v0.1.1\n * @category List\n * @sig a -\u003e n -\u003e [a]\n * @param {*} value The value to repeat.\n * @param {Number} n The desired size of the output list.\n * @return {Array} A new array containing `n` `value`s.\n * @see R.times\n * @example\n *\n *      R.repeat('hi', 5); //=\u003e ['hi', 'hi', 'hi', 'hi', 'hi']\n *\n *      const obj = {};\n *      const repeatedObjs = R.repeat(obj, 5); //=\u003e [{}, {}, {}, {}, {}]\n *      repeatedObjs[0] === repeatedObjs[1]; //=\u003e true\n * @symb R.repeat(a, 0) = []\n * @symb R.repeat(a, 1) = [a]\n * @symb R.repeat(a, 2) = [a, a]\n */\n\nvar repeat =\n/*#__PURE__*/\n_curry2(function repeat(value, n) {\n  return times(always(value), n);\n});\n\nexport default repeat;","import _curry3 from \"./internal/_curry3.js\";\n/**\n * Replace a substring or regex match in a string with a replacement.\n *\n * The first two parameters correspond to the parameters of the\n * `String.prototype.replace()` function, so the second parameter can also be a\n * function.\n *\n * @func\n * @memberOf R\n * @since v0.7.0\n * @category String\n * @sig RegExp|String -\u003e String -\u003e String -\u003e String\n * @param {RegExp|String} pattern A regular expression or a substring to match.\n * @param {String} replacement The string to replace the matches with.\n * @param {String} str The String to do the search and replacement in.\n * @return {String} The result.\n * @example\n *\n *      R.replace('foo', 'bar', 'foo foo foo'); //=\u003e 'bar foo foo'\n *      R.replace(/foo/, 'bar', 'foo foo foo'); //=\u003e 'bar foo foo'\n *\n *      // Use the \"g\" (global) flag to replace all occurrences:\n *      R.replace(/foo/g, 'bar', 'foo foo foo'); //=\u003e 'bar bar bar'\n */\n\nvar replace =\n/*#__PURE__*/\n_curry3(function replace(regex, replacement, str) {\n  return str.replace(regex, replacement);\n});\n\nexport default replace;","import _curry3 from \"./internal/_curry3.js\";\n/**\n * Scan is similar to [`reduce`](#reduce), but returns a list of successively\n * reduced values from the left\n *\n * @func\n * @memberOf R\n * @since v0.10.0\n * @category List\n * @sig ((a, b) -\u003e a) -\u003e a -\u003e [b] -\u003e [a]\n * @param {Function} fn The iterator function. Receives two values, the accumulator and the\n *        current element from the array\n * @param {*} acc The accumulator value.\n * @param {Array} list The list to iterate over.\n * @return {Array} A list of all intermediately reduced values.\n * @see R.reduce, R.mapAccum\n * @example\n *\n *      const numbers = [1, 2, 3, 4];\n *      const factorials = R.scan(R.multiply, 1, numbers); //=\u003e [1, 1, 2, 6, 24]\n * @symb R.scan(f, a, [b, c]) = [a, f(a, b), f(f(a, b), c)]\n */\n\nvar scan =\n/*#__PURE__*/\n_curry3(function scan(fn, acc, list) {\n  var idx = 0;\n  var len = list.length;\n  var result = [acc];\n\n  while (idx \u003c len) {\n    acc = fn(acc, list[idx]);\n    result[idx + 1] = acc;\n    idx += 1;\n  }\n\n  return result;\n});\n\nexport default scan;","import _curry2 from \"./internal/_curry2.js\";\nimport ap from \"./ap.js\";\nimport map from \"./map.js\";\nimport prepend from \"./prepend.js\";\nimport reduceRight from \"./reduceRight.js\";\n/**\n * Transforms a [Traversable](https://github.com/fantasyland/fantasy-land#traversable)\n * of [Applicative](https://github.com/fantasyland/fantasy-land#applicative) into an\n * Applicative of Traversable.\n *\n * Dispatches to the `sequence` method of the second argument, if present.\n *\n * @func\n * @memberOf R\n * @since v0.19.0\n * @category List\n * @sig (Applicative f, Traversable t) =\u003e (a -\u003e f a) -\u003e t (f a) -\u003e f (t a)\n * @param {Function} of\n * @param {*} traversable\n * @return {*}\n * @see R.traverse\n * @example\n *\n *      R.sequence(Maybe.of, [Just(1), Just(2), Just(3)]);   //=\u003e Just([1, 2, 3])\n *      R.sequence(Maybe.of, [Just(1), Just(2), Nothing()]); //=\u003e Nothing()\n *\n *      R.sequence(R.of, Just([1, 2, 3])); //=\u003e [Just(1), Just(2), Just(3)]\n *      R.sequence(R.of, Nothing());       //=\u003e [Nothing()]\n */\n\nvar sequence =\n/*#__PURE__*/\n_curry2(function sequence(of, traversable) {\n  return typeof traversable.sequence === 'function' ? traversable.sequence(of) : reduceRight(function (x, acc) {\n    return ap(map(prepend, x), acc);\n  }, of([]), traversable);\n});\n\nexport default sequence;","import _curry3 from \"./internal/_curry3.js\";\nimport always from \"./always.js\";\nimport over from \"./over.js\";\n/**\n * Returns the result of \"setting\" the portion of the given data structure\n * focused by the given lens to the given value.\n *\n * @func\n * @memberOf R\n * @since v0.16.0\n * @category Object\n * @typedefn Lens s a = Functor f =\u003e (a -\u003e f a) -\u003e s -\u003e f s\n * @sig Lens s a -\u003e a -\u003e s -\u003e s\n * @param {Lens} lens\n * @param {*} v\n * @param {*} x\n * @return {*}\n * @see R.view, R.over, R.lens, R.lensIndex, R.lensProp, R.lensPath\n * @example\n *\n *      const xLens = R.lensProp('x');\n *\n *      R.set(xLens, 4, {x: 1, y: 2});  //=\u003e {x: 4, y: 2}\n *      R.set(xLens, 8, {x: 1, y: 2});  //=\u003e {x: 8, y: 2}\n */\n\nvar set =\n/*#__PURE__*/\n_curry3(function set(lens, v, x) {\n  return over(lens, always(v), x);\n});\n\nexport default set;","import _curry2 from \"./internal/_curry2.js\";\n/**\n * Returns a copy of the list, sorted according to the comparator function,\n * which should accept two values at a time and return a negative number if the\n * first value is smaller, a positive number if it's larger, and zero if they\n * are equal. Please note that this is a **copy** of the list. It does not\n * modify the original.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig ((a, a) -\u003e Number) -\u003e [a] -\u003e [a]\n * @param {Function} comparator A sorting function :: a -\u003e b -\u003e Int\n * @param {Array} list The list to sort\n * @return {Array} a new array with its elements sorted by the comparator function.\n * @see R.ascend, R.descend\n * @example\n *\n *      const diff = function(a, b) { return a - b; };\n *      R.sort(diff, [4,2,7,5]); //=\u003e [2, 4, 5, 7]\n */\n\nvar sort =\n/*#__PURE__*/\n_curry2(function sort(comparator, list) {\n  return Array.prototype.slice.call(list, 0).sort(comparator);\n});\n\nexport default sort;","import _curry2 from \"./internal/_curry2.js\";\n/**\n * Sorts the list according to the supplied function.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Relation\n * @sig Ord b =\u003e (a -\u003e b) -\u003e [a] -\u003e [a]\n * @param {Function} fn\n * @param {Array} list The list to sort.\n * @return {Array} A new list sorted by the keys generated by `fn`.\n * @example\n *\n *      const sortByFirstItem = R.sortBy(R.prop(0));\n *      const pairs = [[-1, 1], [-2, 2], [-3, 3]];\n *      sortByFirstItem(pairs); //=\u003e [[-3, 3], [-2, 2], [-1, 1]]\n *\n *      const sortByNameCaseInsensitive = R.sortBy(R.compose(R.toLower, R.prop('name')));\n *      const alice = {\n *        name: 'ALICE',\n *        age: 101\n *      };\n *      const bob = {\n *        name: 'Bob',\n *        age: -10\n *      };\n *      const clara = {\n *        name: 'clara',\n *        age: 314.159\n *      };\n *      const people = [clara, bob, alice];\n *      sortByNameCaseInsensitive(people); //=\u003e [alice, bob, clara]\n */\n\nvar sortBy =\n/*#__PURE__*/\n_curry2(function sortBy(fn, list) {\n  return Array.prototype.slice.call(list, 0).sort(function (a, b) {\n    var aa = fn(a);\n    var bb = fn(b);\n    return aa \u003c bb ? -1 : aa \u003e bb ? 1 : 0;\n  });\n});\n\nexport default sortBy;","import _curry2 from \"./internal/_curry2.js\";\n/**\n * Sorts a list according to a list of comparators.\n *\n * @func\n * @memberOf R\n * @since v0.23.0\n * @category Relation\n * @sig [(a, a) -\u003e Number] -\u003e [a] -\u003e [a]\n * @param {Array} functions A list of comparator functions.\n * @param {Array} list The list to sort.\n * @return {Array} A new list sorted according to the comarator functions.\n * @see R.ascend, R.descend\n * @example\n *\n *      const alice = {\n *        name: 'alice',\n *        age: 40\n *      };\n *      const bob = {\n *        name: 'bob',\n *        age: 30\n *      };\n *      const clara = {\n *        name: 'clara',\n *        age: 40\n *      };\n *      const people = [clara, bob, alice];\n *      const ageNameSort = R.sortWith([\n *        R.descend(R.prop('age')),\n *        R.ascend(R.prop('name'))\n *      ]);\n *      ageNameSort(people); //=\u003e [alice, clara, bob]\n */\n\nvar sortWith =\n/*#__PURE__*/\n_curry2(function sortWith(fns, list) {\n  return Array.prototype.slice.call(list, 0).sort(function (a, b) {\n    var result = 0;\n    var i = 0;\n\n    while (result === 0 \u0026\u0026 i \u003c fns.length) {\n      result = fns[i](a, b);\n      i += 1;\n    }\n\n    return result;\n  });\n});\n\nexport default sortWith;","import invoker from \"./invoker.js\";\n/**\n * Splits a string into an array of strings based on the given\n * separator.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category String\n * @sig (String | RegExp) -\u003e String -\u003e [String]\n * @param {String|RegExp} sep The pattern.\n * @param {String} str The string to separate into an array.\n * @return {Array} The array of strings from `str` separated by `sep`.\n * @see R.join\n * @example\n *\n *      const pathComponents = R.split('/');\n *      R.tail(pathComponents('/usr/local/bin/node')); //=\u003e ['usr', 'local', 'bin', 'node']\n *\n *      R.split('.', 'a.b.c.xyz.d'); //=\u003e ['a', 'b', 'c', 'xyz', 'd']\n */\n\nvar split =\n/*#__PURE__*/\ninvoker(1, 'split');\nexport default split;","import _curry2 from \"./internal/_curry2.js\";\nimport length from \"./length.js\";\nimport slice from \"./slice.js\";\n/**\n * Splits a given list or string at a given index.\n *\n * @func\n * @memberOf R\n * @since v0.19.0\n * @category List\n * @sig Number -\u003e [a] -\u003e [[a], [a]]\n * @sig Number -\u003e String -\u003e [String, String]\n * @param {Number} index The index where the array/string is split.\n * @param {Array|String} array The array/string to be split.\n * @return {Array}\n * @example\n *\n *      R.splitAt(1, [1, 2, 3]);          //=\u003e [[1], [2, 3]]\n *      R.splitAt(5, 'hello world');      //=\u003e ['hello', ' world']\n *      R.splitAt(-1, 'foobar');          //=\u003e ['fooba', 'r']\n */\n\nvar splitAt =\n/*#__PURE__*/\n_curry2(function splitAt(index, array) {\n  return [slice(0, index, array), slice(index, length(array), array)];\n});\n\nexport default splitAt;","import _curry2 from \"./internal/_curry2.js\";\nimport slice from \"./slice.js\";\n/**\n * Splits a collection into slices of the specified length.\n *\n * @func\n * @memberOf R\n * @since v0.16.0\n * @category List\n * @sig Number -\u003e [a] -\u003e [[a]]\n * @sig Number -\u003e String -\u003e [String]\n * @param {Number} n\n * @param {Array} list\n * @return {Array}\n * @example\n *\n *      R.splitEvery(3, [1, 2, 3, 4, 5, 6, 7]); //=\u003e [[1, 2, 3], [4, 5, 6], [7]]\n *      R.splitEvery(3, 'foobarbaz'); //=\u003e ['foo', 'bar', 'baz']\n */\n\nvar splitEvery =\n/*#__PURE__*/\n_curry2(function splitEvery(n, list) {\n  if (n \u003c= 0) {\n    throw new Error('First argument to splitEvery must be a positive integer');\n  }\n\n  var result = [];\n  var idx = 0;\n\n  while (idx \u003c list.length) {\n    result.push(slice(idx, idx += n, list));\n  }\n\n  return result;\n});\n\nexport default splitEvery;","import _curry2 from \"./internal/_curry2.js\";\n/**\n * Takes a list and a predicate and returns a pair of lists with the following properties:\n *\n *  - the result of concatenating the two output lists is equivalent to the input list;\n *  - none of the elements of the first output list satisfies the predicate; and\n *  - if the second output list is non-empty, its first element satisfies the predicate.\n *\n * @func\n * @memberOf R\n * @since v0.19.0\n * @category List\n * @sig (a -\u003e Boolean) -\u003e [a] -\u003e [[a], [a]]\n * @param {Function} pred The predicate that determines where the array is split.\n * @param {Array} list The array to be split.\n * @return {Array}\n * @example\n *\n *      R.splitWhen(R.equals(2), [1, 2, 3, 1, 2, 3]);   //=\u003e [[1], [2, 3, 1, 2, 3]]\n */\n\nvar splitWhen =\n/*#__PURE__*/\n_curry2(function splitWhen(pred, list) {\n  var idx = 0;\n  var len = list.length;\n  var prefix = [];\n\n  while (idx \u003c len \u0026\u0026 !pred(list[idx])) {\n    prefix.push(list[idx]);\n    idx += 1;\n  }\n\n  return [prefix, Array.prototype.slice.call(list, idx)];\n});\n\nexport default splitWhen;","import _curryN from \"./internal/_curryN.js\";\n/**\n * Splits an array into slices on every occurrence of a value.\n *\n * @func\n * @memberOf R\n * @since v0.26.1\n * @category List\n * @sig (a -\u003e Boolean) -\u003e [a] -\u003e [[a]]\n * @param {Function} pred The predicate that determines where the array is split.\n * @param {Array} list The array to be split.\n * @return {Array}\n * @example\n *\n *      R.splitWhenever(R.equals(2), [1, 2, 3, 2, 4, 5, 2, 6, 7]); //=\u003e [[1], [3], [4, 5], [6, 7]]\n */\n\nvar splitWhenever =\n/*#__PURE__*/\n_curryN(2, [], function splitWhenever(pred, list) {\n  var acc = [];\n  var curr = [];\n\n  for (var i = 0; i \u003c list.length; i = i + 1) {\n    if (!pred(list[i])) {\n      curr.push(list[i]);\n    }\n\n    if ((i \u003c list.length - 1 \u0026\u0026 pred(list[i + 1]) || i === list.length - 1) \u0026\u0026 curr.length \u003e 0) {\n      acc.push(curr);\n      curr = [];\n    }\n  }\n\n  return acc;\n});\n\nexport default splitWhenever;","import _curry2 from \"./internal/_curry2.js\";\nimport equals from \"./equals.js\";\nimport take from \"./take.js\";\n/**\n * Checks if a list starts with the provided sublist.\n *\n * Similarly, checks if a string starts with the provided substring.\n *\n * @func\n * @memberOf R\n * @since v0.24.0\n * @category List\n * @sig [a] -\u003e [a] -\u003e Boolean\n * @sig String -\u003e String -\u003e Boolean\n * @param {*} prefix\n * @param {*} list\n * @return {Boolean}\n * @see R.endsWith\n * @example\n *\n *      R.startsWith('a', 'abc')                //=\u003e true\n *      R.startsWith('b', 'abc')                //=\u003e false\n *      R.startsWith(['a'], ['a', 'b', 'c'])    //=\u003e true\n *      R.startsWith(['b'], ['a', 'b', 'c'])    //=\u003e false\n */\n\nvar startsWith =\n/*#__PURE__*/\n_curry2(function (prefix, list) {\n  return equals(take(prefix.length, list), prefix);\n});\n\nexport default startsWith;","import _curry2 from \"./internal/_curry2.js\";\n/**\n * Subtracts its second argument from its first argument.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Math\n * @sig Number -\u003e Number -\u003e Number\n * @param {Number} a The first value.\n * @param {Number} b The second value.\n * @return {Number} The result of `a - b`.\n * @see R.add\n * @example\n *\n *      R.subtract(10, 8); //=\u003e 2\n *\n *      const minus5 = R.subtract(R.__, 5);\n *      minus5(17); //=\u003e 12\n *\n *      const complementaryAngle = R.subtract(90);\n *      complementaryAngle(30); //=\u003e 60\n *      complementaryAngle(72); //=\u003e 18\n */\n\nvar subtract =\n/*#__PURE__*/\n_curry2(function subtract(a, b) {\n  return Number(a) - Number(b);\n});\n\nexport default subtract;","import _curry2 from \"./internal/_curry2.js\";\nimport concat from \"./concat.js\";\nimport difference from \"./difference.js\";\n/**\n * Finds the set (i.e. no duplicates) of all elements contained in the first or\n * second list, but not both.\n *\n * @func\n * @memberOf R\n * @since v0.19.0\n * @category Relation\n * @sig [*] -\u003e [*] -\u003e [*]\n * @param {Array} list1 The first list.\n * @param {Array} list2 The second list.\n * @return {Array} The elements in `list1` or `list2`, but not both.\n * @see R.symmetricDifferenceWith, R.difference, R.differenceWith\n * @example\n *\n *      R.symmetricDifference([1,2,3,4], [7,6,5,4,3]); //=\u003e [1,2,7,6,5]\n *      R.symmetricDifference([7,6,5,4,3], [1,2,3,4]); //=\u003e [7,6,5,1,2]\n */\n\nvar symmetricDifference =\n/*#__PURE__*/\n_curry2(function symmetricDifference(list1, list2) {\n  return concat(difference(list1, list2), difference(list2, list1));\n});\n\nexport default symmetricDifference;","import _curry3 from \"./internal/_curry3.js\";\nimport concat from \"./concat.js\";\nimport differenceWith from \"./differenceWith.js\";\n/**\n * Finds the set (i.e. no duplicates) of all elements contained in the first or\n * second list, but not both. Duplication is determined according to the value\n * returned by applying the supplied predicate to two list elements.\n *\n * @func\n * @memberOf R\n * @since v0.19.0\n * @category Relation\n * @sig ((a, a) -\u003e Boolean) -\u003e [a] -\u003e [a] -\u003e [a]\n * @param {Function} pred A predicate used to test whether two items are equal.\n * @param {Array} list1 The first list.\n * @param {Array} list2 The second list.\n * @return {Array} The elements in `list1` or `list2`, but not both.\n * @see R.symmetricDifference, R.difference, R.differenceWith\n * @example\n *\n *      const eqA = R.eqBy(R.prop('a'));\n *      const l1 = [{a: 1}, {a: 2}, {a: 3}, {a: 4}];\n *      const l2 = [{a: 3}, {a: 4}, {a: 5}, {a: 6}];\n *      R.symmetricDifferenceWith(eqA, l1, l2); //=\u003e [{a: 1}, {a: 2}, {a: 5}, {a: 6}]\n */\n\nvar symmetricDifferenceWith =\n/*#__PURE__*/\n_curry3(function symmetricDifferenceWith(pred, list1, list2) {\n  return concat(differenceWith(pred, list1, list2), differenceWith(pred, list2, list1));\n});\n\nexport default symmetricDifferenceWith;","import _curry2 from \"./internal/_curry2.js\";\nimport slice from \"./slice.js\";\n/**\n * Returns a new list containing the last `n` elements of a given list, passing\n * each value to the supplied predicate function, and terminating when the\n * predicate function returns `false`. Excludes the element that caused the\n * predicate function to fail. The predicate function is passed one argument:\n * *(value)*.\n *\n * @func\n * @memberOf R\n * @since v0.16.0\n * @category List\n * @sig (a -\u003e Boolean) -\u003e [a] -\u003e [a]\n * @sig (a -\u003e Boolean) -\u003e String -\u003e String\n * @param {Function} fn The function called per iteration.\n * @param {Array} xs The collection to iterate over.\n * @return {Array} A new array.\n * @see R.dropLastWhile, R.addIndex\n * @example\n *\n *      const isNotOne = x =\u003e x !== 1;\n *\n *      R.takeLastWhile(isNotOne, [1, 2, 3, 4]); //=\u003e [2, 3, 4]\n *\n *      R.takeLastWhile(x =\u003e x !== 'R' , 'Ramda'); //=\u003e 'amda'\n */\n\nvar takeLastWhile =\n/*#__PURE__*/\n_curry2(function takeLastWhile(fn, xs) {\n  var idx = xs.length - 1;\n\n  while (idx \u003e= 0 \u0026\u0026 fn(xs[idx])) {\n    idx -= 1;\n  }\n\n  return slice(idx + 1, Infinity, xs);\n});\n\nexport default takeLastWhile;","import _curry2 from \"./_curry2.js\";\nimport _reduced from \"./_reduced.js\";\nimport _xfBase from \"./_xfBase.js\";\n\nvar XTakeWhile =\n/*#__PURE__*/\nfunction () {\n  function XTakeWhile(f, xf) {\n    this.xf = xf;\n    this.f = f;\n  }\n\n  XTakeWhile.prototype['@@transducer/init'] = _xfBase.init;\n  XTakeWhile.prototype['@@transducer/result'] = _xfBase.result;\n\n  XTakeWhile.prototype['@@transducer/step'] = function (result, input) {\n    return this.f(input) ? this.xf['@@transducer/step'](result, input) : _reduced(result);\n  };\n\n  return XTakeWhile;\n}();\n\nvar _xtakeWhile =\n/*#__PURE__*/\n_curry2(function _xtakeWhile(f, xf) {\n  return new XTakeWhile(f, xf);\n});\n\nexport default _xtakeWhile;","import _curry2 from \"./internal/_curry2.js\";\nimport _dispatchable from \"./internal/_dispatchable.js\";\nimport _xtakeWhile from \"./internal/_xtakeWhile.js\";\nimport slice from \"./slice.js\";\n/**\n * Returns a new list containing the first `n` elements of a given list,\n * passing each value to the supplied predicate function, and terminating when\n * the predicate function returns `false`. Excludes the element that caused the\n * predicate function to fail. The predicate function is passed one argument:\n * *(value)*.\n *\n * Dispatches to the `takeWhile` method of the second argument, if present.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig (a -\u003e Boolean) -\u003e [a] -\u003e [a]\n * @sig (a -\u003e Boolean) -\u003e String -\u003e String\n * @param {Function} fn The function called per iteration.\n * @param {Array} xs The collection to iterate over.\n * @return {Array} A new array.\n * @see R.dropWhile, R.transduce, R.addIndex\n * @example\n *\n *      const isNotFour = x =\u003e x !== 4;\n *\n *      R.takeWhile(isNotFour, [1, 2, 3, 4, 3, 2, 1]); //=\u003e [1, 2, 3]\n *\n *      R.takeWhile(x =\u003e x !== 'd' , 'Ramda'); //=\u003e 'Ram'\n */\n\nvar takeWhile =\n/*#__PURE__*/\n_curry2(\n/*#__PURE__*/\n_dispatchable(['takeWhile'], _xtakeWhile, function takeWhile(fn, xs) {\n  var idx = 0;\n  var len = xs.length;\n\n  while (idx \u003c len \u0026\u0026 fn(xs[idx])) {\n    idx += 1;\n  }\n\n  return slice(0, idx, xs);\n}));\n\nexport default takeWhile;","import _curry2 from \"./_curry2.js\";\nimport _xfBase from \"./_xfBase.js\";\n\nvar XTap =\n/*#__PURE__*/\nfunction () {\n  function XTap(f, xf) {\n    this.xf = xf;\n    this.f = f;\n  }\n\n  XTap.prototype['@@transducer/init'] = _xfBase.init;\n  XTap.prototype['@@transducer/result'] = _xfBase.result;\n\n  XTap.prototype['@@transducer/step'] = function (result, input) {\n    this.f(input);\n    return this.xf['@@transducer/step'](result, input);\n  };\n\n  return XTap;\n}();\n\nvar _xtap =\n/*#__PURE__*/\n_curry2(function _xtap(f, xf) {\n  return new XTap(f, xf);\n});\n\nexport default _xtap;","import _curry2 from \"./internal/_curry2.js\";\nimport _dispatchable from \"./internal/_dispatchable.js\";\nimport _xtap from \"./internal/_xtap.js\";\n/**\n * Runs the given function with the supplied object, then returns the object.\n *\n * Acts as a transducer if a transformer is given as second parameter.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Function\n * @sig (a -\u003e *) -\u003e a -\u003e a\n * @param {Function} fn The function to call with `x`. The return value of `fn` will be thrown away.\n * @param {*} x\n * @return {*} `x`.\n * @example\n *\n *      const sayX = x =\u003e console.log('x is ' + x);\n *      R.tap(sayX, 100); //=\u003e 100\n *      // logs 'x is 100'\n * @symb R.tap(f, a) = a\n */\n\nvar tap =\n/*#__PURE__*/\n_curry2(\n/*#__PURE__*/\n_dispatchable([], _xtap, function tap(fn, x) {\n  fn(x);\n  return x;\n}));\n\nexport default tap;","export default function _isRegExp(x) {\n  return Object.prototype.toString.call(x) === '[object RegExp]';\n}","import _cloneRegExp from \"./internal/_cloneRegExp.js\";\nimport _curry2 from \"./internal/_curry2.js\";\nimport _isRegExp from \"./internal/_isRegExp.js\";\nimport toString from \"./toString.js\";\n/**\n * Determines whether a given string matches a given regular expression.\n *\n * @func\n * @memberOf R\n * @since v0.12.0\n * @category String\n * @sig RegExp -\u003e String -\u003e Boolean\n * @param {RegExp} pattern\n * @param {String} str\n * @return {Boolean}\n * @see R.match\n * @example\n *\n *      R.test(/^x/, 'xyz'); //=\u003e true\n *      R.test(/^y/, 'xyz'); //=\u003e false\n */\n\nvar test =\n/*#__PURE__*/\n_curry2(function test(pattern, str) {\n  if (!_isRegExp(pattern)) {\n    throw new TypeError('‘test’ requires a value of type RegExp as its first argument; received ' + toString(pattern));\n  }\n\n  return _cloneRegExp(pattern).test(str);\n});\n\nexport default test;","import _curry2 from \"./internal/_curry2.js\";\nimport _assertPromise from \"./internal/_assertPromise.js\";\n/**\n * Returns the result of applying the onSuccess function to the value inside\n * a successfully resolved promise. This is useful for working with promises\n * inside function compositions.\n *\n * @func\n * @memberOf R\n * @since v0.27.1\n * @category Function\n * @sig (a -\u003e b) -\u003e (Promise e a) -\u003e (Promise e b)\n * @sig (a -\u003e (Promise e b)) -\u003e (Promise e a) -\u003e (Promise e b)\n * @param {Function} onSuccess The function to apply. Can return a value or a promise of a value.\n * @param {Promise} p\n * @return {Promise} The result of calling `p.then(onSuccess)`\n * @see R.otherwise\n * @example\n *\n *      const makeQuery = email =\u003e ({ query: { email }});\n *      const fetchMember = request =\u003e\n *        Promise.resolve({ firstName: 'Bob', lastName: 'Loblaw', id: 42 });\n *\n *      //getMemberName :: String -\u003e Promise ({ firstName, lastName })\n *      const getMemberName = R.pipe(\n *        makeQuery,\n *        fetchMember,\n *        R.andThen(R.pick(['firstName', 'lastName']))\n *      );\n *\n *      getMemberName('bob@gmail.com').then(console.log);\n */\n\nvar andThen =\n/*#__PURE__*/\n_curry2(function andThen(f, p) {\n  _assertPromise('andThen', p);\n\n  return p.then(f);\n});\n\nexport default andThen;","import invoker from \"./invoker.js\";\n/**\n * The lower case version of a string.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category String\n * @sig String -\u003e String\n * @param {String} str The string to lower case.\n * @return {String} The lower case version of `str`.\n * @see R.toUpper\n * @example\n *\n *      R.toLower('XYZ'); //=\u003e 'xyz'\n */\n\nvar toLower =\n/*#__PURE__*/\ninvoker(0, 'toLowerCase');\nexport default toLower;","import _curry1 from \"./internal/_curry1.js\";\nimport _has from \"./internal/_has.js\";\n/**\n * Converts an object into an array of key, value arrays. Only the object's\n * own properties are used.\n * Note that the order of the output array is not guaranteed to be consistent\n * across different JS platforms.\n *\n * @func\n * @memberOf R\n * @since v0.4.0\n * @category Object\n * @sig {String: *} -\u003e [[String,*]]\n * @param {Object} obj The object to extract from\n * @return {Array} An array of key, value arrays from the object's own properties.\n * @see R.fromPairs, R.keys, R.values\n * @example\n *\n *      R.toPairs({a: 1, b: 2, c: 3}); //=\u003e [['a', 1], ['b', 2], ['c', 3]]\n */\n\nvar toPairs =\n/*#__PURE__*/\n_curry1(function toPairs(obj) {\n  var pairs = [];\n\n  for (var prop in obj) {\n    if (_has(prop, obj)) {\n      pairs[pairs.length] = [prop, obj[prop]];\n    }\n  }\n\n  return pairs;\n});\n\nexport default toPairs;","import _curry1 from \"./internal/_curry1.js\";\n/**\n * Converts an object into an array of key, value arrays. The object's own\n * properties and prototype properties are used. Note that the order of the\n * output array is not guaranteed to be consistent across different JS\n * platforms.\n *\n * @func\n * @memberOf R\n * @since v0.4.0\n * @category Object\n * @sig {String: *} -\u003e [[String,*]]\n * @param {Object} obj The object to extract from\n * @return {Array} An array of key, value arrays from the object's own\n *         and prototype properties.\n * @example\n *\n *      const F = function() { this.x = 'X'; };\n *      F.prototype.y = 'Y';\n *      const f = new F();\n *      R.toPairsIn(f); //=\u003e [['x','X'], ['y','Y']]\n */\n\nvar toPairsIn =\n/*#__PURE__*/\n_curry1(function toPairsIn(obj) {\n  var pairs = [];\n\n  for (var prop in obj) {\n    pairs[pairs.length] = [prop, obj[prop]];\n  }\n\n  return pairs;\n});\n\nexport default toPairsIn;","import invoker from \"./invoker.js\";\n/**\n * The upper case version of a string.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category String\n * @sig String -\u003e String\n * @param {String} str The string to upper case.\n * @return {String} The upper case version of `str`.\n * @see R.toLower\n * @example\n *\n *      R.toUpper('abc'); //=\u003e 'ABC'\n */\n\nvar toUpper =\n/*#__PURE__*/\ninvoker(0, 'toUpperCase');\nexport default toUpper;","import _reduce from \"./internal/_reduce.js\";\nimport _xwrap from \"./internal/_xwrap.js\";\nimport curryN from \"./curryN.js\";\n/**\n * Initializes a transducer using supplied iterator function. Returns a single\n * item by iterating through the list, successively calling the transformed\n * iterator function and passing it an accumulator value and the current value\n * from the array, and then passing the result to the next call.\n *\n * The iterator function receives two values: *(acc, value)*. It will be\n * wrapped as a transformer to initialize the transducer. A transformer can be\n * passed directly in place of an iterator function. In both cases, iteration\n * may be stopped early with the [`R.reduced`](#reduced) function.\n *\n * A transducer is a function that accepts a transformer and returns a\n * transformer and can be composed directly.\n *\n * A transformer is an object that provides a 2-arity reducing iterator\n * function, step, 0-arity initial value function, init, and 1-arity result\n * extraction function, result. The step function is used as the iterator\n * function in reduce. The result function is used to convert the final\n * accumulator into the return type and in most cases is\n * [`R.identity`](#identity). The init function can be used to provide an\n * initial accumulator, but is ignored by transduce.\n *\n * The iteration is performed with [`R.reduce`](#reduce) after initializing the transducer.\n *\n * @func\n * @memberOf R\n * @since v0.12.0\n * @category List\n * @sig (c -\u003e c) -\u003e ((a, b) -\u003e a) -\u003e a -\u003e [b] -\u003e a\n * @param {Function} xf The transducer function. Receives a transformer and returns a transformer.\n * @param {Function} fn The iterator function. Receives two values, the accumulator and the\n *        current element from the array. Wrapped as transformer, if necessary, and used to\n *        initialize the transducer\n * @param {*} acc The initial accumulator value.\n * @param {Array} list The list to iterate over.\n * @return {*} The final, accumulated value.\n * @see R.reduce, R.reduced, R.into\n * @example\n *\n *      const numbers = [1, 2, 3, 4];\n *      const transducer = R.compose(R.map(R.add(1)), R.take(2));\n *      R.transduce(transducer, R.flip(R.append), [], numbers); //=\u003e [2, 3]\n *\n *      const isOdd = (x) =\u003e x % 2 !== 0;\n *      const firstOddTransducer = R.compose(R.filter(isOdd), R.take(1));\n *      R.transduce(firstOddTransducer, R.flip(R.append), [], R.range(0, 100)); //=\u003e [1]\n */\n\nvar transduce =\n/*#__PURE__*/\ncurryN(4, function transduce(xf, fn, acc, list) {\n  return _reduce(xf(typeof fn === 'function' ? _xwrap(fn) : fn), acc, list);\n});\nexport default transduce;","import _curry1 from \"./internal/_curry1.js\";\n/**\n * Transposes the rows and columns of a 2D list.\n * When passed a list of `n` lists of length `x`,\n * returns a list of `x` lists of length `n`.\n *\n *\n * @func\n * @memberOf R\n * @since v0.19.0\n * @category List\n * @sig [[a]] -\u003e [[a]]\n * @param {Array} list A 2D list\n * @return {Array} A 2D list\n * @example\n *\n *      R.transpose([[1, 'a'], [2, 'b'], [3, 'c']]) //=\u003e [[1, 2, 3], ['a', 'b', 'c']]\n *      R.transpose([[1, 2, 3], ['a', 'b', 'c']]) //=\u003e [[1, 'a'], [2, 'b'], [3, 'c']]\n *\n *      // If some of the rows are shorter than the following rows, their elements are skipped:\n *      R.transpose([[10, 11], [20], [], [30, 31, 32]]) //=\u003e [[10, 20, 30], [11, 31], [32]]\n * @symb R.transpose([[a], [b], [c]]) = [a, b, c]\n * @symb R.transpose([[a, b], [c, d]]) = [[a, c], [b, d]]\n * @symb R.transpose([[a, b], [c]]) = [[a, c], [b]]\n */\n\nvar transpose =\n/*#__PURE__*/\n_curry1(function transpose(outerlist) {\n  var i = 0;\n  var result = [];\n\n  while (i \u003c outerlist.length) {\n    var innerlist = outerlist[i];\n    var j = 0;\n\n    while (j \u003c innerlist.length) {\n      if (typeof result[j] === 'undefined') {\n        result[j] = [];\n      }\n\n      result[j].push(innerlist[j]);\n      j += 1;\n    }\n\n    i += 1;\n  }\n\n  return result;\n});\n\nexport default transpose;","import _curry3 from \"./internal/_curry3.js\";\nimport map from \"./map.js\";\nimport sequence from \"./sequence.js\";\n/**\n * Maps an [Applicative](https://github.com/fantasyland/fantasy-land#applicative)-returning\n * function over a [Traversable](https://github.com/fantasyland/fantasy-land#traversable),\n * then uses [`sequence`](#sequence) to transform the resulting Traversable of Applicative\n * into an Applicative of Traversable.\n *\n * Dispatches to the `traverse` method of the third argument, if present.\n *\n * @func\n * @memberOf R\n * @since v0.19.0\n * @category List\n * @sig (Applicative f, Traversable t) =\u003e (a -\u003e f a) -\u003e (a -\u003e f b) -\u003e t a -\u003e f (t b)\n * @param {Function} of\n * @param {Function} f\n * @param {*} traversable\n * @return {*}\n * @see R.sequence\n * @example\n *\n *      // Returns `Maybe.Nothing` if the given divisor is `0`\n *      const safeDiv = n =\u003e d =\u003e d === 0 ? Maybe.Nothing() : Maybe.Just(n / d)\n *\n *      R.traverse(Maybe.of, safeDiv(10), [2, 4, 5]); //=\u003e Maybe.Just([5, 2.5, 2])\n *      R.traverse(Maybe.of, safeDiv(10), [2, 0, 5]); //=\u003e Maybe.Nothing\n */\n\nvar traverse =\n/*#__PURE__*/\n_curry3(function traverse(of, f, traversable) {\n  return typeof traversable['fantasy-land/traverse'] === 'function' ? traversable['fantasy-land/traverse'](f, of) : typeof traversable.traverse === 'function' ? traversable.traverse(f, of) : sequence(of, map(f, traversable));\n});\n\nexport default traverse;","import _curry1 from \"./internal/_curry1.js\";\nvar ws = '\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u2000\\u2001\\u2002\\u2003' + '\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028' + '\\u2029\\uFEFF';\nvar zeroWidth = '\\u200b';\nvar hasProtoTrim = typeof String.prototype.trim === 'function';\n/**\n * Removes (strips) whitespace from both ends of the string.\n *\n * @func\n * @memberOf R\n * @since v0.6.0\n * @category String\n * @sig String -\u003e String\n * @param {String} str The string to trim.\n * @return {String} Trimmed version of `str`.\n * @example\n *\n *      R.trim('   xyz  '); //=\u003e 'xyz'\n *      R.map(R.trim, R.split(',', 'x, y, z')); //=\u003e ['x', 'y', 'z']\n */\n\nvar trim = !hasProtoTrim ||\n/*#__PURE__*/\nws.trim() || !\n/*#__PURE__*/\nzeroWidth.trim() ?\n/*#__PURE__*/\n_curry1(function trim(str) {\n  var beginRx = new RegExp('^[' + ws + '][' + ws + ']*');\n  var endRx = new RegExp('[' + ws + '][' + ws + ']*$');\n  return str.replace(beginRx, '').replace(endRx, '');\n}) :\n/*#__PURE__*/\n_curry1(function trim(str) {\n  return str.trim();\n});\nexport default trim;","import _arity from \"./internal/_arity.js\";\nimport _concat from \"./internal/_concat.js\";\nimport _curry2 from \"./internal/_curry2.js\";\n/**\n * `tryCatch` takes two functions, a `tryer` and a `catcher`. The returned\n * function evaluates the `tryer`; if it does not throw, it simply returns the\n * result. If the `tryer` *does* throw, the returned function evaluates the\n * `catcher` function and returns its result. Note that for effective\n * composition with this function, both the `tryer` and `catcher` functions\n * must return the same type of results.\n *\n * @func\n * @memberOf R\n * @since v0.20.0\n * @category Function\n * @sig (...x -\u003e a) -\u003e ((e, ...x) -\u003e a) -\u003e (...x -\u003e a)\n * @param {Function} tryer The function that may throw.\n * @param {Function} catcher The function that will be evaluated if `tryer` throws.\n * @return {Function} A new function that will catch exceptions and send them to the catcher.\n * @example\n *\n *      R.tryCatch(R.prop('x'), R.F)({x: true}); //=\u003e true\n *      R.tryCatch(() =\u003e { throw 'foo'}, R.always('caught'))('bar') // =\u003e\n *      'caught'\n *      R.tryCatch(R.times(R.identity), R.always([]))('s') // =\u003e []\n *      R.tryCatch(() =\u003e { throw 'this is not a valid value'}, (err, value)=\u003e({error : err,  value }))('bar') // =\u003e {'error': 'this is not a valid value', 'value': 'bar'}\n */\n\nvar tryCatch =\n/*#__PURE__*/\n_curry2(function _tryCatch(tryer, catcher) {\n  return _arity(tryer.length, function () {\n    try {\n      return tryer.apply(this, arguments);\n    } catch (e) {\n      return catcher.apply(this, _concat([e], arguments));\n    }\n  });\n});\n\nexport default tryCatch;","import _curry1 from \"./internal/_curry1.js\";\n/**\n * Takes a function `fn`, which takes a single array argument, and returns a\n * function which:\n *\n *   - takes any number of positional arguments;\n *   - passes these arguments to `fn` as an array; and\n *   - returns the result.\n *\n * In other words, `R.unapply` derives a variadic function from a function which\n * takes an array. `R.unapply` is the inverse of [`R.apply`](#apply).\n *\n * @func\n * @memberOf R\n * @since v0.8.0\n * @category Function\n * @sig ([*...] -\u003e a) -\u003e (*... -\u003e a)\n * @param {Function} fn\n * @return {Function}\n * @see R.apply\n * @example\n *\n *      R.unapply(JSON.stringify)(1, 2, 3); //=\u003e '[1,2,3]'\n * @symb R.unapply(f)(a, b) = f([a, b])\n */\n\nvar unapply =\n/*#__PURE__*/\n_curry1(function unapply(fn) {\n  return function () {\n    return fn(Array.prototype.slice.call(arguments, 0));\n  };\n});\n\nexport default unapply;","import _curry1 from \"./internal/_curry1.js\";\nimport nAry from \"./nAry.js\";\n/**\n * Wraps a function of any arity (including nullary) in a function that accepts\n * exactly 1 parameter. Any extraneous parameters will not be passed to the\n * supplied function.\n *\n * @func\n * @memberOf R\n * @since v0.2.0\n * @category Function\n * @sig (a -\u003e b -\u003e c -\u003e ... -\u003e z) -\u003e (a -\u003e z)\n * @param {Function} fn The function to wrap.\n * @return {Function} A new function wrapping `fn`. The new function is guaranteed to be of\n *         arity 1.\n * @see R.binary, R.nAry\n * @example\n *\n *      const takesTwoArgs = function(a, b) {\n *        return [a, b];\n *      };\n *      takesTwoArgs.length; //=\u003e 2\n *      takesTwoArgs(1, 2); //=\u003e [1, 2]\n *\n *      const takesOneArg = R.unary(takesTwoArgs);\n *      takesOneArg.length; //=\u003e 1\n *      // Only 1 argument is passed to the wrapped function\n *      takesOneArg(1, 2); //=\u003e [1, undefined]\n * @symb R.unary(f)(a, b, c) = f(a)\n */\n\nvar unary =\n/*#__PURE__*/\n_curry1(function unary(fn) {\n  return nAry(1, fn);\n});\n\nexport default unary;","import _curry2 from \"./internal/_curry2.js\";\nimport curryN from \"./curryN.js\";\n/**\n * Returns a function of arity `n` from a (manually) curried function.\n * Note that, the returned function is actually a ramda style\n * curryied function, which can accept one or more arguments in each\n * function calling.\n *\n * @func\n * @memberOf R\n * @since v0.14.0\n * @category Function\n * @sig Number -\u003e (a -\u003e b -\u003e c ... -\u003e z) -\u003e ((a -\u003e b -\u003e c ...) -\u003e z)\n * @param {Number} length The arity for the returned function.\n * @param {Function} fn The function to uncurry.\n * @return {Function} A new function.\n * @see R.curry, R.curryN\n * @example\n *\n *      const addFour = a =\u003e b =\u003e c =\u003e d =\u003e a + b + c + d;\n *\n *      const uncurriedAddFour = R.uncurryN(4, addFour);\n *      uncurriedAddFour(1, 2, 3, 4); //=\u003e 10\n */\n\nvar uncurryN =\n/*#__PURE__*/\n_curry2(function uncurryN(depth, fn) {\n  return curryN(depth, function () {\n    var currentDepth = 1;\n    var value = fn;\n    var idx = 0;\n    var endIdx;\n\n    while (currentDepth \u003c= depth \u0026\u0026 typeof value === 'function') {\n      endIdx = currentDepth === depth ? arguments.length : idx + value.length;\n      value = value.apply(this, Array.prototype.slice.call(arguments, idx, endIdx));\n      currentDepth += 1;\n      idx = endIdx;\n    }\n\n    return value;\n  });\n});\n\nexport default uncurryN;","import _curry2 from \"./internal/_curry2.js\";\n/**\n * Builds a list from a seed value. Accepts an iterator function, which returns\n * either false to stop iteration or an array of length 2 containing the value\n * to add to the resulting list and the seed to be used in the next call to the\n * iterator function.\n *\n * The iterator function receives one argument: *(seed)*.\n *\n * @func\n * @memberOf R\n * @since v0.10.0\n * @category List\n * @sig (a -\u003e [b]) -\u003e * -\u003e [b]\n * @param {Function} fn The iterator function. receives one argument, `seed`, and returns\n *        either false to quit iteration or an array of length two to proceed. The element\n *        at index 0 of this array will be added to the resulting array, and the element\n *        at index 1 will be passed to the next call to `fn`.\n * @param {*} seed The seed value.\n * @return {Array} The final list.\n * @example\n *\n *      const f = n =\u003e n \u003e 50 ? false : [-n, n + 10];\n *      R.unfold(f, 10); //=\u003e [-10, -20, -30, -40, -50]\n * @symb R.unfold(f, x) = [f(x)[0], f(f(x)[1])[0], f(f(f(x)[1])[1])[0], ...]\n */\n\nvar unfold =\n/*#__PURE__*/\n_curry2(function unfold(fn, seed) {\n  var pair = fn(seed);\n  var result = [];\n\n  while (pair \u0026\u0026 pair.length) {\n    result[result.length] = pair[0];\n    pair = fn(pair[1]);\n  }\n\n  return result;\n});\n\nexport default unfold;","import _concat from \"./internal/_concat.js\";\nimport _curry2 from \"./internal/_curry2.js\";\nimport compose from \"./compose.js\";\nimport uniq from \"./uniq.js\";\n/**\n * Combines two lists into a set (i.e. no duplicates) composed of the elements\n * of each list.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Relation\n * @sig [*] -\u003e [*] -\u003e [*]\n * @param {Array} as The first list.\n * @param {Array} bs The second list.\n * @return {Array} The first and second lists concatenated, with\n *         duplicates removed.\n * @example\n *\n *      R.union([1, 2, 3], [2, 3, 4]); //=\u003e [1, 2, 3, 4]\n */\n\nvar union =\n/*#__PURE__*/\n_curry2(\n/*#__PURE__*/\ncompose(uniq, _concat));\n\nexport default union;","import _curry2 from \"./_curry2.js\";\nimport _includesWith from \"./_includesWith.js\";\nimport _xfBase from \"./_xfBase.js\";\n\nvar XUniqWith =\n/*#__PURE__*/\nfunction () {\n  function XUniqWith(pred, xf) {\n    this.xf = xf;\n    this.pred = pred;\n    this.items = [];\n  }\n\n  XUniqWith.prototype['@@transducer/init'] = _xfBase.init;\n  XUniqWith.prototype['@@transducer/result'] = _xfBase.result;\n\n  XUniqWith.prototype['@@transducer/step'] = function (result, input) {\n    if (_includesWith(this.pred, input, this.items)) {\n      return result;\n    } else {\n      this.items.push(input);\n      return this.xf['@@transducer/step'](result, input);\n    }\n  };\n\n  return XUniqWith;\n}();\n\nvar _xuniqWith =\n/*#__PURE__*/\n_curry2(function _xuniqWith(pred, xf) {\n  return new XUniqWith(pred, xf);\n});\n\nexport default _xuniqWith;","import _curry2 from \"./internal/_curry2.js\";\nimport _dispatchable from \"./internal/_dispatchable.js\";\nimport _includesWith from \"./internal/_includesWith.js\";\nimport _xuniqWith from \"./internal/_xuniqWith.js\";\n/**\n * Returns a new list containing only one copy of each element in the original\n * list, based upon the value returned by applying the supplied predicate to\n * two list elements. Prefers the first item if two items compare equal based\n * on the predicate.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.2.0\n * @category List\n * @sig ((a, a) -\u003e Boolean) -\u003e [a] -\u003e [a]\n * @param {Function} pred A predicate used to test whether two items are equal.\n * @param {Array} list The array to consider.\n * @return {Array} The list of unique items.\n * @example\n *\n *      const strEq = R.eqBy(String);\n *      R.uniqWith(strEq)([1, '1', 2, 1]); //=\u003e [1, 2]\n *      R.uniqWith(strEq)([{}, {}]);       //=\u003e [{}]\n *      R.uniqWith(strEq)([1, '1', 1]);    //=\u003e [1]\n *      R.uniqWith(strEq)(['1', 1, 1]);    //=\u003e ['1']\n */\n\nvar uniqWith =\n/*#__PURE__*/\n_curry2(\n/*#__PURE__*/\n_dispatchable([], _xuniqWith, function (pred, list) {\n  var idx = 0;\n  var len = list.length;\n  var result = [];\n  var item;\n\n  while (idx \u003c len) {\n    item = list[idx];\n\n    if (!_includesWith(pred, item, result)) {\n      result[result.length] = item;\n    }\n\n    idx += 1;\n  }\n\n  return result;\n}));\n\nexport default uniqWith;","import _concat from \"./internal/_concat.js\";\nimport _curry3 from \"./internal/_curry3.js\";\nimport uniqWith from \"./uniqWith.js\";\n/**\n * Combines two lists into a set (i.e. no duplicates) composed of the elements\n * of each list. Duplication is determined according to the value returned by\n * applying the supplied predicate to two list elements. If an element exists\n * in both lists, the first element from the first list will be used.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Relation\n * @sig ((a, a) -\u003e Boolean) -\u003e [*] -\u003e [*] -\u003e [*]\n * @param {Function} pred A predicate used to test whether two items are equal.\n * @param {Array} list1 The first list.\n * @param {Array} list2 The second list.\n * @return {Array} The first and second lists concatenated, with\n *         duplicates removed.\n * @see R.union\n * @example\n *\n *      const l1 = [{a: 1}, {a: 2}];\n *      const l2 = [{a: 1}, {a: 4}];\n *      R.unionWith(R.eqBy(R.prop('a')), l1, l2); //=\u003e [{a: 1}, {a: 2}, {a: 4}]\n */\n\nvar unionWith =\n/*#__PURE__*/\n_curry3(function unionWith(pred, list1, list2) {\n  return uniqWith(pred, _concat(list1, list2));\n});\n\nexport default unionWith;","import _curry3 from \"./internal/_curry3.js\";\n/**\n * Tests the final argument by passing it to the given predicate function. If\n * the predicate is not satisfied, the function will return the result of\n * calling the `whenFalseFn` function with the same argument. If the predicate\n * is satisfied, the argument is returned as is.\n *\n * @func\n * @memberOf R\n * @since v0.18.0\n * @category Logic\n * @sig (a -\u003e Boolean) -\u003e (a -\u003e b) -\u003e a -\u003e a | b\n * @param {Function} pred        A predicate function\n * @param {Function} whenFalseFn A function to invoke when the `pred` evaluates\n *                               to a falsy value.\n * @param {*}        x           An object to test with the `pred` function and\n *                               pass to `whenFalseFn` if necessary.\n * @return {*} Either `x` or the result of applying `x` to `whenFalseFn`.\n * @see R.ifElse, R.when, R.cond\n * @example\n *\n *      let safeInc = R.unless(R.isNil, R.inc);\n *      safeInc(null); //=\u003e null\n *      safeInc(1); //=\u003e 2\n */\n\nvar unless =\n/*#__PURE__*/\n_curry3(function unless(pred, whenFalseFn, x) {\n  return pred(x) ? x : whenFalseFn(x);\n});\n\nexport default unless;","import _identity from \"./internal/_identity.js\";\nimport chain from \"./chain.js\";\n/**\n * Shorthand for `R.chain(R.identity)`, which removes one level of nesting from\n * any [Chain](https://github.com/fantasyland/fantasy-land#chain).\n *\n * @func\n * @memberOf R\n * @since v0.3.0\n * @category List\n * @sig Chain c =\u003e c (c a) -\u003e c a\n * @param {*} list\n * @return {*}\n * @see R.flatten, R.chain\n * @example\n *\n *      R.unnest([1, [2], [[3]]]); //=\u003e [1, 2, [3]]\n *      R.unnest([[1, 2], [3, 4], [5, 6]]); //=\u003e [1, 2, 3, 4, 5, 6]\n */\n\nvar unnest =\n/*#__PURE__*/\nchain(_identity);\nexport default unnest;","import _curry3 from \"./internal/_curry3.js\";\n/**\n * Takes a predicate, a transformation function, and an initial value,\n * and returns a value of the same type as the initial value.\n * It does so by applying the transformation until the predicate is satisfied,\n * at which point it returns the satisfactory value.\n *\n * @func\n * @memberOf R\n * @since v0.20.0\n * @category Logic\n * @sig (a -\u003e Boolean) -\u003e (a -\u003e a) -\u003e a -\u003e a\n * @param {Function} pred A predicate function\n * @param {Function} fn The iterator function\n * @param {*} init Initial value\n * @return {*} Final value that satisfies predicate\n * @example\n *\n *      R.until(R.gt(R.__, 100), R.multiply(2))(1) // =\u003e 128\n */\n\nvar until =\n/*#__PURE__*/\n_curry3(function until(pred, fn, init) {\n  var val = init;\n\n  while (!pred(val)) {\n    val = fn(val);\n  }\n\n  return val;\n});\n\nexport default until;","import _curry2 from \"./internal/_curry2.js\";\nimport _isArray from \"./internal/_isArray.js\";\nimport _map from \"./internal/_map.js\";\nimport _assoc from \"./internal/_assoc.js\";\n/**\n *\n * Deconstructs an array field from the input documents to output a document for each element.\n * Each output document is the input document with the value of the array field replaced by the element.\n *\n * @func\n * @memberOf R\n * @since v0.28.0\n * @category Object\n * @sig String -\u003e {k: [v]} -\u003e [{k: v}]\n * @param {String} key The key to determine which property of the object should be unwind\n * @param {Object} object The object containing list under property named as key which is to unwind\n * @return {List} A new list of object containing the value of input key having list replaced by each element in the object.\n * @example\n *\n * R.unwind('hobbies', {\n *   name: 'alice',\n *   hobbies: ['Golf', 'Hacking'],\n *   colors: ['red', 'green'],\n * });\n * // [\n * //   { name: 'alice', hobbies: 'Golf', colors: ['red', 'green'] },\n * //   { name: 'alice', hobbies: 'Hacking', colors: ['red', 'green'] }\n * // ]\n */\n\nvar unwind =\n/*#__PURE__*/\n_curry2(function (key, object) {\n  // If key is not in object or key is not as a list in object\n  if (!(key in object \u0026\u0026 _isArray(object[key]))) {\n    return [object];\n  } // Map over object[key] which is a list and assoc each element with key\n\n\n  return _map(function (item) {\n    return _assoc(key, item, object);\n  }, object[key]);\n});\n\nexport default unwind;","import _curry1 from \"./internal/_curry1.js\";\n/**\n * Returns a list of all the properties, including prototype properties, of the\n * supplied object.\n * Note that the order of the output array is not guaranteed to be consistent\n * across different JS platforms.\n *\n * @func\n * @memberOf R\n * @since v0.2.0\n * @category Object\n * @sig {k: v} -\u003e [v]\n * @param {Object} obj The object to extract values from\n * @return {Array} An array of the values of the object's own and prototype properties.\n * @see R.values, R.keysIn\n * @example\n *\n *      const F = function() { this.x = 'X'; };\n *      F.prototype.y = 'Y';\n *      const f = new F();\n *      R.valuesIn(f); //=\u003e ['X', 'Y']\n */\n\nvar valuesIn =\n/*#__PURE__*/\n_curry1(function valuesIn(obj) {\n  var prop;\n  var vs = [];\n\n  for (prop in obj) {\n    vs[vs.length] = obj[prop];\n  }\n\n  return vs;\n});\n\nexport default valuesIn;","import _curry2 from \"./internal/_curry2.js\"; // `Const` is a functor that effectively ignores the function given to `map`.\n\nvar Const = function (x) {\n  return {\n    value: x,\n    'fantasy-land/map': function () {\n      return this;\n    }\n  };\n};\n/**\n * Returns a \"view\" of the given data structure, determined by the given lens.\n * The lens's focus determines which portion of the data structure is visible.\n *\n * @func\n * @memberOf R\n * @since v0.16.0\n * @category Object\n * @typedefn Lens s a = Functor f =\u003e (a -\u003e f a) -\u003e s -\u003e f s\n * @sig Lens s a -\u003e s -\u003e a\n * @param {Lens} lens\n * @param {*} x\n * @return {*}\n * @see R.set, R.over, R.lens, R.lensIndex, R.lensProp, R.lensPath\n * @example\n *\n *      const xLens = R.lensProp('x');\n *\n *      R.view(xLens, {x: 1, y: 2});  //=\u003e 1\n *      R.view(xLens, {x: 4, y: 2});  //=\u003e 4\n */\n\n\nvar view =\n/*#__PURE__*/\n_curry2(function view(lens, x) {\n  // Using `Const` effectively ignores the setter function of the `lens`,\n  // leaving the value returned by the getter function unmodified.\n  return lens(Const)(x).value;\n});\n\nexport default view;","import _curry3 from \"./internal/_curry3.js\";\n/**\n * Tests the final argument by passing it to the given predicate function. If\n * the predicate is satisfied, the function will return the result of calling\n * the `whenTrueFn` function with the same argument. If the predicate is not\n * satisfied, the argument is returned as is.\n *\n * @func\n * @memberOf R\n * @since v0.18.0\n * @category Logic\n * @sig (a -\u003e Boolean) -\u003e (a -\u003e b) -\u003e a -\u003e a | b\n * @param {Function} pred       A predicate function\n * @param {Function} whenTrueFn A function to invoke when the `condition`\n *                              evaluates to a truthy value.\n * @param {*}        x          An object to test with the `pred` function and\n *                              pass to `whenTrueFn` if necessary.\n * @return {*} Either `x` or the result of applying `x` to `whenTrueFn`.\n * @see R.ifElse, R.unless, R.cond\n * @example\n *\n *      // truncate :: String -\u003e String\n *      const truncate = R.when(\n *        R.propSatisfies(R.gt(R.__, 10), 'length'),\n *        R.pipe(R.take(10), R.append('…'), R.join(''))\n *      );\n *      truncate('12345');         //=\u003e '12345'\n *      truncate('0123456789ABC'); //=\u003e '0123456789…'\n */\n\nvar when =\n/*#__PURE__*/\n_curry3(function when(pred, whenTrueFn, x) {\n  return pred(x) ? whenTrueFn(x) : x;\n});\n\nexport default when;","import _curry2 from \"./internal/_curry2.js\";\nimport _has from \"./internal/_has.js\";\n/**\n * Takes a spec object and a test object; returns true if the test satisfies\n * the spec. Each of the spec's own properties must be a predicate function.\n * Each predicate is applied to the value of the corresponding property of the\n * test object. `where` returns true if all the predicates return true, false\n * otherwise.\n *\n * `where` is well suited to declaratively expressing constraints for other\n * functions such as [`filter`](#filter) and [`find`](#find).\n *\n * @func\n * @memberOf R\n * @since v0.1.1\n * @category Object\n * @sig {String: (* -\u003e Boolean)} -\u003e {String: *} -\u003e Boolean\n * @param {Object} spec\n * @param {Object} testObj\n * @return {Boolean}\n * @see R.propSatisfies, R.whereEq\n * @example\n *\n *      // pred :: Object -\u003e Boolean\n *      const pred = R.where({\n *        a: R.equals('foo'),\n *        b: R.complement(R.equals('bar')),\n *        x: R.gt(R.__, 10),\n *        y: R.lt(R.__, 20)\n *      });\n *\n *      pred({a: 'foo', b: 'xxx', x: 11, y: 19}); //=\u003e true\n *      pred({a: 'xxx', b: 'xxx', x: 11, y: 19}); //=\u003e false\n *      pred({a: 'foo', b: 'bar', x: 11, y: 19}); //=\u003e false\n *      pred({a: 'foo', b: 'xxx', x: 10, y: 19}); //=\u003e false\n *      pred({a: 'foo', b: 'xxx', x: 11, y: 20}); //=\u003e false\n */\n\nvar where =\n/*#__PURE__*/\n_curry2(function where(spec, testObj) {\n  for (var prop in spec) {\n    if (_has(prop, spec) \u0026\u0026 !spec[prop](testObj[prop])) {\n      return false;\n    }\n  }\n\n  return true;\n});\n\nexport default where;","import _curry2 from \"./internal/_curry2.js\";\nimport _has from \"./internal/_has.js\";\n/**\n * Takes a spec object and a test object; each of the spec's own properties must be a predicate function.\n * Each predicate is applied to the value of the corresponding property of the\n * test object. `whereAny` returns true if at least one of the predicates return true,\n * false otherwise.\n *\n * `whereAny` is well suited to declaratively expressing constraints for other\n * functions such as [`filter`](#filter) and [`find`](#find).\n *\n * @func\n * @memberOf R\n * @since v0.28.0\n * @category Object\n * @sig {String: (* -\u003e Boolean)} -\u003e {String: *} -\u003e Boolean\n * @param {Object} spec\n * @param {Object} testObj\n * @return {Boolean}\n * @see R.propSatisfies, R.where\n * @example\n *\n *      // pred :: Object -\u003e Boolean\n *      const pred = R.whereAny({\n *        a: R.equals('foo'),\n *        b: R.complement(R.equals('xxx')),\n *        x: R.gt(R.__, 10),\n *        y: R.lt(R.__, 20)\n *      });\n *\n *      pred({a: 'foo', b: 'xxx', x: 8, y: 34}); //=\u003e true\n *      pred({a: 'xxx', b: 'xxx', x: 9, y: 21}); //=\u003e false\n *      pred({a: 'bar', b: 'xxx', x: 10, y: 20}); //=\u003e false\n *      pred({a: 'foo', b: 'bar', x: 10, y: 20}); //=\u003e true\n *      pred({a: 'foo', b: 'xxx', x: 11, y: 20}); //=\u003e true\n */\n\nvar whereAny =\n/*#__PURE__*/\n_curry2(function whereAny(spec, testObj) {\n  for (var prop in spec) {\n    if (_has(prop, spec) \u0026\u0026 spec[prop](testObj[prop])) {\n      return true;\n    }\n  }\n\n  return false;\n});\n\nexport default whereAny;","import _curry2 from \"./internal/_curry2.js\";\nimport equals from \"./equals.js\";\nimport map from \"./map.js\";\nimport where from \"./where.js\";\n/**\n * Takes a spec object and a test object; returns true if the test satisfies\n * the spec, false otherwise. An object satisfies the spec if, for each of the\n * spec's own properties, accessing that property of the object gives the same\n * value (in [`R.equals`](#equals) terms) as accessing that property of the\n * spec.\n *\n * `whereEq` is a specialization of [`where`](#where).\n *\n * @func\n * @memberOf R\n * @since v0.14.0\n * @category Object\n * @sig {String: *} -\u003e {String: *} -\u003e Boolean\n * @param {Object} spec\n * @param {Object} testObj\n * @return {Boolean}\n * @see R.propEq, R.where\n * @example\n *\n *      // pred :: Object -\u003e Boolean\n *      const pred = R.whereEq({a: 1, b: 2});\n *\n *      pred({a: 1});              //=\u003e false\n *      pred({a: 1, b: 2});        //=\u003e true\n *      pred({a: 1, b: 2, c: 3});  //=\u003e true\n *      pred({a: 1, b: 1});        //=\u003e false\n */\n\nvar whereEq =\n/*#__PURE__*/\n_curry2(function whereEq(spec, testObj) {\n  return where(map(equals, spec), testObj);\n});\n\nexport default whereEq;","import _includes from \"./internal/_includes.js\";\nimport _curry2 from \"./internal/_curry2.js\";\nimport flip from \"./flip.js\";\nimport reject from \"./reject.js\";\n/**\n * Returns a new list without values in the first argument.\n * [`R.equals`](#equals) is used to determine equality.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.19.0\n * @category List\n * @sig [a] -\u003e [a] -\u003e [a]\n * @param {Array} list1 The values to be removed from `list2`.\n * @param {Array} list2 The array to remove values from.\n * @return {Array} The new array without values in `list1`.\n * @see R.transduce, R.difference, R.remove\n * @example\n *\n *      R.without([1, 2], [1, 2, 1, 3, 4]); //=\u003e [3, 4]\n */\n\nvar without =\n/*#__PURE__*/\n_curry2(function (xs, list) {\n  return reject(flip(_includes)(xs), list);\n});\n\nexport default without;","import _curry2 from \"./internal/_curry2.js\";\n/**\n * Exclusive disjunction logical operation.\n * Returns `true` if one of the arguments is truthy and the other is falsy.\n * Otherwise, it returns `false`.\n *\n * @func\n * @memberOf R\n * @since v0.27.1\n * @category Logic\n * @sig a -\u003e b -\u003e Boolean\n * @param {Any} a\n * @param {Any} b\n * @return {Boolean} true if one of the arguments is truthy and the other is falsy\n * @see R.or, R.and\n * @example\n *\n *      R.xor(true, true); //=\u003e false\n *      R.xor(true, false); //=\u003e true\n *      R.xor(false, true); //=\u003e true\n *      R.xor(false, false); //=\u003e false\n */\n\nvar xor =\n/*#__PURE__*/\n_curry2(function xor(a, b) {\n  return Boolean(!a ^ !b);\n});\n\nexport default xor;","import _curry2 from \"./internal/_curry2.js\";\n/**\n * Creates a new list out of the two supplied by creating each possible pair\n * from the lists.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig [a] -\u003e [b] -\u003e [[a,b]]\n * @param {Array} as The first list.\n * @param {Array} bs The second list.\n * @return {Array} The list made by combining each possible pair from\n *         `as` and `bs` into pairs (`[a, b]`).\n * @example\n *\n *      R.xprod([1, 2], ['a', 'b']); //=\u003e [[1, 'a'], [1, 'b'], [2, 'a'], [2, 'b']]\n * @symb R.xprod([a, b], [c, d]) = [[a, c], [a, d], [b, c], [b, d]]\n */\n\nvar xprod =\n/*#__PURE__*/\n_curry2(function xprod(a, b) {\n  // = xprodWith(prepend); (takes about 3 times as long...)\n  var idx = 0;\n  var ilen = a.length;\n  var j;\n  var jlen = b.length;\n  var result = [];\n\n  while (idx \u003c ilen) {\n    j = 0;\n\n    while (j \u003c jlen) {\n      result[result.length] = [a[idx], b[j]];\n      j += 1;\n    }\n\n    idx += 1;\n  }\n\n  return result;\n});\n\nexport default xprod;","import _curry2 from \"./internal/_curry2.js\";\n/**\n * Creates a new list out of the two supplied by pairing up equally-positioned\n * items from both lists. The returned list is truncated to the length of the\n * shorter of the two input lists.\n * Note: `zip` is equivalent to `zipWith(function(a, b) { return [a, b] })`.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig [a] -\u003e [b] -\u003e [[a,b]]\n * @param {Array} list1 The first array to consider.\n * @param {Array} list2 The second array to consider.\n * @return {Array} The list made by pairing up same-indexed elements of `list1` and `list2`.\n * @example\n *\n *      R.zip([1, 2, 3], ['a', 'b', 'c']); //=\u003e [[1, 'a'], [2, 'b'], [3, 'c']]\n * @symb R.zip([a, b, c], [d, e, f]) = [[a, d], [b, e], [c, f]]\n */\n\nvar zip =\n/*#__PURE__*/\n_curry2(function zip(a, b) {\n  var rv = [];\n  var idx = 0;\n  var len = Math.min(a.length, b.length);\n\n  while (idx \u003c len) {\n    rv[idx] = [a[idx], b[idx]];\n    idx += 1;\n  }\n\n  return rv;\n});\n\nexport default zip;","import _curry2 from \"./internal/_curry2.js\";\n/**\n * Creates a new object out of a list of keys and a list of values.\n * Key/value pairing is truncated to the length of the shorter of the two lists.\n * Note: `zipObj` is equivalent to `pipe(zip, fromPairs)`.\n *\n * @func\n * @memberOf R\n * @since v0.3.0\n * @category List\n * @sig [String] -\u003e [*] -\u003e {String: *}\n * @param {Array} keys The array that will be properties on the output object.\n * @param {Array} values The list of values on the output object.\n * @return {Object} The object made by pairing up same-indexed elements of `keys` and `values`.\n * @example\n *\n *      R.zipObj(['a', 'b', 'c'], [1, 2, 3]); //=\u003e {a: 1, b: 2, c: 3}\n */\n\nvar zipObj =\n/*#__PURE__*/\n_curry2(function zipObj(keys, values) {\n  var idx = 0;\n  var len = Math.min(keys.length, values.length);\n  var out = {};\n\n  while (idx \u003c len) {\n    out[keys[idx]] = values[idx];\n    idx += 1;\n  }\n\n  return out;\n});\n\nexport default zipObj;","import _curry3 from \"./internal/_curry3.js\";\n/**\n * Creates a new list out of the two supplied by applying the function to each\n * equally-positioned pair in the lists. The returned list is truncated to the\n * length of the shorter of the two input lists.\n *\n * @function\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig ((a, b) -\u003e c) -\u003e [a] -\u003e [b] -\u003e [c]\n * @param {Function} fn The function used to combine the two elements into one value.\n * @param {Array} list1 The first array to consider.\n * @param {Array} list2 The second array to consider.\n * @return {Array} The list made by combining same-indexed elements of `list1` and `list2`\n *         using `fn`.\n * @example\n *\n *      const f = (x, y) =\u003e {\n *        // ...\n *      };\n *      R.zipWith(f, [1, 2, 3], ['a', 'b', 'c']);\n *      //=\u003e [f(1, 'a'), f(2, 'b'), f(3, 'c')]\n * @symb R.zipWith(fn, [a, b, c], [d, e, f]) = [fn(a, d), fn(b, e), fn(c, f)]\n */\n\nvar zipWith =\n/*#__PURE__*/\n_curry3(function zipWith(fn, a, b) {\n  var rv = [];\n  var idx = 0;\n  var len = Math.min(a.length, b.length);\n\n  while (idx \u003c len) {\n    rv[idx] = fn(a[idx], b[idx]);\n    idx += 1;\n  }\n\n  return rv;\n});\n\nexport default zipWith;","import curryN from \"./curryN.js\";\nimport _curry1 from \"./internal/_curry1.js\";\n/**\n * Creates a thunk out of a function. A thunk delays a calculation until\n * its result is needed, providing lazy evaluation of arguments.\n *\n * @func\n * @memberOf R\n * @since v0.26.0\n * @category Function\n * @sig ((a, b, ..., j) -\u003e k) -\u003e (a, b, ..., j) -\u003e (() -\u003e k)\n * @param {Function} fn A function to wrap in a thunk\n * @return {Function} Expects arguments for `fn` and returns a new function\n *  that, when called, applies those arguments to `fn`.\n * @see R.partial, R.partialRight\n * @example\n *\n *      R.thunkify(R.identity)(42)(); //=\u003e 42\n *      R.thunkify((a, b) =\u003e a + b)(25, 17)(); //=\u003e 42\n */\n\nvar thunkify =\n/*#__PURE__*/\n_curry1(function thunkify(fn) {\n  return curryN(fn.length, function createThunk() {\n    var fnArgs = arguments;\n    return function invokeThunk() {\n      return fn.apply(this, fnArgs);\n    };\n  });\n});\n\nexport default thunkify;"],"version":3}
