úÎ!sÁP-ÿË      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥ ¦ § ¨ © ª « ¬ ­ ® ¯ ° ± ² ³ ´ µ ¶ · ¸ ¹ º » ¼ ½ ¾ ¿ À Á  à Ä Å Æ Ç È É Ê SafelxËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿLM      !"#$%&'()*+,-./0123456789:NOPRQSSafel» SafelùM;T<=>V?U@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstWuvwxyz{|}~€‚ƒNonelsÿb "&ÞÝ' ßàâá(")º¹¸·¶µ´³²±°¯®­¬«ª©* ×Ö+ÕÔÓÒÑÐ,-.     /+*)($#0V§12ÈÇÆÅÄÃÂÁÀ¿¾½¼»3ÜÛÚÙØ4]èç„…56$#%^7œ˜ž™š”“›–•—8wuvt9:; !<JM=>?@ABCKLDPQREFGHINOSTUWXYZYXZ[\_ba`dcefghijklmnopqrsxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’Ÿ ¡¢£¤¥¦¨ÉÊËÌÍÎÏãäåæéêëìíîïðñòóôõö÷øùúûüýþÿ  !%&',-./0123456789:;<=>?@ABCDEFGHIJKLMNOPRQSTVUW[]^_`ÿp &ÞÝ' ßàâá(")º¹¸·¶µ´³²±°¯®­¬«ª©* ×Ö+ÕÔÓÒÑÐ,-.     /+*)($#0V§12ÈÇÆÅÄÃÂÁÀ¿¾½¼»3ÜÛÚÙØ4]èç6$#%^7œ˜ž™š”“›–•—8wuvt:; !<JM=>?@ACKLDPQREFGINOTU\_xyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ’Ÿ ¡¢£¤¥¦¨ÊËÌÍÎÏãäåæéêëìíîïðñòóôõö÷øùúûüýþÿ  !%&'",-utba`efghijklmnopqrs‘’É/0123456789:;<=>?@ABCDEFGHIJKdc; !:H9BX^S]_`LMNOPRQSTVUWZ[5YZYX[-.,WNonel/®adistribution-opensuse4A (quite possibly inefficient) re-implementation of git stripspace. This function normalizes a X* buffer to conform to the following rules:%All trailing white space is stripped.FEmpty lines at the beginning or at the end of the buffer are stripped.BConsecutive empty lines between paragraphs are collapsed into one.rn" line endings are normalized into n.@If the buffer is not empty, then its last line is terminated by n.eIf the buffer is empty (i.e. it contains only white space), then it comes out as the empty string.aaNone/l0 bcdfgehij jbcdfgehiNone6Kl7»ldistribution-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"mdistribution-opensuse3Constructor function for e-mail addresses. Returns K( if the input is syntactically invalid.ndistribution-opensuse5Accessor function for the underlying path of strings.lmnlmnNone6<KlAv‚distribution-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-opensuse§Consume 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 ‰. yz{|}~€‚ƒ ~yz{|}€‚ƒNone6lB ’“”•–—˜™š ’“”•—˜–™šSafelB𤤠None6<KlKY¥distribution-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 ProjectIdNothing¦distribution-opensuse-Constructor function for project identifiers.1TODO: Figure out how to deal with the [] project.§distribution-opensuse5Accessor function for the underlying path of strings.¥¦§¥¦§ None6KlO»¸distribution-opensuseType synonym for convenience.¹distribution-opensuseType synonym for convenience.»distribution-opensuse3Constructor function for typed request identifiers.¼distribution-opensuse4Accessor function for the underlying natural number.¸¹º»¼º»¼¸¹ SafelP!ÊÊŠ !"#$%$&$'$()*)+,-./012"3"4"5"6789:;<=>?@$A$B)CDE"F"GHIJ)KLM"NDO"PQR1STUVWXYZ[\]^]_]`]a]bcdefgh]i"j]k]lmnop]qrs]touov]w]x]yz{|}~L€‚ƒ„…†‡ˆ‰Š‹ŒŠŽQQ‘’“”•–—˜—™7š7›7œ77ž7Ÿ7 7¡7¢7£7¤7¥7¦7§W¨W©WªW«W¬­®¯°±²³´µ¶·¸¹º»¼¹½¹¾U¿UÀUÁUÂUÃUÄUÅUÆUÇUÈUÉUÊUËUÌUÍUÎUÏUÐUÑUÒUÓUÔUÕÖ×ÖØÖÙÖÚ’ÛoÜLÝLÞLßàáDâDãDäDåDæDçDèDéDêDëDìDíDîDïDðDñDòDóDôDõDöD÷DøDùDúDûDüDýDþDÿDD}""""""" " " " " """"""""$$$$$$QQQQQ Q!"#$%&'()*+,-./0123456789:;<=>=?@ABCDEFGHIJKLMNOPQRSTUVWXYZY[Y\)])^)_)`)a)b)c)d)e)fghijklmnopqrpqspqtpqupqvpqwpqxpqypqzpq{pq|pq}pq~pqpq€pqpq‚pqƒpq„pq…pq†pq‡pqˆpq‰pqŠpq‹pqŒpqpqŽ‘’“”•“”–“”—“”˜“”™“”š›œ›œž›œŸ› ¡‡ˆ¢‡ˆ£‡ˆ‰‡¤¥¦§¨©ª«¬¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÂÃÄÅÆÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêë ì í î ï ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ                   !"#$%&'()*+,-,.,/,0,1,2,3,4,5,6,7,8,9,:,;,<,=,>,?,@,A,B,C,DEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnonppqrstuvwxwywzw{w|w}w~ww€ww‚wƒ›œ„›œ…›œ†›œ†›œ‡›œˆ› ‰› Š› ‹› Œ› › Ž› › › ‘› 9› ’› “› ”› •› –› —› ˜› ™› š› ›› œ› › ž› Ÿ›  › ¡› ¢› £› ¤› ¥› ¦› §› ¨› ©› ª› «› ¬› ­› ®› ¯› °› (› ±› ²› ³› ´› µ› ¶› ·› ¸› ¹› ›º»›º¼›º½›º¾›º¿›ºÀ›ºÀ›ºÁ›ºÂ›ºÃ›ºÄ›ºÅ›ºÆ›ºÇ›ºÈÉÊÉËÌ͇ÎχÐÑÒ1distribution-opensuse-1.1.0-O8hRctKGgj4aso3Sj1tj5OpenSuse.Prelude'OpenSuse.Prelude.PrettyPrinting.OrphansOpenSuse.StripSpaceOpenSuse.GuessChangeLogOpenSuse.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.DiffTimeDiffTime$fPrettyNaturalLazyByteStringLazyTextpackText unpackText stripSpaceGuessedChangeLogNoChangeLogFilesUndocumentedUpdateNoCommonChangeLogFilesMoreThanOneChangeLogFileUnmodifiedTopIsTooLargeNotJustTopAdditionsguessChangeLog$fShowGuessedChangeLog 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