!. "O      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{ | } ~         !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNSafe;CVObuildboxGlobal builder configuration.buildbox5Log all system commands executed to this file handle.buildbox0Sequence number for generating fresh file names.buildbox(Scratch directory for making temp files.buildboxThe default build config.None$;COV!zObuildboxlContinually read lines from a handle and write them to this channel. When the handle hits EOF then write P to the channel.QbuildboxeContinually read lines from some channels and write them to handles. When all the channels return PH then we're done. When we're done, signal this fact on the semaphore.RbuildboxLike S , but return the newline charater on the end of the string, if there was one. This allows us to distinguish between lines that were flushed from the IO buffer due to a newline character, and partial lines that were flushed manually, and don't have a newline.Tbuildbox2whether the last line ended in a newline characterbuildboxhandle to read lines frombuildboxchannel to write lines toOQSafe;CV; buildbox)Gang is running and starting new actions. buildboxSGang may be running already started actions, but no new ones are being started. buildboxWGang is waiting for currently running actions to finish, but not starting new ones. buildbox1Gang is finished, all the actions have completed. buildbox5Gang was killed, all the threads are dead (or dying).buildboxAbstract gang of threads.Ubuildbox+Number of worker threads currently waiting.buildboxGet the state of a gang.buildboxJBlock until all actions have finished executing, or the gang is killed.buildboxgBlock until already started actions have completed, but don't start any more. Gang state changes to  .buildboxnPause a gang. Actions that have already been started continue to run, but no more will be started until a - command is issued. Gang state changes to  .buildboxtResume a paused gang, which allows it to continue starting new actions. If the gang was paused it now changes to  , otherwise nothing happens.buildbox9Kill all the threads in a gang. Gang stage changes to  .buildbox+Block until the gang is in the given state.buildboxFork a new gang to run the given actions. This function returns immediately, with the gang executing in the background. Gang state starts as   then transitions to  5. To block until all the actions are finished use .VbuildboxRun actions on a gang.buildbox[Number of worker threads in the gang / maximum number of actions to execute concurrenty.buildbox}Actions to run. They are started in-order, but may finish out-of-order depending on the run time of the individual action.  Safe;CV<Safe;CVD buildbox:A sequence of lines, without newline charaters on the end.buildboxO(1) No logs here. buildboxO(1) Check if the log is empty.!buildboxO(n) Convert a  to a W."buildboxO(n) Convert a W to a .#buildbox O(1) Add a  to the start of a .$buildbox O(1) Add a  to the end of a .%buildbox#O(log(min(n1,n2))) Concatenate two s.&buildbox&O(n) Take the first m lines from a log'buildbox%O(n) Take the last m lines from a log  !"#$%&'  !"#$%&'Safe;COV^(buildbox7Map of event names to their details and build commands.*buildbox9Records when an event should start, and when it last ran.,buildboxJA unique name for this event. Used when writing the schedule to a file.-buildboxWhen to run the command..buildboxModifier to the previous./buildbox(When the event was last started, if any.0buildbox%When the event last finished, if any.2buildboxModifier to when.3buildboxaIf the event hasn't been invoked before then do it immediately when we start the cron process.4buildbox1Wait until after this time before doing it first.5buildboxWhen to invoke some event.6buildboxJust keep doing it.7buildboxDon't do it, ever.8buildbox)Do it some time after we last started it.9buildbox'Do it some time after it last finished.:buildbox"Do it each day at this time. The 'days' are UTC days, not local ones.?buildboxGiven the current time and a list of events, determine which one should be started now. If several events are avaliable then take the one with the earliest start time.@buildboxLGiven the current time, decide whether an event could be started. If the 2 is 3" this always returns true. The  SkipFirst4 modifier is ignored, as this is handled separately.AbuildboxBGet the list of events in a schedule, ignoring the build commands.Bbuildbox!A nice way to produce a schedule.CbuildboxAGiven an event name, lookup the associated event from a schedule.DbuildboxIGiven an event name, lookup the associated build command from a schedule.EbuildboxGiven a new version of an event, update any matching event in the schedule. If the event not already there then return the original schedule.()*+,-./0123456789:;<=>?@ABCDE;<=>56789:2341*+,-./0?@()BCDEASafe;CVeXPbuildboxSGet the names of all files in a directory. This filters out the fake files like X and '..'QbuildboxSGet the names of all the dirs in this one. This filters out the fake files like X and '..'Rbuildbox/Get all the files reachable from this directoryYbuildboxDrop out the fake X and '..' dirst from a list of paths.PQRPQRSafe;=CV{UbuildboxAn empty text string.VbuildboxAppend two text strings.Wbuildbox-Append two text strings separated by a space.XbuildboxConvert a single Char to text.YbuildboxConvert a String to text.ZbuildboxConvert a Text to Text (id).[buildboxConcatenate a list of text.\buildbox3Concatenate a list of text, with spaces in between.]buildbox&Concatenate a list of text vertically.^buildboxCConcatenate a list of text vertically, with blank lines in between._buildbox"Wrap a text thing in round parens.`buildbox"Wrap a text thing in round parens.abuildbox"Wrap a text thing in round parens.bbuildbox"Wrap a text thing in round parens.cbuildbox3Indent some text by the given number of characters.dbuildbox4Right justify a doc, padding with a given character.ebuildbox#Right justify a string with spaces.fbuildbox6Left justify a string, padding with a given character.gbuildbox"Left justify a string with spaces.hbuildboxLike i but don't display fractional part when the value is < 1000. Good for units where fractional values might not make sense (like bytes).ibuildboxPretty print an engineering value, to 4 significant figures. Valid range is 10^(-24) (y/yocto) to 10^(+24) (Y/Yotta). Out of range values yield Nothing. examples:  liftM render $ pprEngDouble "J" 102400 ==> Just "1.024MJ" liftM render $ pprEngDouble "s" 0.0000123 ==> Just "12.30us" STUVWXYZ[\]^_`abcdefghiSTVWUXYZ]^[\_`abcdefgihSafe;CVBpbuildbox)A range extracted from many-valued data.ubuildbox&Make statistics from a list of values.vbuildbox Flatten a p, into a list of its min, avg and max values.pqrstuvpqrstuv Safe;CV{buildbox4Bytes of data, pretty printed in engineering format.}buildbox6Seconds of time, pretty printed in engineering format.{|}~}~{| Safe;CV buildboxESome static size of the benchmark that isn't affected during the run.buildbox$Some resource used during execution.buildbox&Something that takes time to evaluate. Safe;CVbuildboxThe comparison of two values.buildbox-Comparison of a recent value with a baseline.buildbox)A new value that doesn't have a baseline.buildbox"Make a comparison from two values.Safe;CVbuildboxThe errors we recognise.buildboxSome generic errorbuildboxMSome system command fell over, and it barfed out the given stdout and stderr.buildbox#Some miscellanous IO action failed.buildboxSome property check? was supposed to return the given boolean value, but it didn't.buildboxeA build command needs the following file to continue. This can be used for writing make-like bots. Safe;CVbuildboxzThe builder monad encapsulates and IO action that can fail with an error, and also read some global configuration info.buildboxlRun a build command. The first argument is a directory that can be used for temporary files (like "/tmp")buildboxLike o, but report whether it succeeded to the console. If it succeeded then return Just the result, else Nothing.buildboxLike  but also takes a .buildboxLike  but also takes a .buildbox:Discard the resulting value of a compuation. Used like successfully . runBuild ...buildboxThrow a needs error saying we needs the given file. A catcher could then usefully create the file, or defer the compuation until it has been created.buildboxrLift an IO action into the build monad. If the action throws any exceptions they get caught and turned into  exceptions in our  monad.buildboxLike Z, but with teh monadz.buildboxPrint some text to stdout.buildbox0Print some text to stdout followed by a newline.buildboxPrint a blank line to stdoutbuildboxPrint a ----- line to stdoutbuildboxPrint a ===== line to stdout Safe;CVbuildboxSome testable property.buildboxUTestable properties are checkable. If the check returns false then throw an error.buildboxTTestable properties are checkable. If the check returns true then throw an error.buildbox4Check some property while printing what we're doing.buildbox4Check some property while printing what we're doing. Safe;CV. buildboxBenchmark result.buildboxBenchmark definition.buildboxA unique name for the benchmarkbuildboxwSetup command to run before the main benchmark. This does not contribute to the reported time of the overall result.buildboxThe main command to benchmark.buildbox~Check and post-process the result of the main command. This does not contribute to the reported time of the overall result.buildboxRun a benchmark a single time.buildbox*Run a benchmark the given number of times.buildbox*Run a command, returning its elapsed time.Safe;CVbuildbox Alias for [ from Control.Monad.Catch.buildbox*Log a system command to the handle in our  BuildConfig , if any.'!None;COV̽ buildboxFRun a system command, returning its exit code and what it wrote to stdout and stderr.buildboxNQuietly run a system command, returning its exit code and what it wrote to stdout and stderr.buildbox?Run a successful system command, returning what it wrote to stdout and stderr. If the exit code is \ then throw an error in the  monad.buildboxGQuietly run a successful system command, returning what it wrote to stdout and stderr. If the exit code is \ then throw an error in the  monad.buildbox@Run a successful system command, returning what it wrote to its stdout . If anything was written to stderr> then treat that as failure. If it fails due to writing to stderr or returning \ then throw an error in the  monad.buildboxHQuietly run a successful system command, returning what it wrote to its stdout . If anything was written to stderr> then treat that as failure. If it fails due to writing to stderr or returning \ then throw an error in the  monad.buildboxLike  , but in the  monad.buildboxLike  , but in the  monad.buildboxLike  , but in the ( monad and throw an error if it returns \.buildboxLike , but with strings.buildbox$Run a system command, returning its ] and what was written to stdout and stderr.buildboxWhether stdout and stderr+ should be forwarded to the parent process.buildboxCommand to run.buildboxWhat to pass to the command's stdin.^_`a]b\ Safe;CVbuildbox$Sleep for a given number of seconds.buildbox)Sleep for a given number of milliseconds.Safe;COVhbuildbox Given a schedule of commands, run them when their time is due. Only one command is run at a time. If several commands could be started at a specific moment, then we take the one with the earliest potential start time. If any command throws an error in the  monad then the whole loop does.()*+,-./0123456789:;<=>?@ABCDESafe;CV buildbox.Properties of the file system we can test for.buildbox'Some executable is in the current path.buildboxSome file exists.buildboxSome directory exists.buildboxSome file is empty.buildbox_Run a command in a different working directory. Throws an error if the directory doesn't exist.buildboxCreate a new directory with the given name, run a command within it, then change out and recursively delete the directory. Throws an error if a directory with the given name already exists.buildbox=Delete a dir recursively if it's there, otherwise do nothing.buildboxRCreate a new directory if it isn't already there, or return successfully if it is.buildbox]Create a temp file, pass it to some command, then delete the file after the command finishes.buildboxAtomically write a file by first writing it to a tmp file then renaming it. This prevents concurrent processes from reading half-written files.buildbox;The file extension for an executable on the current system.  None;CV buildbox!The given host is reachable with ping. buildboxUse wgetN to check if a web-page is gettable. The page is deleted after downloading.      None;CVE buildbox8Generic information about the platform we're running on.buildbox The environment consists of the , and some tool versions.buildbox?Get the current environment, including versions of these tools.buildbox(Get information about the host platform.buildbox!Get the name of this host, using uname.buildbox!Get the host architecture, using uname.buildbox#Get the host processor name, using uname. buildbox%Get the host operating system, using uname.!buildbox-Get the host operating system release, using uname."buildboxDGet the version of this GHC, or throw an error if it can't be found.#buildboxDGet the version of this GCC, or throw an error if it can't be found.buildbox6List of tool names and commands to get their versions. !"# !"#None;CV*buildboxZAn external mailer that can send messages. Also contains mail server info if needed.+buildboxVSend the mail by writing to the stdin of this command. On many systems the command sendmailh will be aliased to an appropriate wrapper for whatever Mail Transfer Agent (MTA) you have installed.,buildboxSend mail via MSMTP, which is a stand-alone SMTP sender. This might be be easier to set up if you don't have a real MTA installed. Get it from http://msmtp.sourceforge.net/0buildbox"An email message that we can send.9buildboxCreate a mail with a given from, to, subject and body. Fill in the date and message id based on the current time. Valid dates and message ids are needed to prevent the mail being bounced by anti-spam systems.:buildbox$Render an email message as a string.;buildboxSend a mail message.9buildbox'from'# field. Should be an email address.buildbox'to'# field. Should be an email address.buildbox Subject line.buildboxMessage body.*+,-./0123456789:;012345678*+,-./9:;None;CV EbuildboxnList all patches in the given repository. If no repository is given, the current working directory is used.Fbuildbox/Retrieve the last N changes from the repositoryGbuildboxERetrieve all patches submitted to the repository after the given time >?@ABCDEFG CD>?@ABEFGSafe;CV Safe;CV^IbuildboxRead a time of day string like 17:34:05r in the local time zone and convert that to a UTC time of day. Good for parsing command line args to buildbots.JbuildboxOGet a local time stamp with format YYYYMMDD_HHMMSS. Good for naming files with.Kbuildbox+Get the local midnight we've just had as a c.Lbuildbox1Get the local midnight that we've just had, as a d.Mbuildbox0Get the local midnight we're about to have as a c.Nbuildbox0Get the local midnight we're about to have as a d.jefghijklmnopqrstuvwxyz{|}~cdIJKLMNIJKLMN !""#$%&'()*+,-./0123456789:;<=>?@ABCDEFGGHHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopq>rstuvwxyz{|}~                                      !"#$%&&'()*+,,-./0123456789:;<=>?@ABCDDEFGHIJKLMNOPQQRSTUVWXYZ[\]^_`abcdefbghijkbclbcmnbcopbqrbqsbtubtvbtwbtxbqyz{|z}~zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz{z{z{z{z{|z{z{zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz}~z}z}zzzzzzzzzzzzzzzzzzzzzz'buildbox-2.2.1.2-CqOgEpFIfAB66AIqm0KnODBuildBox.BuildBuildBox.PrettyBuildBox.Control.GangBuildBox.Data.DividableBuildBox.Data.LogBuildBox.Data.ScheduleBuildBox.IO.DirectoryBuildBox.Data.RangeBuildBox.Data.PhysicalBuildBox.Data.DetailBuildBox.Data.ComparisonBuildBox.Build.TestableBuildBox.Build.BenchmarkBuildBox.Command.SystemBuildBox.Command.SleepBuildBox.Control.CronBuildBox.Command.FileBuildBox.Command.NetworkBuildBox.Command.EnvironmentBuildBox.Command.MailBuildBox.Command.Darcs BuildBox.TimeBuildBox.Build.BuildState!BuildBox.Command.System.InternalsBuildBox.Build.BuildErrorBuildBox.Build.BaseBuildBox(exceptions-0.10.0-CxZF6fjB5Z4GsPqBR1nkMsControl.Monad.Catchcatch text-1.2.3.0Data.Text.InternalText BuildStatebuildStateLogSystem buildStateSeqbuildStateScratchDirbuildStateDefault GangState GangRunning GangPaused GangFlushing GangFinished GangKilledGang getGangStatejoinGang flushGang pauseGang resumeGangkillGangwaitForGangStateforkGangActions$fShowGangState $fEqGangState Dividabledivide$fDividableFloat$fDividableIntegerLineLogemptynulltoString fromString<||>>< firstLines lastLinesScheduleEvent eventName eventWheneventWhenModifiereventLastStartedeventLastEnded EventName WhenModifier Immediate WaitUntilWhenAlwaysNeverEveryAfterDailysecondminutehourdayearliestEventToStartAteventCouldStartAteventsOfSchedule makeSchedulelookupEventOfSchedulelookupCommandOfScheduleadjustEventOfSchedule$fReadNominalDiffTime $fReadWhen $fShowWhen$fEqWhen$fReadWhenModifier$fShowWhenModifier$fEqWhenModifier $fReadEvent $fShowEvent $fEqEvent lsFilesInlsDirsIntraceFilesFromPrettyppr%%%charstringtexthcathsepvcatvsepparensbracesbracketsanglesindentspadRcpadRpadLcpadL pprEngInteger pprEngDouble $fPrettyChar$fPrettyInteger $fPrettyInt $fPretty[] $fPrettyText$fPrettyUTCTimeRangerangeMinrangeAvgrangeMax makeRange flattenRange$fFunctorRange $fPrettyRange $fReadRange $fShowRangeBytesSeconds$fPrettySeconds $fNumSeconds$fDividableSeconds $fRealSeconds $fPrettyBytes $fNumBytes$fDividableBytes $fRealBytes $fReadSeconds $fShowSeconds $fOrdSeconds $fEqSeconds $fReadBytes $fShowBytes $fOrdBytes $fEqBytesSizedExeSizeUsedHeapMax HeapAllocTimed TotalWallTotalCpuTotalSys KernelWall KernelCpu KernelSysDetail DetailTimed DetailUsed DetailSized $fPrettyTimed $fPrettyUsed $fPrettySized $fEqTimed $fOrdTimed $fShowTimed $fReadTimed $fEnumTimed$fEqUsed $fOrdUsed $fShowUsed $fReadUsed $fEnumUsed $fEqSized $fOrdSized $fShowSized $fReadSized $fEnumSized $fEqDetail $fOrdDetail $fShowDetail $fReadDetail Comparison ComparisonNewcomparisonBaselinecomparisonRecentcomparisonSwing comparisonNewmakeComparison$fPrettyComparison$fReadComparison$fShowComparison BuildError ErrorOtherErrorSystemCmdFailed ErrorIOErrorErrorCheckFailed ErrorNeeds buildErrorCmdbuildErrorCodebuildErrorStdoutbuildErrorStderrBuildrunBuild runBuildPrintrunBuildWithStaterunBuildPrintWithState successfullyneedsiowhenMoutoutLnoutBlankoutLineoutLINETestabletestcheck checkFalse outCheckOkoutCheckFalseOk BenchResultbenchResultNamebenchResultIterationbenchResultTimebenchResultValue Benchmark benchmarkNamebenchmarkSetupbenchmarkCommandbenchmarkCheck runBenchmarkiterateBenchmark timeBuildthrow logSystemsystemsystemqssystemssystemqsesystem sesystemq systemTee systemTeeLog ssystemTee systemTeeIOsystemTeeLogIOsleepmsleepcronLoopPropFile HasExecutableHasFileHasDir FileEmptyinDir inScratchDir clobberDir ensureDir withTempFileatomicWriteFileexe$fTestablePropFile$fShowPropFile PropNetwork HostReachable UrlGettable$fTestablePropNetwork$fShowPropNetworkPlatformplatformHostNameplatformHostArchplatformHostProcessorplatformHostOSplatformHostRelease EnvironmentenvironmentPlatformenvironmentVersionsgetEnvironmentWithgetHostPlatform getHostName getHostArchgetHostProcessor getHostOSgetHostRelease getVersionGHC getVersionGCC$fPrettyPlatform$fPrettyEnvironment$fShowPlatform$fReadPlatform$fShowEnvironment$fReadEnvironmentMailerMailerSendmail MailerMSMTP mailerPathmailerExtraFlags mailerPortMailmailFrommailTo mailSubjectmailTime mailTimeZone mailMessageIdmailBodycreateMailWithCurrentTime renderMailsendMailWithMailer $fShowMail $fShowMailer DarcsPatchdarcsTimestamp darcsAuthor darcsComment EmailAddress DarcsPathchangeschangesN changesAfter$fShowDarcsPatchreadLocalTimeOfDayAsUTC getStampyTimegetMidnightTodayLocalgetMidnightTodayUTCgetMidnightTomorrowLocalgetMidnightTomorrowUTCstreamInbaseGHC.BaseNothing streamOuts hGetLineNLGHC.IO.Handle.TexthGetLine streamIn'gangThreadsAvailablegangLoopString. dropDotPathswhenthrowMGHC.IO.Exception ExitFailureExitCode System.Exitdie exitSuccess exitFailureexitWith ExitSuccess time-1.8.0.2&Data.Time.LocalTime.Internal.LocalTime LocalTime Data.Time.Clock.Internal.UTCTimeUTCTimeData.Time.Format formatTimeNumericPadOption FormatTimeformatCharacterData.Time.Format.Parse readsTimereadTime parseTime readPTime readSTimeparseTimeOrError parseTimeM ParseTime buildTime&Data.Time.LocalTime.Internal.ZonedTimeutcToLocalZonedTime getZonedTimezonedTimeToUTCutcToZonedTime ZonedTimezonedTimeToLocalTime zonedTimeZoneData.Time.Format.Localerfc822DateFormatiso8601DateFormatdefaultTimeLocale TimeLocalewDaysmonthsamPm dateTimeFmtdateFmttimeFmt time12FmtknownTimeZoneslocalTimeToUT1ut1ToLocalTimelocalTimeToUTCutcToLocalTimelocalDaylocalTimeOfDay&Data.Time.LocalTime.Internal.TimeOfDaytimeOfDayToDayFractiondayFractionToTimeOfDaytimeOfDayToTimetimeToTimeOfDaylocalToUTCTimeOfDayutcToLocalTimeOfDaymakeTimeOfDayValidmiddaymidnight TimeOfDaytodHourtodMintodSec%Data.Time.LocalTime.Internal.TimeZonegetCurrentTimeZone getTimeZoneutctimeZoneOffsetStringtimeZoneOffsetString'hoursToTimeZoneminutesToTimeZoneTimeZonetimeZoneMinutestimeZoneSummerOnly timeZoneName Data.Time.Clock.Internal.UTCDiff diffUTCTime addUTCTimeData.Time.Clock.POSIXgetCurrentTime&Data.Time.Clock.Internal.UniversalTime UniversalTime ModJulianDategetModJulianDateutctDay utctDayTime#Data.Time.Clock.Internal.SystemTimegetTime_resolution(Data.Time.Clock.Internal.NominalDiffTime nominalDayNominalDiffTime!Data.Time.Clock.Internal.DiffTimediffTimeToPicosecondspicosecondsToDiffTimesecondsToDiffTimeDiffTimeData.Time.Calendar.GregorianaddGregorianYearsRollOveraddGregorianYearsClipaddGregorianMonthsRollOveraddGregorianMonthsClipgregorianMonthLength showGregorianfromGregorianValid fromGregorian toGregorianData.Time.Calendar.OrdinalDate isLeapYearData.Time.Calendar.DaysdiffDaysaddDaysDayModifiedJulianDaytoModifiedJulianDay