!^      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNO P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                                         Safe&'+,.;<=>?FQSTV%1 funflow<Freely generated arrows with both choice and error handling.funflowcArrowError represents those arrows which can catch exceptions within the processing of the flow.funflowFreely generated  over an effect.funflow'Freely generated arrows over an effect.funflow;Annoying hackery to let us tuple constraints and still use  and  funflowSmall class letting us define   and + generally over multiple free structures funflow?A natural transformation on type constructors of two arguments. funflowMap an arrow over a list. funflowBMap an arrow over a list, forcing sequencing between each element. funflow#Filter a list given an arrow filter     None;<=>?'VfunflowCLift an AsyncA through a monad transformer of the underlying monad."funflowSafeV]'Safe(#Safe &'.;=>?V)L.funflowConstruct a labelled node $(')&%*+,-. *+,-$(')&%.NoneV;3funflowThread and process write lock.Only ever have one 3" object per lock file per process!4funflow,Open the lock file and create a lock object.This does not acquire the lock.Only ever have one 3" object per lock file per process!5funflowClose the lock file.Does not release the lock.Blocks if the lock is taken.6funflowHAcquire the lock for the duration of the given action and release after.funflow'Generate unique (per process) filename.&Combines the host name and process ID.funflowAcquire the lock.ZUses an algorithm that is described in the man-page of open (2) in the last paragraph to O_EXCL0 in release 4.14 of the Linux man-pages project.iCreates a file under a unique (per process) filename. Attempts to hard-link that file to a common lock path. If the operation succeeds, then the lock was acquired. If not, but if the link count of the file under the unique filename increased to two, then the lock was acquired. Otherwise, another process holds the lock and this process waits and retries.funflowRelease the lock.EUnlinks the file under the unique file name and the common lock file.34563456None;=;None67;<=>?DST]ij;funflow:Path to a directory to be treated as _externally assured_.4For an externally assured directory, we _do_ traverse its contents and verify those as we would externally assured files, rather than just relying on the directory path. Doing this traversal is pretty cheap, and it's quite likely for directory contents to be modified without modifying the contents.If an item in the directory cannot be read due to lacking permissions, then it will be ignored and not included in the hash. If the flow does not have permissions to access the contents of a subdirectory, then these contents cannot influence the outcome of a task and it is okay to exclude them from the hash. In that case we only hash the name, as that could influence the outcome of a task.=funflow5Path to a file to be treated as _externally assured_.4An externally assured file is handled in a somewhat cheating way by funflow. The C instance for such assumes that some external agent guarantees the integrity of the file being referenced. Thus, rather than hashing the file contents, we only consider its (absolute) path, size and modification time, which can be rapidly looked up from filesystem metadata.-For a similar approach, see the instance for ObjectInBucket~ in Control.Funflow.AWS.S3, where we exploit the fact that S3 is already content hashed to avoid performing any hashing.?funflowPath to a directoryOnly the contents of the directory and their path relative to the directory are taken into account when generating the content hash. The path to the directory is ignored.AfunflowPath to a regular fileOnly the file's content and its executable permission is taken into account when generating the content hash. The path itself is ignored.Dfunflow/Update a hash context based on the given value.See  .%XXX: Consider swapping the arguments.Efunflow!Generate hash of the given value.See .Ifunflow(File path appropriate encoding of a hashJfunflow Inverse of I if given a valid input."decodeHash (encodeHash x) = Just xKfunflow(File path appropriate encoding of a hashLfunflow Inverse of K if given a valid input."pathToHash (hashToPath x) = Just xMfunflowDUpdate hash context based on binary in memory representation due to  .*XXX: Do we need to worry about endianness?Nfunflow&Update hash context based on a type's ._The fingerprint is constructed from the library-name, module-name, and name of the type itself.Ofunflow!Update hash context by combining N and M%. Intended for primitive types like  .Pfunflow?Update hash context based on binary contents of the given file.QfunflowUpdate hash context based on  $ by copying into a newly allocated  + and updating the hash context from there.XXX:  ::   ->  could be used together with  instead. However, ; explicitly says, that it is only safe to use on a pinned  .funflow6Update hash context based on the contents of a strict .;<=>?@ABCDEFGHIJKLMNOPQFGHCDEPQNOMAB?@=>;<IJKLNone"#$&'06;=>?KV]e;Mfunflow)File or directory within a content store .funflowA completed item in the .funflow*A hash addressed store on the file system.funflowRoot directory of the content store. The process must be able to create this directory if missing, change permissions, and create files and directories within.funflowWrite lock on store metadata to ensure multi thread and process safety. The lock is taken when item state is changed or queried.funflow)Used to watch for updates on store items.funflow+Connection to the metadata SQLite database.funflow6Errors that can occur when interacting with the store.funflow4An item is not under construction when it should be.funflow@An item is already under construction when it should be missing.funflow1An item is already complete when it shouldn't be.funflow8The link under the given hash points to an invalid path.funflow@A failure occurred while waiting for the item to be constructed.funflow1IncompatibleStoreVersion storeDir actual expected> The given store has a version number that is incompatible.funflowMalformedMetadataEntry hash key$ The metadata entry for the give hash, key pair is malformed.funflow*Update about the status of a pending item.funflow4The item is now completed and ready for consumption.funflowConstructing the item failed.funflowStatus of an item in the store.funflowThe item does not exist, yet.funflow=The item is under construction and not ready for consumption.funflow/The item is complete and ready for consumption.funflow'Append to the path within a store item.funflow The root directory of the store.funflow3The scoped path to a content item within the store.funflow#The store path of a completed item.funflow(Store item containing the given content.funflow.The absolute path to content within the store.funflow open root. opens a store under the given root directory.+The root directory is created if necessary.PIt is not safe to have multiple store objects refer to the same root directory.funflow:Free the resources associated with the given store object.,The store object may not be used afterwards.funflowoOpen the store under the given root and perform the given action. Closes the store once the action is complete See also: funflow List all elements in the store /(pending keys, completed keys, completed items).funflow#List all pending keys in the store.funflow%List all completed keys in the store.funflow&List all completed items in the store.funflow0Query the state of the item under the given key.funflowBCheck if there is no complete or pending item under the given key.funflow5Check if there is a pending item under the given key.funflow7Check if there is a completed item under the given key.funflowlQuery the state under the given key and return the item if completed. Doesn't block if the item is pending.funflowQQuery the state under the given key and return the item if completed. Return an   to await an update, if pending.funflowqQuery the state under the given key and return the item once completed. Blocks if the item is pending. Returns 3 if the item is missing, or failed to be completed.funflowKAtomically query the state under the given key and mark pending if missing.Returns  item# if the item is complete. Returns  async if the item is pending, where async is an   to await updates on. Returns  buildDirU if the item was missing, and is now pending. It should be constructed in the given buildDir%, and then marked as complete using .funflowAtomically query the state under the given key and mark pending if missing. Wait for the item to be completed, if already pending. Throws a  error if construction fails.Returns  item# if the item is complete. Returns  buildDirU if the item was missing, and is now pending. It should be constructed in the given buildDir%, and then marked as complete using .funflowKAtomically query the state under the given key and mark pending if missing.funflowAtomically query the state under the given key and mark pending if missing. Execute the given function to construct the item, mark as complete on success and remove on failure. Forcibly removes if an uncaught exception occurs during item construction.funflow$Mark a non-existent item as pending.1Creates the build directory and returns its path. See also: .funflow Mark a pending item as complete.funflowRemove a pending item.It is the callers responsibility to ensure that no other threads or processes will attempt to access the item's contents afterwards.funflowxRemove a key association independent of the corresponding item state. Do nothing if no item exists under the given key.~It is the callers responsibility to ensure that no other threads or processes will attempt to access the contents afterwards.Note, this will leave an orphan item behind if no other keys point to it. There is no garbage collection mechanism in place at the moment.funflowCRemove a completed item in the store. Do nothing if not completed.~It is the callers responsibility to ensure that no other threads or processes will attempt to access the contents afterwards.|Note, this will leave keys pointing to that item dangling. There is no garbage collection mechanism in place at the moment.funflowWLink the given alias to the given item. If the alias existed before it is overwritten.funflow/Lookup an item under the given alias. Returns  if the alias does not exist.funflowRemove the given alias.funflow*List all aliases and the respective items.funflow/Get all hashes that resulted in the given item.funflow$Define the input items to a subtree.funflow5Get the input items to a subtree if any were defined.funflow Set a metadata entry on an item.funflow)Retrieve a metadata entry on an item, or  if missing.funflowDCreate and open a new metadata file on a pending item in write mode.funflow0Return the path to a metadata file if it exists.funflowHolds a lock on the global C and on the global lock file for the duration of the given action.funflow4Return the full build path for the given input hash.funflow3Return the full link path for the given input hash.funflow4Return the full store path to the given output hash.funflow;Return the full store path to the given metadata directory.funflow6Return the full store path to the given metadata file.funflow:Query the state under the given key without taking a lock.funflowmCreate the build directory for the given input hash and make the metadata directory writable if it exists.funflowQWatch the build directory of the pending item under the given key. The returned 1 completes after the item is completed or failed. funflow(Set write permissions on the given path.!funflow*Unset write permissions on the given path."funflowCSet write permissions on all items in a directory tree recursively.#funflowEUnset write permissions on all items in a directory tree recursively.$funflowInitialize the database.%funflow3Adds a link between input hash and the output hash..Assumes that the store is locked and writable.BB54None &'6;=>?Kb"funflowdA monomorphic description of an external task. This is basically just a command which can be run.funflow<Environment variables to set for the scope of the execution.funflowControl how and where stdout from the process is captured. Some external steps will write their output to stdout rather than to a file.funflowwSpecify that the step will write its output files directly, and that stdout will not be captured in the step output.funflowCapture output to a file named out in the output directory.funflow>Capture output to a custom named file in the output directory.funflowConverter of path components.funflow,Resolve a reference to a content store item.funflow Resolve an environment variable. funflowResolve the effective user ID. funflowResolve the effective group ID. funflow-Resolve the output path in the content store. funflowA parameter to an external taskThe runtime values to external references, e.g. environment variables, should not significantly influence the result of the external task. In particular, the content hash will not depend on these runtime values.funflowComponent of a parameterfunflowText component.funflow,Reference to a path to a content store item.funflow%Reference to an environment variable.funflow3Reference to the effective user ID of the executor.funflow4Reference to the effective group ID of the executor.funflow2Reference to the output path in the content store.funflowGSet of items which may be treated as an input path to an external task.funflowAn item in the content store.funflowOAn external file whose contents are considered assured by the external system.funflowTAn external directory whose contents are considered assured by the external system.funflow8Transform a parameter to text using the given converter.funflowgReference to a path to either: - a content store item, or - an externally assured file/directory.funflow?Reference to a path to a file or directory within a store item.funflow$Reference an externally assured file funflow$Reference an externally assured file!funflow%Reference to an environment variable."funflow3Reference to the effective user ID of the executor.#funflow4Reference to the effective group ID of the executor.$funflow2Reference to the output path in the content store.%funflow4Get the file to write output to, if this is desired.5      !"#$%IJKLMN5      !"#$%LKJINM None%6;=>? &funflow"Convertion state for mapping from O to '(funflowFresh name generator)funflow No inputs*funflow?Single input, and the path to its mountpoint within the system.+funflowMultiple inputs. OPVUTQRSW OPVUTQRSW None FKT]k%f bfunflowCPerform any necessary initialisation to connect to the coordinator.cfunflowLSubmit a task to the task queue. It is allowed to overwrite a known task.dfunflow'View the size of the current task queueefunflow%Fetch information on the current taskffunflowdPop a task off of the queue for execution. The popped task should be added to the execution queuegfunflowAwait task completion.If the task is complete, this will return 'KnownTask Completed'. If the task is failed, this will return 'KnownTask Failed'. If the task is not known to the system, this will return rp. Otherwise (if the task is pending or running), this will block until the task either completes or fails.hfunflowaUpdate execution status for a running task. This should error for a task which is not running.ifunflow(Remove all pending tasks from the queue.tfunflow0Task is in the queue and has not begun executingwfunflow"Task has failed with failure countxfunflowtInformation about an executor capable of running tasks. Currently this is just a newtype wrapper around hostname.funflowHCheck if a task is currently 'in progress' - e.g. pending or running.funflowPop a task off of the queue for execution. Passes the popped task to the given function for execution. If the function returns success (,g), then the task will be marked as completed in the given time. If the function returns failure (-), then the task will be marked as failed. If the function raises an exception or is interrupted by an asynchronous exception, then the task will be placed back on the task queue and the exception propagated. Returns  if no task is available and . ()' on task completion or regular failure. _ihgfedcba`jklmonprqsuwvtxy xysuwvtprqlmonjk_ihgfedcba` NoneV]4 funflowThe result already exists in the store and there is no need to execute. This is also returned if the job is already running elsewhere.funflowThe computation is already running elsewhere. This is probably indicative of a bug, because the coordinator should only allow one instance of a task to be running at any time.funflow@Execution completed successfully after a certain amount of time.funflowLExecution failed with the following exit code. TODO where should logs go?funflowfThe executor itself failed to execute the external task. E.g. because the executable was not found.funflowExecute an individual task.funflowExecute tasks foreverfunflowSame as !, but allows specifying a custom / for loggingfunflowwithFollowFile in out follows the file in and prints contents to outH as they appear. The file must exist. Doesn't handle file truncation.   None FT]C0funflowSQLite coordinator hook.funflowSQLite coordinator tag.1funflowSQLite task info query result.2funflowWrapper around x for SQLite serialization.3funflowEnumeration of possible s cases for SQLite status column.4funflow@Take the lock and run the given action on the SQLite connection.5funflowCErrors that can occur when interacting with the SQLite coordinator.6funflowMissingDBTaskEntry output field/ The task database entry is missing a field.7funflowDecodingError field error Failed to decode the field.8funflowNonRunningTask output The task is not running.9funflow!IllegalStatusUpdate output status) Cannot update the status of the task.:funflowWrapper around  for SQLite serialization.;funflowWrapper around  for SQLite serialization.<funflow Helper for NULL valued data-base fields.Throws 6 on , otherwise returns the value.=funflowUnlifted version of e. None &'>?FTVEfunflow3Allow a preestablished redis connection to be used.NoneFTF  !None %&';<=CSTVV funflow5Additional properties associated with external tasks.funflow/Write additional metadata to the content store.funflowMSpecify that this external step is impure, and as such should not be cached.funflowSName of this step. Used when describing the step in diagrams or other reporting.funflowKSpecify whether this step can be cached or not and, if so, how to do so.funflow/Write additional metadata to the content store.funflow=A cacher is responsible for controlling how steps are cached.funflow%This step cannot be cached (default).funflow_Function to encode the input into a content hash. This function additionally takes an  identities, which gets incorporated into the cacher.funflow;Attempt to read the cache value back. May throw exceptions.funflowMetadata writer>funflow$Since there are no constructors for 3, this code can never be reached and so is fine.?funflow;Convert a flow to a diagram, for inspection/pretty printingfunflowSeed for the cacher>?None&'<QSTV]ifunflowSimple evaulation of a flow@funflow Run a flow in a logging context.funflow#Run a flow, discarding all logging.funflow1Run a simple flow. Logging will be sent to stderrfunflowCreate a full pipeline runner locally. This includes an executor for executing external tasks. This function is specialised to  since in cases where a custom term algebra is in use, we assume that probably a centralised coordinator and external runners may be desired as well.funflow+Natural transformation from wrapped effectsfunflowFlow configuration identity. This forms part of the caching system and is used to disambiguate the same flow run in multiple configurations.@funflow+Natural transformation from wrapped effectsfunflowFlow configuration identity. This forms part of the caching system and is used to disambiguate the same flow run in multiple configurations.funflow+Natural transformation from wrapped effectsfunflowFlow configuration identity. This forms part of the caching system and is used to disambiguate the same flow run in multiple configurations.funflowPath to content store"None;<=>?At funflow#Create a flow from a pure function.funflow Create a flow from an IO action.funflow$Create an external task in the flow.funflow2Create an external task with additional propertiesfunflow)Create a flow from a user-defined effect.funflow>Create a flow which will write its incoming data to the store.funflow=Create a flow which will read data from the given store item.funflow8Perform some internal manipulation of the content store.funflow<Create a flow from a pure function. This is a variant on # which uses the default properties.funflow9Create a flow from an IO action. This is a variant on # which uses the default properties. None<>?V{/funflow/Create a default cacher with a random identity.Note that this cacher is deliberately conservative - e.g. if the application is recompiled, the cache will not be reused.funflowCreate a default cacher based on the location of this splice. Note that this may lead to invalid cacheing if the code is changed without the version being updated.funflowVersionNone&'V{None &'<>?NVfunflowpause for a given number of seconds. Thread through a value to ensure delay does not happen inparallel with other processingfunflowon first invocation die and leave a suicide note on second invocation it is resurrected and destroys suicide note, returning contentsfunflow`retry n s f` reruns f, on failure at most n times with a delay of s seconds between retriesfunflowcopyFileToStore (fIn, fOut) copies the contents of fIn) into the store under the relative path fOut within the subtree.funflowcopyDirToStore (dIn, Nothing) copies the contents of dIn) into the store right under the subtree.| copyDirToStore (dIn, Just dOut) copies the contents of dIn% into the store under relative path dOut within the subtreefunflow1List the contents of a directory within the storefunflowUSearch for files in the directory matching the given text string, as a glob pattern.funflow=Search for files in the directory matching the given pattern.funflowMerge a number of store directories together into a single output directory. This uses hardlinks to avoid duplicating the data on disk.funflow7Merge a number of files into a single output directory.funflow1Read the contents of the given file in the store.funflow"Read the contents of a file named out within the given item.funflow?Create and write into a file under the given path in the store.funflow#Create and write into a file named out within the given item.funflow2Read a YAML file from the given file in the store.funflow4Write a YAML file under the given name to the store.funflowWrite a YAML file named out.yaml to the store.NoneST      !"#$%IJKLMN,A#$%#&'#&()*+,-./0123456789:;<=>?@ABBCDEFGHIJKLMNOOPQRSTUVWXYZ[\]^__``aabbcdefghijklmnopqrstuvwxyz{|}~      !""#$%&'(()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghi j j k l m n o p q r s t u v w x y j z { | } ~                                                                 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""     #  !"#$%&'( )*+ ,-./01234567 89:;<= > ? @ A B C DE DF )GHIJ K L M N O P Q R S T U V W X!Y!Z[\$funflow-1.3.2-2d4zEsO2BbC94pqxG4GuhUControl.Funflow.ContentHashableControl.Arrow.FreeControl.Arrow.AsyncControl.Funflow.DiagramControl.Funflow.LockControl.Funflow.OrphansControl.Funflow.ContentStoreControl.Funflow.ExternalControl.Funflow.External.Docker$Control.Funflow.External.Coordinator!Control.Funflow.External.Executor+Control.Funflow.External.Coordinator.SQLite*Control.Funflow.External.Coordinator.Redis+Control.Funflow.External.Coordinator.MemoryControl.FunflowControl.Funflow.Exec.SimpleControl.Funflow.Cache.THControl.Funflow.PrettyControl.Funflow.Steps)Control.Funflow.ContentStore.Notify.Linux#Control.Funflow.ContentStore.Notify Crypto.HashhashGHC.Fingerprint.Type FingerprintGHC.PrimbyteArrayContents#Addr# Data.TextTextControl.ConcurrentAsyncControl.Funflow.BaseControl.Funflow.Class&cryptonite-0.25-LZzknjb1Oup7NwifaYEk3PCrypto.Hash.SHA256SHA256Crypto.Hash.TypesContextDigest ErrorChoice ArrowErrorcatchChoiceFreeeffecteval~>mapAmapSeqAfilterA $fJoinkabx$fFreeArrowLikeTYPEFree $fArrowFree$fCategoryTYPEFree$fFreeArrowLikeTYPEChoice$fArrowChoiceChoice $fArrowChoice$fCategoryTYPEChoice$fArrowErrorTYPEexKleisli$fFreeArrowLikeTYPEErrorChoice$fArrowErrorTYPEexErrorChoice$fArrowChoiceErrorChoice$fArrowErrorChoice$fCategoryTYPEErrorChoiceAsyncA runAsyncA liftAsyncA$fArrowErrorTYPEexAsyncA$fArrowChoiceAsyncA $fArrowAsyncA$fCategoryTYPEAsyncADiagramNodeSeqParFaninCatchNodePropertieslabelsemptyNodePropertiesnode$fArrowErrorTYPEexDiagram$fArrowChoiceDiagram$fArrowDiagram$fCategoryTYPEDiagramLockopenLock closeLockwithLock $fStorePath $fStorePath0 $fStorePath1 $fStorePath2ExternallyAssuredDirectoryExternallyAssuredFileDirectoryContent FileContentContentHashablecontentHashUpdate contentHash ContentHashtoBytes fromBytes encodeHash decodeHash hashToPath pathToHashcontentHashUpdate_storablecontentHashUpdate_fingerprintcontentHashUpdate_primitivecontentHashUpdate_binaryFilecontentHashUpdate_byteArray#$fToFieldContentHash$fFromFieldContentHash$fStoreContentHash$fShowContentHash$fHashableContentHash$fToJSONContentHash$fFromJSONContentHash$fGContentHashablem:+:$fGContentHashablem:*:$fGContentHashablemM1$fGContentHashablemM10$fGContentHashablemM11$fGContentHashablemU1$fGContentHashablemV1$fContentHashablemUTCTime$fContentHashablemPath$fGContentHashablemK1$fContentHashablemValue$fContentHashablemEither$fContentHashablemMaybe$fContentHashablem(,,,,,,)$fContentHashablem(,,,,,)$fContentHashablem(,,,,)$fContentHashablem(,,,)$fContentHashablem(,,)$fContentHashablem(,)$fContentHashablem()$fContentHashablemVector$fContentHashablemNonEmpty$fContentHashablem[]$fContentHashablemHashSet$fContentHashablemHashMap$fContentHashablemMap$fContentHashablemText$fContentHashablemText0$fContentHashablemByteString$fContentHashablemByteString0$fContentHashablemNatural$fContentHashablemInteger$fContentHashablemScientific$fContentHashablemRatio$fContentHashablemDouble$fContentHashablemFloat$fContentHashablemWord64$fContentHashablemWord32$fContentHashablemWord16$fContentHashablemWord8$fContentHashablemWord$fContentHashablemInt64$fContentHashablemInt32$fContentHashablemInt16$fContentHashablemInt8$fContentHashablemInt$fContentHashablemChar$fContentHashablemBool$fContentHashablemFingerprint$fContentHashableIOFileContent#$fContentHashableIODirectoryContent($fContentHashableIOExternallyAssuredFile$fStoreExternallyAssuredFile$fToJSONExternallyAssuredFile$fFromJSONExternallyAssuredFile-$fContentHashableIOExternallyAssuredDirectory!$fStoreExternallyAssuredDirectory"$fToJSONExternallyAssuredDirectory$$fFromJSONExternallyAssuredDirectory$fEqContentHash$fOrdContentHash$fGenericContentHash$fGenericExternallyAssuredFile$fShowExternallyAssuredFile#$fGenericExternallyAssuredDirectory $fShowExternallyAssuredDirectoryAliasunAliasContentAll:ItemitemHash ContentStore StoreError NotPendingAlreadyPendingAlreadyComplete CorruptedLinkFailedToConstructIncompatibleStoreVersionMalformedMetadataEntryUpdate CompletedFailedStatus_StatusMissingPendingComplete^root itemRelPathitemPath contentItemcontentFilename contentPathopenclose withStorelistAll listPending listComplete listItemsquery isMissing isPending isCompletelookup lookupOrWaitwaitUntilCompleteconstructOrAsyncconstructOrWaitconstructIfMissingwithConstructIfMissing markPending markComplete removeFailedremoveForciblyremoveItemForcibly assignAlias lookupAlias removeAlias listAliasesgetBackReferences setInputs getInputs setMetadata getMetadatacreateMetadataFilegetMetadataFile$fExceptionStoreError $fStoreItem$fHashableItem $fToJSONItem$fFromJSONItem$fContentHashablemItem$fContentHashablemContent$fContentHashablemContent0 $fEqStatus $fShowStatus$fShowStoreError$fEqItem $fOrdItem $fShowItem $fGenericItem $fEqUpdate $fShowUpdate$fContentHashableAlias $fEqAlias $fOrdAlias $fShowAlias$fFromFieldAlias$fToFieldAlias $fStoreAlias $fShowContent $fEqContentTaskDescription _tdOutput_tdTask ExternalTask _etCommand _etParams_etEnv_etWriteToStdOut OutputCaptureNoOutputCapture StdOutCaptureCustomOutCapture ConvParamconvPathconvEnvconvUidconvGidconvOutParam ParamField ParamText ParamPathParamEnvParamUidParamGidParamOut InputPathIPItemIPExternalFile IPExternalDirparamFieldToText paramToText stringParam textParam pathParam contentParamexternalFileParamexternalDirectoryParamenvParamuidParamgidParamoutParamoutputCaptureToRelFile$fStoreInputPath$fToJSONInputPath$fFromJSONInputPath$fContentHashableIOInputPath$fStoreParamField$fToJSONParamField$fFromJSONParamField$fContentHashableIOParamField $fStoreParam $fToJSONParam$fFromJSONParam$fContentHashableIOParam$fIsStringParam$fStoreOutputCapture$fToJSONOutputCapture$fFromJSONOutputCapture $fContentHashableIOOutputCapture$fStoreExternalTask$fToJSONExternalTask$fFromJSONExternalTask$fContentHashableIOExternalTask$fGenericInputPath$fShowInputPath$fGenericParamField$fShowParamField$fGenericParam $fMonoidParam$fSemigroupParam $fShowParam$fGenericOutputCapture$fShowOutputCapture$fGenericExternalTask$fShowExternalTask$fGenericTaskDescription$fShowTaskDescription etCommandetEnvetParamsetWriteToStdOuttdOutputtdTaskConfigimage optImageIDcommandargsenvstdout toExternal $fMonoidBind$fSemigroupBind$fContentHashableIOBind$fContentHashableIODocker $fGenericBind$fGenericConfig$fGenericDocker CoordinatorHook initialise submitTask queueSizetaskInfopopTask awaitTaskupdateTaskStatus dropTasks TaskErrorExternalTaskFailed ExecutionInfo _eiExecutor _eiElapsedTaskInfo KnownTask UnknownTask TaskStatusRunningExecutor$fExceptionTaskError$fShowExecutor$fStoreExecutor$fShowExecutionInfo$fShowTaskStatus$fShowTaskInfo$fShowTaskError eiElapsed eiExecutor$fStoreTaskStatus$fStoreExecutionInfo startTask isInProgress withPopTask$fStoreTaskInfoExecutionResultCachedAlreadyRunningSuccessFailureExecutorFailureexecute executeLoopexecuteLoopWithScribewithFollowFileSQLite$fToFieldSqlTaskStatus$fFromFieldSqlTaskStatus$fToFieldSqlExecutor$fFromFieldSqlExecutor$fEnumSqlTaskStatus$fFromRowSqlTaskInfo$fToFieldSqlExternal$fFromRowSqlTask$fCoordinatorSQLite!$fExceptionSQLiteCoordinatorError$fFromFieldSqlExternal$fShowSQLiteCoordinatorErrorRedisPreconnectedRedis$fCoordinatorRedis$fCoordinatorRedisPreconnectedMemHook _mhTaskQueue_mhExecutionQueueMemoryCoordinatormhExecutionQueue mhTaskQueuecreateMemoryCoordinator$fCoordinatorMemoryCoordinator==> SimpleFlowNoEffectFlowFlow'StepStepIOExternal PutInStore GetFromStoreInternalManipulateStoreWrappedExternalProperties ep_mdpolicy ep_impure PropertiesnamecachemdpolicyCacherNoCacheCache cacherKeycacherStoreValuecacherReadValueMDWriterdefaultCacherWithIdent runFlowExrunFlow runSimpleFlowwithSimpleLocalRunner ArrowFlowstep'stepIO'external external'wrap' putInStore getFromStoreinternalManipulateStorestepstepIOwrap defaultCacherdefaultCacherLoc $fHashableLocppFlowshowFlow promptForprintSfailStepworstBernoulli pauseWithmelancholicLazarusretrylookupAliasInStoreassignAliasInStore putInStoreAtcopyFileToStorecopyDirToStorelistDirContentsglobDirglobDirPattern mergeDirs mergeFiles readString readString_ writeStringwriteExecutableString writeString_readYaml writeYaml writeYaml_dockerbase Control.Arrow ArrowChoiceJoin FreeArrowLikeWatchNotifier initNotifier killNotifier addDirWatchremoveDirWatchgetUniqueFileNameacquireDirLockreleaseDirLock hashUpdateForeign.StorableStorableghc-prim GHC.TypesInt ByteArray#%memory-0.14.16-AKbdmwy6DrGHhZRru96CCEData.ByteArray.BytesBytesData.ByteArray.MemViewMemViewcontentHashUpdate_text storeRoot storeLock storeNotifierstoreDbGHC.BaseNothing withStoreLockGHC.MVarMVar mkPendingPathmkCompletePath mkItemPathmkMetadataDirPathmkMetadataFilePath internalQueryinternalMarkPendinginternalWatchPending"async-2.2.1-85vFFM3yC751UoHYmbAgP1Control.Concurrent.Async setWritable unsetWritablesetWritableRecursivelyunsetWritableRecursivelyinitDbaddBackReference ConvertStateDocker_csFreshNoInput SingleInput MultiInput Data.EitherRightLeftJust$katip-0.6.0.0-Cc25zmYtc2C7h1sxlnGpLt Katip.CoreScribe SQLiteHook SqlTaskInfo SqlExecutor SqlTaskStatus withSQLiteSQLiteCoordinatorErrorMissingDBTaskEntry DecodingErrorNonRunningTaskIllegalStatusUpdateSqlTask SqlExternalfromMaybeField taskInfo' runNoEffect toDiagram runFlowLog