úÎGrD¼"      !None$6]œ dRepresents the construction of a Component in your application, components may be composed using a " or # interface. ZAn event record used to trace the execution of an application initialization and teardownWraps a collection of  records7Contains metadata about the build of a resource from a   value$Name of the component built%*Cleanup sub-routine of the component built6Elasped time in the allocation of a component resource6Error thrown in the allocation of a component resource&+What other components this build depends on%Exception raised on the execution of '& sub-routines used when constructing   values (e.g. buildComponent)KFailure thrown when using the same component key on a Component compositionUFailure thrown when the allocation sub-routine of a Component fails with an exception Failure thrown when calling the  when composing   valuesFailure thrown when calling ( fails with an exceptionException thrown by the  runComponentM family of functions8Failure raised when the Application Callback given to a  runComponentM function throws an exception!Failure raised when execution of   throws an exception@Exception that was originally thrown by the Application Callback6Result from the execution allocated resources teardownExceptions thrown by '& sub-routines used when constructing   values (e.g. buildComponent) ) *+$%&,- )  *+$%&None$A+.9Track duration time of the execution of an IO sub-routineTransforms an ' sub-routine into a   sub-routine; the given '‚ sub-routine returns a resource that does not allocate any other resources that would need to be cleaned up on a system shutdown.This is similar to using (<, with the caveat that the library will register the given '[ sub-routine as a Component, and it will keep track and report its initialization timespanøUse this function when you want to allocate a new resource (e.g. Database, Socket, etc). It registers the constructed resource in your application component tree and guarantees that its cleanup sub-routine is executed at the end of your program. This function is similar to the /- function with the caveat that it expects a 09 argument which identifies the component being allocated.>NOTE: The name of your component must be unique; otherwise a  will be thrown  Enhances !& with a callback function that emits  c records. These events are a great way of tracing the lifecycle and structure of your application.!Constructs the  environment& of your application by executing the ' sub-routines provided in the  and N functions; it then executes a callback where your main application will run.This function:TKeeps track of initialization elapsed time for each component of your applicationJInitializes components concurrently as long as they are composed using # functionsIBuilds a graph of your dependencies automatically when composing your   values via # or "g interfaces; it then guarantees the execution of cleanup operations in a topological sorted order†Guarantees the proper cleanup of previously allocated resources if the creation of a resource throws an exception on initialization†Guarantees best-effort cleanup of resources on application teardown in the scenario where a cleanup sub-routine throws an exceptionŠKeeps track of teardown elasped time for each component of your application; and reports what exceptions was thrown in case of failures[If you want to trace the behavior of your application on initialization and teardown, use   instead-Unique name for the component being allocated Allocation ' sub-routineCleanup ' sub-routine Callback function to trace   records4Name of your application (used for tracing purposes)'Builder of your application environment.Function where your main application will live!4Name of your application (used for tracing purposes)'Builder of your application environment.Function where your main application will live !9Sane resource allocation library for complex applications(c) Roman Gonzalez, 2017-2018MITopen-source@roman-gonzalez.info experimentalNoneCŠ"   !) !   1      !"#$%&'()*+,*+-./0123*456789:;<=>?)componentm-0.0.0.0-76D8EhgVBS13BUPoYaFUNMControl.Monad.Component&Control.Monad.Component.Internal.Types%Control.Monad.Component.Internal.Core(exceptions-0.10.0-BUU8s9pCscREfUFAryYPyWControl.Monad.CatchthrowM'teardown-0.5.0.0-6xOuqLne41NGQwqv7Ul7wZControl.Teardown.Internal.Types resultError resultListing resultDidFailresultElapsedTimeresultDescription EmptyResult LeafResult BranchResultTeardownResult ComponentMComponentEventComponentBuiltComponentReleased BuildResult toBuildListBuildbuildElapsedTime buildFailureComponentBuildErrorDuplicatedComponentKeyDetectedComponentAllocationFailedComponentErrorThrownComponentIOLiftFailedComponentErrorComponentRuntimeFailedComponentBuildFailedcomponentErrorOriginalExceptioncomponentErrorTeardownResultcomponentErrorBuildErrorsbuildComponent_buildComponentrunComponentM1 runComponentMbaseGHC.BaseMonad Applicative componentDesccomponentTeardownbuildDependenciesghc-prim GHC.TypesIOControl.Monad.IO.ClassliftIObuildTableToOrderedListbuildTableToTeardowntrackExecutionTime'unliftio-0.2.7.0-576EP1oBkP8F53AhG1QPVDUnliftIO.Exceptionbracket#text-1.2.3.0-4JszJpnnjdvIPmNf6HPMRoData.Text.InternalText