h&F"$      !"#  Safe-Inferred0"%&')*-/135689:;< $%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  Safe-Inferred0"%&')*-/135689:;< theatre-dev,Actor, which processes the messages of type msg.Provides abstraction over the communication channel and threads. theatre-devSchedule a message for the actor to process after the ones already scheduled. theatre-devProvides a choice between alternative actors to process the message. theatre-dev"Splits the message between actors. theatre-dev+Maps the input message to a different type. theatre-devProvides an identity for merging the actors, which does nothing. theatre-dev1Distributes the message across the merged actors. theatre-dev9Process the next message. Must not throw any exceptions. theatre-devAction forking a thread to run the actor loop and producing a handle for sending messages to it. theatre-devInitial state. theatre-devProcess the next message updating the state. The IO action must not throw any exceptions. theatre-devAction forking a thread to run the actor loop and producing a handle for sending messages to it. Safe-Inferred0"%&')*-/135689:;<  theatre-dev=Get a list of all entries in the queue without removing them.  theatre-devStarting from "stm" 2.5.2.0 "flushTBQueue" is broken. We're fixing it here.  Safe-Inferred0"%&')*-/135689:;<<  Safe-Inferred0"%&')*-/135689:;<  theatre-dev9Action producing a message or nothing, after it's killed.  Safe-Inferred0"%&')*-/135689:;<z   Safe-Inferred0"%&')*-/135689:;<  Safe-Inferred0"%&')*-/135689:;<7  theatre-dev;Controls of an actor, which processes the messages of type message.Provides abstraction over the message channel, thread-forking and killing.Monoid instance is not provided for the same reason it is not provided for numbers. This type supports both sum and product composition. See   and  .  theatre-devSend a message to the actor.  theatre-devKill the actor.  theatre-dev7Wait for the actor to die due to error or being killed.  theatre-dev5IDs of the constituent actors. Useful for debugging.  theatre-devDistribute the message stream across actors. The message gets delivered to the first available one.0E.g., using this combinator in combination with  you can construct pools: spawnPool :: Int -> IO (Actor message) -> IO (Actor message) spawnPool size spawn = oneOf <$> replicateM size spawn;You can consider this being an interface to the Sum monoid.  theatre-dev?You can consider this being an interface to the Product monoid.  theatre-dev7Dispatch the message across actors based on a key hash.This lets you ensure of a property that messages with the same key will arrive to the same actor, letting you maintain a local associated state in the actors.The implementation applies a modulo equal to the amount of actors to the hash and thus determines the index of the actor to dispatch the message to. This is inspired by how partitioning is done in Kafka.  theatre-devGiven an interpreter of messages, fork a thread to run the handler daemon on and produce a handle to control that actor.Killing that actor will make it process all the messages in the queue first. All the messages sent to it after killing won't be processed.  theatre-dev? >@ AB CD EF EG !H IJ IK IL IM IN IO IP IQ IR IS IT IU#VW#VX#VY Z[ Z\ Z] Z^ Z_ Z` Za Zb Zc Zd Ze Zf Zg Zh Zi Zj Zk Zl Zm Zn Zo Zp Zq >r >s >t >u >v >w >x >y >z >{ >| >} !~ ! ! !                ! ! !        #V#V#V#V#V#V#V#V      > > Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z > > > > > >                 ! ! ! ! ! !                         ! ! ! ! ! ! ! !### !####       #### > >#$ )##          ! !# E E#                                                                                               :                                                                                                               A A A A A A A A A A A A A A   6 6 6 6 6 6 6 6 6 6 6 6 6                                             + + + + + + + + + + + +                                                                                                                                                      C C C C C C C 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4                                       4 4 4 4 4 4 4 4 4 4 4                                                                                                                                                                          ) ) ) ) E E E                                                                                   Z Z Z                                                             > > > > > > > > > >          & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & - - -        ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !    #V #V #V                               &theatre-dev-0.1-KCwya3z424t193YhKbe9r4TheatreDev.PerpetualTheatreDev.StmBasedTheatreDev.Terminal.ActorTheatreDev.PreludeTheatreDev.ExtrasFor.TBQueueTheatreDev.ExtrasFor.List(TheatreDev.StmBased.StmStructures.RunnerTheatreDev.StmBased.TellTheatreDev.StmBased.Wait%TheatreDev.Terminal.StatefulActorSpecActorspawnStateless spawnStatefultell$fDecidableActor$fDivisibleActor$fContravariantActor $fMonoidActor$fSemigroupActoroneOfallOf byKeyHashspawnStatelessIndividualspawnStatelessBatchedspawnStatefulIndividualspawnStatefulBatchedkillwait adaptToListspawnStatelessGranularspawnStatefulGranularbaseGHC.Base++ghc-primGHC.PrimseqGHC.Listfilterzip GHC.Stable newStablePtr System.IOprint Data.Tuplefstsnd otherwiseassert GHC.MagiclazyGHC.IO.Exception assertError Debug.TracetraceinlinemapGHC.Exts groupWith$coerceGHC.Real fromIntegral realToFrac Control.Monadguard Data.DynamictoDyn Unsafe.CoerceunsafeEqualityProof unsafeCoerce#joinGHC.EnumBoundedmaxBoundminBoundEnumsuccpredenumFromThenTo enumFromTo enumFromThenenumFromfromEnumtoEnum GHC.ClassesEq==/= GHC.FloatFloatingtanhtansqrtsinhsinpilogBaselog1pexplog1plog1mexplogexpm1expcoshcosatanhatanasinhasinacosh**acos Fractionalrecip fromRational/IntegralremquotRemquotmoddivMod toIntegerdivMonad>>>>=return Data.DataDatatoConstrgunfoldgmapTgmapQrgmapQlgmapQigmapQgmapMpgmapMogmapMgfoldl dataTypeOf dataCast1 dataCast2Functorfmap<$GHC.NumNumsignumabs*+negate fromInteger-Ord<<=>maxmincompare>=GHC.ReadReadreadPrec readListPrec readsPrecreadListReal toRational RealFloat significand scaleFloatisNegativeZeroisNaN isInfiniteisIEEEisDenormalized floatRange floatRadix floatDigitsexponent encodeFloatatan2 decodeFloatRealFractruncateroundproperFractionceilingfloorGHC.ShowShowshowListshow showsPrecGHC.IxIxindexinRange rangeSizerangeData.Typeable.InternalTypeableControl.Monad.FixMonadFixmfixControl.Monad.Fail MonadFailfail Data.StringIsString fromString ApplicativeliftA2<**><*>pure Data.FoldableFoldablefoldr'foldMap'foldMapfoldsumproductnullminimummaximumfoldr1foldl1foldl'elemtoListfoldrlengthfoldlData.Traversable TraversabletraversesequencemapM sequenceA GHC.GenericsGeneric Semigroupstimes<>sconcatMonoidmconcatmemptymappend GHC.TypesBoolFalseTrueStringCharDoubleFloatIntGHC.IntInt8Int16Int32Int64 ghc-bignumGHC.Num.IntegerInteger GHC.MaybeMaybeNothingJustOrderingGTLTEQRatioRational RealWorld StablePtrIOWordGHC.WordWord8Word16Word32Word64GHC.PtrPtrFunPtr Data.EitherEitherRightLeftNonEmpty:| CoercibleUnsafeEquality UnsafeReflTyConGHC.ForeignPtr ForeignPtrGHC.IO.Handle.TypesHandleGHC.STSTforM_mapM_ GHC.Conc.SyncforkOnWithUnmaskforkIOWithUnmaskforkOnControl.ConcurrentforkOSforkIOThreadId"async-2.2.4-JCLnoySkSnuKPKPCvztdzRControl.Concurrent.Async ConcurrentlyrunConcurrently Data.IORefatomicModifyIORef GHC.IORefIORef readIORefData.Functor.Contravariant Predicate getPredicateOpgetOp EquivalencegetEquivalence Contravariant>$ contramap Comparison getComparisonphantomdefaultEquivalencedefaultComparisoncomparisonEquivalence>$<>$$<$< Data.ComplexComplex:+realPartpolarphasemkPolar magnitudeimagPart conjugatecis Data.FixedUniPicoNanoMilliMicro HasResolution resolutionFixedMkFixedE9E6E3E2E12E1E0DeciCenti showFixedmod'divMod'div' Data.VoidVoidvacuousabsurdData.Semigroup WrappedMonoid WrapMonoid unwrapMonoidMingetMinMaxgetMaxLastgetLastFirstgetFirstArgMinArgMaxArg mtimesDefaultdiffcycle1sortWithFixityInfixPrefixDataTypeDataRepNoRepCharRepAlgRepIntRepFloatRep ConstrRep IntConstr FloatConstr AlgConstr CharConstrConstrConIndex tyconUQname tyconModule showConstr repConstr readConstr mkRealConstr mkNoRepTypemkIntegralConstr mkIntType mkFloatType mkDataType mkConstrTagmkConstr mkCharType mkCharConstrmaxConstrIndex isNorepType isAlgType indexConstr fromConstrM fromConstrB fromConstr dataTypeRep dataTypeNamedataTypeConstrs constrType constrRep constrIndex constrFixity constrFieldsSystem.TimeoutTimeouttimeoutthreadWaitWriteSTMthreadWaitWritethreadWaitReadSTMthreadWaitReadrunInUnboundThreadrunInBoundThreadrtsSupportsBoundThreadsisCurrentThreadBoundforkOSWithUnmask forkFinallyControl.Concurrent.ChanChanwriteList2Chan writeChanreadChannewChangetChanContentsdupChanControl.Concurrent.QSemQSemwaitQSem signalQSemnewQSemControl.Concurrent.QSemNQSemN waitQSemN signalQSemNnewQSemNData.Bifunctor BifunctorsecondbimapfirstData.List.NonEmptynonEmptyControl.Monad.IO.ClassMonadIOliftIO Data.RatioapproxRational Data.STRef modifySTRef' modifySTRef Data.UniqueUnique newUnique hashUniqueGHC.StableName StableNamemakeStableNamehashStableName eqStableNameSystem.Environment withProgNamewithArgsunsetEnvsetEnv lookupEnv getProgNamegetEnvironmentgetEnvgetArgs!System.Environment.ExecutablePathgetExecutablePath System.ExitexitWith exitSuccess exitFailuredie System.MemperformMinorGCperformMajorGC performGC Text.PrintfprintfhPrintf zipWithM_zipWithMunless replicateM_ replicateMmfilter mapAndUnzipMforeverfoldM_foldMfilterM>=><=<<$!> Data.Version showVersion parseVersion traceStack traceShowM traceShowId traceShow traceMarkerIO traceMarkertraceMtraceIdtraceIO traceEventIO traceEvent putTraceMsg flushEventLog mapAccumR mapAccumLforMforfoldMapDefault fmapDefaultControl.ApplicativeZipList getZipList WrappedMonad WrapMonad unwrapMonad WrappedArrow WrapArrow unwrapArrowoptional Control.ArrowKleisli runKleisli ArrowZero zeroArrow ArrowPlus<+> ArrowMonad ArrowLooploop ArrowChoicerightleft|||+++ ArrowApplyappArrow&&&***arrreturnAleftApp^>>^<<>>^<<^ writeFilereadLnreadIOreadFileputStrLnputStrputCharinteractgetLine getContentsgetChar appendFile GHC.IO.HandlehClose GHC.Conc.IO threadDelay registerDelayioManagerCapabilitiesChangedensureIOManagerIsRunning closeFdWithGHC.Conc.SignalSignal HandlerFun setHandler runHandlersControl.Concurrent.MVarwithMVarMaskedwithMVarswapMVar modifyMVar_modifyMVarMasked_modifyMVarMasked modifyMVar mkWeakMVaraddMVarFinalizerSystem.IO.Unsafe unsafeFixIOControl.ExceptionHandlercatchesallowInterruptControl.Monad.ST.ImpfixSTSystem.IO.Error userErrorType tryIOErrorresourceVanishedErrorTypepermissionErrorType modifyIOError mkIOErrorisUserErrorType isUserErrorisResourceVanishedErrorTypeisResourceVanishedErrorisPermissionErrorTypeisPermissionErrorisIllegalOperationErrorTypeisIllegalOperationisFullErrorType isFullErrorisEOFErrorType isEOFErrorisDoesNotExistErrorTypeisDoesNotExistErrorisAlreadyInUseErrorTypeisAlreadyInUseErrorisAlreadyExistsErrorTypeisAlreadyExistsErrorioeSetLocation ioeSetHandleioeSetFileNameioeSetErrorTypeioeSetErrorStringioeGetLocation ioeGetHandleioeGetFileNameioeGetErrorTypeioeGetErrorStringillegalOperationErrorType fullErrorType eofErrorTypedoesNotExistErrorType catchIOErrorannotateIOErroralreadyInUseErrorTypealreadyExistsErrorTypeControl.Exception.Base TypeError RecUpdError RecSelError RecConErrorPatternMatchFailNonTermination NoMethodErrorNestedAtomicallytryJusttry onException mapException handleJusthandlefinally catchJustbracket_bracketOnErrorbracket ThreadStatus ThreadRunningThreadFinished ThreadBlocked ThreadDiedTVarSTMPrimMVar BlockReason BlockedOnSTMBlockedOnOther BlockedOnMVarBlockedOnForeignCallBlockedOnBlackHoleBlockedOnExceptionyield writeTVar unsafeIOToSTMthrowTothrowSTM threadStatusthreadCapabilitysetUncaughtExceptionHandlersetNumCapabilitiessetAllocationCounter runSparksretryreportStackOverflowreportHeapOverflow reportError readTVarIOreadTVarpseqparorElse numSparksnumCapabilities newTVarIOnewTVarnewStablePtrPrimMVar myThreadIdmkWeakThreadId labelThread killThreadgetUncaughtExceptionHandlergetNumProcessorsgetNumCapabilitiesgetAllocationCounterenableAllocationLimitdisableAllocationLimit childHandlercatchSTM atomicallyDynamic fromDynamicfromDyn dynTypeRepdynApplydynAppSomeAsyncException IOErrorType UserErrorUnsupportedOperationUnsatisfiedConstraints TimeExpired SystemErrorResourceVanishedResourceExhausted ResourceBusy ProtocolErrorPermissionDenied OtherError NoSuchThingInvalidArgument InterruptedInappropriateTypeIllegalOperation HardwareFaultEOF AlreadyExistsFixIOExceptionExitCode ExitFailure ExitSuccessDeadlockCompactionFailedBlockedIndefinitelyOnSTMBlockedIndefinitelyOnMVarAsyncException UserInterrupt ThreadKilled HeapOverflow StackOverflowAssertionFailedArrayExceptionIndexOutOfBoundsUndefinedElementAllocationLimitExceededuntangle stackOverflow ioExceptionioError heapOverflowcannotCompactPinnedcannotCompactMutablecannotCompactFunctionblockedIndefinitelyOnSTMblockedIndefinitelyOnMVarasyncExceptionToExceptionasyncExceptionFromExceptionallocationLimitExceeded modifyIORef' modifyIORef mkWeakIORefatomicWriteIORefForeign.ForeignPtr.ImpnewForeignPtrEnv newForeignPtrmallocForeignPtrArray0mallocForeignPtrArray FinalizerPtrFinalizerEnvPtrwithForeignPtrtouchForeignPtrplusForeignPtrnewForeignPtr_mallocForeignPtrBytesmallocForeignPtrfinalizeForeignPtrcastForeignPtraddForeignPtrFinalizerEnvaddForeignPtrFinalizer writeIORefnewIORefatomicModifyIORef'GHC.IO MaskingStateUnmaskedMaskedInterruptibleMaskedUninterruptibleFilePathuninterruptibleMask_uninterruptibleMaskthrowIOstToIOmask_mask interruptiblegetMaskingStateevaluatecatch IOExceptionioe_type ioe_location ioe_handle ioe_filename ioe_errnoIOErrorioe_description userErrorunsupportedOperation GHC.Exception ErrorCallErrorCallWithLocationthrowGHC.Exception.Type Exception toExceptiondisplayException fromExceptionArithExceptionRatioZeroDenominatorLossOfPrecision DivideByZeroDenormal UnderflowOverflow Data.TypeableTypeRep typeRepTyContypeRepFingerprint typeRepArgstypeReptypeOf7typeOf6typeOf5typeOf4typeOf3typeOf2typeOf1typeOf splitTyConApp showsTypeRep rnfTypeRepmkFunTygcast2gcast1gcast funResultTyeqTcast tyConPackage tyConName tyConModuletyConFingerprint trLiftedReprnfTyConData.Functor.ConstConstgetConst traverse_ sequence_ sequenceA_ornotElemmsum minimumBy maximumByfor_foldrMfoldlMfind concatMapconcatasumanyandall Data.OldListzipWith7zipWith6zipWith5zipWith4zip7zip6zip5zip4wordsunzip7unzip6unzip5unzip4unwordsunlinesunionByunionunfoldr transposetails subsequences stripPrefixsortBysort singleton permutations partitionnubBynublines isSuffixOf isPrefixOf isInfixOf intersperse intersectBy intersect intercalateinsertByinsertinitsgroupBygroup genericTakegenericSplitAtgenericReplicate genericLength genericIndex genericDrop findIndices findIndex elemIndices elemIndex dropWhileEnddeleteFirstsBydeleteBydelete\\ Data.MonoidApgetApData.Semigroup.InternalSumgetSumProduct getProductEndoappEndoDualgetDualAnygetAnygetAltAllgetAll stimesMonoidstimesIdempotentData.OrdDowngetDown comparingclamp Foreign.PtrWordPtrIntPtr wordPtrToPtr ptrToWordPtr ptrToIntPtr intPtrToPtrfreeHaskellFunPtrForeign.StorableStorable pokeElemOff pokeByteOffpoke peekElemOff peekByteOffpeeksizeOf alignment freeStablePtrdeRefStablePtrcastStablePtrToPtrcastPtrToStablePtrunsafeCoerceUnliftedunsafeCoerceAddr unsafeCoerce Data.BitsXorgetXorIorgetIorIffgetIffAndgetAndoneBits Data.Char isSeparatorisNumberisMarkisLetter digitToInt Text.Readreads readMaybe readEitherreadrightspartitionEithersleftsisRightisLeft fromRightfromLefteither Data.ProxyProxyKProxy asProxyTypeOfControl.CategoryCategoryid.>>><<<Data.Type.Equality:~~:HRefl:~:ReflplusPtrnullPtr nullFunPtrminusPtrcastPtrToFunPtrcastPtrcastFunPtrToPtr castFunPtralignPtrNumericshowOct showIntAtBaseshowIntshowHex showHFloat showGFloatAlt showGFloat showFFloatAlt showFFloat showEFloatshowBin readSignedreadOctreadIntreadHex readFloatreadDecreadBin readParen readLitChar lexLitChar lexDigitslexText.ParserCombinators.ReadPrecReadPrec readS_to_Prec readPrec_to_S readPrec_to_P readP_to_PrecText.ParserCombinators.ReadPReadS showFloatfromRat floatToDigits byteSwap64 byteSwap32 byteSwap16 bitReverse8 bitReverse64 bitReverse32 bitReverse16 GHC.UnicodeGeneralCategoryUppercaseLetterTitlecaseLetter SurrogateSpacingCombiningMarkSpace PrivateUseParagraphSeparator OtherSymbolOtherPunctuation OtherNumber OtherLetterOpenPunctuation NotAssignedNonSpacingMarkModifierSymbolModifierLetter MathSymbolLowercaseLetter LineSeparator LetterNumber InitialQuoteFormat FinalQuote EnclosingMark DecimalNumberDashPunctuationCurrencySymbolConnectorPunctuationControlClosePunctuationtoUppertoTitletoLowerisUpperisSymbolisSpace isPunctuationisPrint isOctDigitisLowerisLatin1 isHexDigitisDigit isControl isAsciiUpper isAsciiLowerisAscii isAlphaNumisAlphageneralCategoryGHC.Bits FiniteBits finiteBitSizecountLeadingZeroscountTrailingZerosBitszeroBitsxor unsafeShiftR unsafeShiftLtestBitshiftRshiftLshiftsetBitrotateRrotateLrotatepopCountisSigned complementBit complementclearBit bitSizeMaybebitSizebit.&..|.toIntegralSizedtestBitDefaultpopCountDefault bitDefault showSignedodd numeratorlcmgcdeven denominator^^^%GHC.Charchr GHC.STRefSTRef writeSTRef readSTRefnewSTRefrunSTShowSshows showString showParen showLitCharshowChar intToDigitzipWith3zipWithzip3unzip3unzip takeWhiletaketailsplitAtspanscanr1scanrscanl1scanl'scanlreverse replicaterepeatlookuplastiterate'iterateinitheadfoldl1' dropWhiledropcyclebreak!! Data.Maybe maybeToListmaybemapMaybe listToMaybe isNothingisJust fromMaybefromJust catMaybes Data.Boolbool Data.Functiononfix& Data.Functorvoid<&><$>$>uncurryswapcurryVersion versionTags versionBranch makeVersion GHC.IO.UnsafeunsafePerformIOunsafeInterleaveIOunsafeDupablePerformIOGHC.MVarMVar tryTakeMVar tryReadMVar tryPutMVartakeMVarreadMVarputMVarnewMVar newEmptyMVar isEmptyMVarsubtract MonadPlusmplusmzero Alternativesomemany<|>emptywhenuntilordliftM5liftM4liftM3liftM2liftMliftA3liftAflipconstasTypeOfap=<<<**>$!GHC.Err undefinederrorWithoutStackTraceerrorstimesIdempotentMonoid SomeException&&not||*contravariant-1.5.5-596ADKsI2Mu9h4lPQxvtWT$Data.Functor.Contravariant.DivisiblechosenlostliftD conquereddivided Divisibledivideconquer Decidablechooselose stm-2.5.0.2Control.Monad.STMcheckControl.Concurrent.STM.TArrayTArrayControl.Concurrent.STM.TVarswapTVar stateTVar modifyTVar' modifyTVar mkWeakTVarControl.Concurrent.STM.TQueueTQueue writeTQueue unGetTQueue tryReadTQueue tryPeekTQueue readTQueue peekTQueue newTQueueIO newTQueue isEmptyTQueue flushTQueueControl.Concurrent.STM.TMVarTMVar tryTakeTMVar tryReadTMVar tryPutTMVar takeTMVar swapTMVar readTMVarputTMVar newTMVarIOnewTMVarnewEmptyTMVarIO newEmptyTMVar mkWeakTMVar isEmptyTMVarControl.Concurrent.STM.TChanTChan writeTChan unGetTChan tryReadTChan tryPeekTChan readTChan peekTChan newTChanIOnewTChannewBroadcastTChanIOnewBroadcastTChan isEmptyTChandupTChan cloneTChanControl.Concurrent.STM.TBQueueTBQueue writeTBQueue unGetTBQueuetryReadTBQueuetryPeekTBQueue readTBQueue peekTBQueue newTBQueueIO newTBQueue lengthTBQueue isFullTBQueueisEmptyTBQueue flushTBQueue)uuid-types-1.0.5.1-Lsrmlh5d3vAIpeTuWzSRL3Data.UUID.Types.InternalUUIDinspectTBQueuesimplerFlushTBQueueflushNonEmptyTBQueuesplitWhileJust receiveSingleRunnergetIdstartreceiveMultiplereleaseWithExceptionreleaseNormallyTellbothoneWait$sel:tell:Actor$sel:kill:Actor$sel:wait:Actor$sel:ids:ActorStatefulActorSpecenterexitstep individual