!jG      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                   None/l\]_`^abcc\]_`^ab SafelxLM      !"#$%&'()*+,-./012345678NOPRQSSafel/ SafelmM9T:;<V=U>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrWstuvwxyz{|}~Nonelb "&' (")* +,-.     /+*)($#0V1234]56$#%^78wuvt9:; !<JM=>?@ABCKLDPQREFGHINOSTUWXYZYXZ[\_ba`dcefghijklmnopqrsxyz{|}~  !%&',-./0123456789:;<=>?@ABCDEFGHIJKLMNOPRQSTVUW[fghip &' (")* +,-.     /+*)($#0V1234]6$#%^78wuvt:; !<JM=>?@ACKLDPQREFGINOTU\_xyz{|}~  !%&'",-utba`efghijklmnopqrs/0123456789:;<=>?@ABCDEFGHIJKdc; !:H9BXgSfhiLMNOPRQSTVUWZ[5YZYX[-.,WNone6Kl.jdistribution-opensuseBmkEMailAddress " accept . full (rfc822) . syntax @ example . org "4Just (EMailAddress "accept.full.syntax@example.org")#mkEMailAddress "@this@is@not@good@"Nothing;prettyShow (fromString "joe @ example.net" :: EMailAddress)"joe@example.net"kdistribution-opensuse3Constructor function for e-mail addresses. Returns K( if the input is syntactically invalid.ldistribution-opensuse5Accessor function for the underlying path of strings.jkljklNone6<Kl8adistribution-opensuse4Note that the input must be terminated by a newline.QparseTest parseDateAddressLine "Wed Jun 27 09:25:07 UTC 2018 - foo@example.org\n"8(2018-06-27 09:25:07 UTC,EMailAddress "foo@example.org")distribution-opensuseAConsume an empty line, i.e. a line that contains only whitespace.distribution-opensuseConsume all text until the end of the file or a dashed line is found. In the latter case, the dashed line is consumed as well. This is unfortunate, but it's how the ! combinator works, unfortunately,distribution-opensuse!Appropriate format parameter for  and . wxyz{|}~ |}wxyz{~None6l8  Safel9None6<KlBDdistribution-opensuse0Projects are identified on OBS by a string path.8parse "project id" "SUSE:SLE-12-SP2:Update" :: ProjectId(ProjectId ["SUSE","SLE-12-SP2","Update"]9parseM "project id" "SUSE::SLE-12-SP2" :: Maybe ProjectIdNothing.parseM "project id" ":SUSE" :: Maybe ProjectIdNothing.parseM "project id" "SUSE:" :: Maybe ProjectIdNothingdistribution-opensuse-Constructor function for project identifiers.1TODO: Figure out how to deal with the [] project.distribution-opensuse5Accessor function for the underlying path of strings. None6KlFdistribution-opensuseType synonym for convenience.distribution-opensuseType synonym for convenience.distribution-opensuse3Constructor function for typed request identifiers.distribution-opensuse4Accessor function for the underlying natural number. SafelG             !" #$ #% #& #'()(* + , - . / 01 !2 !3 !4 !5 67 8 9 : ; < = > ? #@ #A(B CD !E !F G H I(J KL !M CN !O PQ 0R S TU VW XY Z [\]\^\_\`\abcd ef g\h !i\j\k lm no\p q r\s nt nu\v\w\xyz{ |} ~ K P P      6 6 6 6 6 6 6 6 6 6 6 6 6 6 V V V V V               T T T T T T T T T T T T T T T T T T T T T T T n K K K  C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C | ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! # # # # # # P P P P P P ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; <= <> ? @ A B C D E F G H I J K L M N O P Q R S T U V W XY XZ X[(\(](^(_(`(a(b(c(d(efghijklmnopqopropsoptopuopvopwopxopyopzop{op|op}op~opopopopopopopopopopopopopopop                    !"#$%&'()*+*,*-*.*/*0*1*2*3*4*5*6*7*8*9*:*;*<*=*>*?*@*A*BCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmlnnopqrstuvuwuxuyuzu{u|u}u~uuu8&  2distribution-opensuse-1.0.0-1yC1Ff7v32kLIvplvbwx3vOpenSuse.PreludeOpenSuse.GuessChangeLog'OpenSuse.Prelude.PrettyPrinting.OrphansOpenSuse.Types.EMailAddressOpenSuse.Types.ChangeLogOpenSuse.Types.IssueOpenSuse.Types.PackageNameOpenSuse.Types.ProjectIdOpenSuse.Types.RequestIdOpenSuse.Types.UserNameOpenSuse.Prelude.ParserOpenSuse.Prelude.PrettyPrintingbaseGHC.Base++ghc-primGHC.PrimseqGHC.Listfilterzip System.IOprint Data.Tuplefstsnd otherwisemap$GHC.Num fromInteger-GHC.Real fromRationalGHC.EnumenumFrom enumFromThen enumFromToenumFromThenTo GHC.Classes==>=negate>>=>>fmapreturn Data.String fromString fromIntegral realToFrac toInteger toRational Control.Monadguard<>memptymappendmconcatjoin<*>pure*>BoundedEnumEq GHC.FloatFloating FractionalIntegralMonadFunctorNumOrdGHC.ReadReadReal RealFloatRealFracGHC.ShowShowIsString Applicative Data.FoldableFoldableData.Traversable Traversable GHC.GenericsGeneric SemigroupMonoid GHC.TypesBoolCharDoubleFloatInt integer-gmpGHC.Integer.TypeInteger GHC.NaturalNaturalMaybeOrderingRationalIOWordGHC.WordWord8 Data.EitherEitherFalseNothingJustTrueLeftRightLTEQGTbytestring-0.10.8.2Data.ByteString.Internal ByteString Data.Functor<$>StringreadList&hashable-1.2.7.0-Q2TKVDwk4GBEHmizb4teZData.Hashable.ClassHashable text-1.2.3.0Data.Text.InternalText time-1.8.0.2 Data.Time.Clock.Internal.UTCTimeUTCTime$aeson-1.4.0.0-LIOMjdhUbDoEPhbHMMZ6tyData.Aeson.Types.ToJSONToJSONData.Aeson.Types.FromJSONFromJSONShowSshow<* Text.Readreadmplusmzero MonadPlusControl.Monad.IO.ClassliftIOMonadIOmfilter<$!>unless replicateM_ replicateMfoldM_foldM zipWithM_zipWithM mapAndUnzipMforever<=<>=>filterMforMsequencemapM sequenceAtraversereadIOreadLn appendFile writeFilereadFileinteract getContentsgetLinegetCharputStrLnputStrputCharGHC.IO.ExceptionioErrorGHC.IOFilePath userErrorIOErrornotElemallanyorand concatMapconcatmsum sequence_forM_mapM_productsumminimummaximumelemlengthnullfoldl1foldr1foldlfoldrfoldMap Data.OldListunwordswordsunlineslinesreadseitherlex readParen readsPrecText.ParserCombinators.ReadPReadSatanhacoshasinhtanhcoshsinhatanacosasintancossinlogBase**sqrtlogexppiatan2isIEEEisNegativeZeroisDenormalized isInfiniteisNaN scaleFloat significandexponent encodeFloat decodeFloat floatRange floatDigits floatRadixvoidlcmgcd^^^oddevendivModquotRemmoddivremquotrecip/floorceilingroundtruncateproperFractionmaxBoundminBoundfromEnumtoEnumpredsucc showParen showStringshowCharshowsshowList showsPrecunzip3unzipzipWith3zipWithzip3!!lookupreversebreakspansplitAtdroptake dropWhile takeWhilecycle replicaterepeatiteratescanr1scanrscanl1scanlinitlasttailhead Data.Maybe fromMaybemaybeuncurrycurrysubtractsignumabs*+asTypeOfuntil$!flip.constidapliftM5liftM4liftM3liftM2liftMwhen=<<stimessconcat<$GHC.Err undefinederrorWithoutStackTraceerror/=compare<=&&||not<>maxminbinary-0.8.5.1Data.Binary.ClassBinarycontainers-0.5.11.0Data.Set.InternalSetdeepseq-1.4.3.0Control.DeepSeqNFData"extra-1.6.9-AT5lAJP3xwQ1W64AcsUUkCControl.Monad.Extra firstJustMfindMandMorMallManyM&&^||^notMifMunlessMwhenMwhileMloopMloop mapMaybeM mconcatMapM concatForM concatMapM partitionMfold1M_fold1MeitherMmaybeMunit whenMaybeM whenMaybe whenJustMwhenJustparsec-3.1.13.0Text.Parsec.Prim runParser runParserT+parsec-class-1.0.0.0-G83sNEpcT453ikmSK7xxvQText.Parsec.ClassparseparseM CharParserparser HasParser ErrorContextpretty-1.1.3.6Text.PrettyPrint.HughesPJClass prettyShowpPrintPrettyText.PrettyPrint.HughesPJDoc utctDayTimeutctDay!Data.Time.Clock.Internal.DiffTimeDiffTimeGuessedChangeLogNoChangeLogFilesUndocumentedUpdateNoCommonChangeLogFilesMoreThanOneChangeLogFileUnmodifiedTopIsTooLargeNotJustTopAdditionsguessChangeLog$fShowGuessedChangeLog$fPrettyNaturalLazyByteStringLazyTextpackText unpackText EMailAddressmkEMailAddressunEMailAddress$fPrettyEMailAddress$fIsStringEMailAddress$fHasParserEMailAddress$fShowEMailAddress$fEqEMailAddress$fOrdEMailAddress$fGenericEMailAddress$fHashableEMailAddress$fBinaryEMailAddress$fNFDataEMailAddressEntry changedAt changedBychangeDescription ChangeLog parseEntryparseDashedLineparseDateAddressLineparseDescription$fHasParserEntry $fNFDataEntry$fHasParserChangeLog $fShowEntry $fEqEntry $fOrdEntry$fGenericEntry$fShowChangeLog $fEqChangeLog$fOrdChangeLog$fGenericChangeLog$fNFDataChangeLog$fSemigroupChangeLog$fMonoidChangeLogIssueBscCve parseIssue showIssueparseCveparseBscisCveisBsc$fFromJSONKeyIssue$fFromJSONIssue $fNFDataIssue $fBinaryIssue$fHashableIssue $fShowIssue $fEqIssue $fOrdIssue$fGenericIssue PackageName ProjectId mkProjectId unProjectId$fToJSONKeyProjectId$fToJSONProjectId$fFromJSONKeyProjectId$fFromJSONProjectId$fHasParserProjectId$fPrettyProjectId$fIsStringProjectId$fShowProjectId $fEqProjectId$fOrdProjectId$fGenericProjectId$fHashableProjectId$fBinaryProjectId$fNFDataProjectId$fSemigroupProjectId$fMonoidProjectIdReleaseRequestIdMaintenanceRequestId RequestId mkRequestId unRequestId$fHasParserRequestId$fPrettyRequestId$fIsStringRequestId$fToJSONRequestId$fFromJSONRequestId$fShowRequestId $fEqRequestId$fOrdRequestId$fEnumRequestId$fGenericRequestId$fHashableRequestId$fBinaryRequestId$fNFDataRequestIdUserNametryReplyErrorOkText.Parsec.Error ParseErrorText.Parsec.CharstringcharsatisfyanyCharoctDigithexDigitdigitletteralphaNumloweruppertab endOfLinecrlfnewlinespacespacesnoneOfoneOfText.Parsec.Combinator parserTraced parserTracemanyTill notFollowedByeofanyTokenchainr1chainl1chainlchainrcountendByendBy1sepEndBy sepEndBy1sepBy1sepBymany1 skipMany1betweenoptional optionMaybeoptionchoice updateStatesetState modifyStateputStategetStateupdateParserStatesetParserStategetParserStatesetInput setPositiongetInput getPosition parseTestrunPrunPT manyAccumskipManymany tokenPrimEx tokenPrimtoken lookAheadtokenslabelslabel<|> parserPlus parserZero parserFailmergeErrorReply parserBind parserReturn parsecMapmkPT runParsecT unexpectedsysUnExpectError unknownErrorParsecTParsecConsumedEmptyState stateInputstatePos stateUserStreamunconserrorPosText.Parsec.PossetSourceColumn setSourceLine setSourceNameincSourceColumn incSourceLine sourceColumn sourceLine sourceName SourceNameLineColumn SourcePos prettyParen prettyNormal PrettyLevel pPrintPrec pPrintList fullRender renderStylerenderfirstfsepfcatcatsep<+>$+$$$ punctuatehangnestvcathsephcat reduceDocmaybeDoubleQuotes maybeQuotes maybeBraces maybeBrackets maybeParensbracesbracketsparens doubleQuotesquotesrationaldoublefloatintegerintrbracelbracerbracklbrackrparenlparenequalscoloncommasemiisEmptyempty zeroWidthText sizedTextptexttext#Text.PrettyPrint.Annotated.HughesPJstyle TextDetailsChrStrPStrStylemode lineLengthribbonsPerLineModePageMode ZigZagModeLeftMode OneLineModeControl.Monad.Fail MonadFailfailparseEmptyLinechangeLogDateFormatData.Time.Format formatTimeData.Time.Format.Parse parseTimeM