úÎ!hø^҆      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…None=?(  † None=?Ÿ ‡ˆ‰Š‹ŒŽ‘’“”•–—˜™2019 Daniel YUBSD3leptonyu@gmail.com experimentalportableNone4$®salakA Trie from keys  to values v, which is a recursive map.salakO(1). A trie with a single element.salakO(1). The empty trie.salakGet primitive value of a trie.salakGet map value of a trie.salakO(1)5. Return True if this trie is empty, False otherwise.salak O(log (n+m))K. Return True if the specified key is present in the trie, False otherwise. salak O(log (n+m))|. Return the primitive value to which the specified key is mapped, or Nothing if this trie contains no mapping for the key.!salakO(log n)™. Associate the specified value with the specified key in this trie. If this trie previously contained a mapping for the key, the old value is replaced."salakO(log m). The expression ("& k f trie) modifies the sub trie at k.#salak O(log (n+m)). The expression (#( ks f trie) modifies the sub trie at ks.$salakO(log m). The expression ($& k f trie) modifies the sub trie at k.%salakO(1)I. The expression (update f trie) updates the primitive value in the trie.&salakO(n)R. The expression (update f ks trie) updates the primitive value of sub trie at ks.'salakO(n)R. The expression (update f ks trie) updates the primitive value of sub trie at ks.(salakO(n*m)F. Return a list of this tries's elements. The list is produced lazily.)salak O(n*m*log n)|. Construct a trie with the supplied mappings. If the list contains duplicate mappings, the later mappings take precedence.*salakO(n)O. Filter this trie by retaining only elements which values satisfy a predicate.+salakO(n+m)„. The union of two tries. If a key occurs in both tries, the provided function (first argument) will be used to compute the result.,salakO(n+m)T. The union of two tries. All the keys will be calculated by the provided function. !"#$%&'()*+, !"$#%&'()*+,None=>?(8salak%Reload result, show erros or changes.:salakIf reload process has errors.;salakFIf hasError then this show error messages, else this show change logs.237654š89;:<=›œžŸ ¡¢£>None"#48=>?@AHMUVX@£?salakProp operators.)Suppose we have the following definition: Gdata Config = Config { enabled :: Bool , level :: IO LogLevel }@salakParse or default value ˆinstance MonadThrow m => FromProp m Config where fromProp = Config <$> "enabled" .?= True <*> "level" .?= (return LevelInfo)IO value will work right.Asalak+Parse or auto extract default value from a € value Ãinstance Default Config where def = Config True (return LevelInfo) instance MonadThrow m => FromProp m Config where fromProp = Config <$> "enabled" .?: enabled <$> "level" .?: levelCsalak Parse failedDsalak Not foundEsalakECore type class of salak, which provide function to parse properties.FsalakMonad has the ability to get a 2 instance.Gsalak0Get reload action which used for reload profilesHsalakParse properties using J. For example: Êa :: Bool <- require "bool.key" b :: Maybe Int <- require "int.optional.key" c :: Either String Int <- require "int.error.key" d :: IO Int <- require "int.reloadable.key"H supports parse ¥ values, which actually wrap a Šy variable and can be reseted by reloading configurations. Normal value will not be affected by reloading configurations.LsalakParse primitive value from MsalakParse enum value from §šsalak)Support for setting default normal value.©salakSupports for parsing ¥ value.ªsalakSupport for setting default ¥ value.«salak5Automatic convert literal string into an instance of I m a.¬­?A@BDCEHGFI®¯JK°±²³ŽµLM¶·@5A52019 Daniel YUBSD3leptonyu@gmail.com experimentalportableNone"#4=>?@AHMPSVXLò NsalakConvert arguments to propertiesOsalakSimple IO MonadPsalak Standard E instance.QsalakSimple IO MonadRsalakXConfiguration Loader Monad, used for load properties from sources. Custom loaders using UUsalak Basic loaderVsalak Simple loaderWsalak-Standard salak functions, by load and with a 2 instance. Users should use 2 to create custom E- instances, then you get will an instance of E.XsalakLoad mock variables into =Ysalak Load environment variables into =Zsalak+Default way to parse command line arguments[salak+Default way to parse command line arguments\salak6Try load file, if file does not exist then do nothing.3 234567<=>EFGHNOPQRSTUVWXYZ[\3WUVRQPOTEFGHXY[NZ\=< > S2345672019 Daniel YUBSD3leptonyu@gmail.com experimentalportableNone "#=?SUVX] usalakLoad file by extensionvsalakProp load configurationxsalak Config nameysalakSpecify config dirzsalak&Search current directory, default true{salak%Search home directory, default false.|salakHow to parse commandlinežsalakConfiguration file name~salak4Load files with specified format, yaml or toml, etc.salakjDefault load salak. All these configuration sources has orders, from highest priority to lowest priority: ÿ1. loadCommandLine 2. loadEnvironment 3. loadConfFiles 4. load file from folder `salak.conf.dir` if defined 5. load file from current folder if enabled 6. load file from home folder if enabled 7. file extension matching, support yaml or toml or any other loader.salak/Standard salak functions, by load and run with P.‚salak"Run salak, load strategy refer to ƒsalak"Run salak, load strategy refer to €4289:;?@ABCDEFGHIJKLMNOPQRWXYZ[qrstuvw|xyz{}~€‚ƒ4‚ƒWvw|xyz{}EFGHPO?@AJKILM2BCDRQ[NZYX€u~stqr89:;q3r3¹    !""#$%&'()*+,-./0123456789:;<<=>?@AABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyyz{|}}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£€¥Š§š©ª«¬­®¯°±²³Žµ¶·ž¹Qº»ŒœŸ¿ÀÁÂÃÄ!salak-0.3.1-4u1yBOa8bRrBLIOqaO3vhSalak.InternalSalak Salak.TrieSalak.Internal.KeySalak.Internal.ValSalak.Internal.SourceSalak.Internal.PropbaseControl.Monad.IO.ClassMonadIO(exceptions-0.10.2-2mS9GUVmJpmKSw5CuaN6ikControl.Monad.Catch MonadThrow MonadCatchToKeystoKeysKeysunKeysKeyKTKI simpleKeysToValuetoValValueVTVIVBVLTVDVHVZTVUValTrie singletonempty getPrimitivegetMapnullmemberlookupinsertmodifymodify'modifyFupdatealteralterFtoListfromListfilter unionWith unionWith'$fTraversableTrie$fFoldableTrie $fShowTrie$fEqTrie $fFunctorTrie SourcePacksourceprefqrefreload ReloadResulthasErrormsgs TraceSourceSourcesetValPropOp.?=.?:SalakException PropException NullException MonadSalakaskSalak askReloadrequirePropFromPropfromProp readPrimitivereadEnumParseCommandLineRunSalak RunSalakT LoadSalak LoadSalakTliftNTrunRunloadTrieloadListloadAndRunSalak'loadMockloadEnvdefaultParseCommandLineloadCommandLine tryLoadFile$fMonadUnliftIOLoadSalakT$fMonadSalakLoadSalakT$fMonadUnliftIORunSalakT$fMonadSalakRunSalakT$fFunctorLoadSalakT$fApplicativeLoadSalakT$fMonadLoadSalakT$fMonadTransLoadSalakT$fMonadIOLoadSalakT$fMonadStateLoadSalakT$fMonadThrowLoadSalakT$fMonadCatchLoadSalakT$fFunctorRunSalakT$fApplicativeRunSalakT$fMonadRunSalakT$fMonadTransRunSalakT$fMonadIORunSalakT$fMonadReaderRunSalakT$fMonadThrowRunSalakT$fMonadCatchRunSalakT:|:HasLoadloadersExtLoad PropConfig configName configDirKey searchCurrent searchHome commandLineloadExt loadByExt loadSalak loadSalakWithloadAndRunSalakrunSalak runSalakWith$fDefaultPropConfig $fHasLoad:|:isNumValsunValsPriorityModTypeNoopDelAddModprioritytypeOfVgetTypenullVals emptyVals deleteValsgetValdelValsmodValsmodVals'QFuncdiffextractgensearchsearch2search1fmtfmtMod loadSource1data-default-class-0.1.2.0-FeIQ5tLoVZBHMSgrT9zptQData.Default.ClassDefaultghc-prim GHC.TypesIOGHC.MVarMVar text-1.2.3.1Data.Text.InternalText $fPropOpfa $fFromPropmn$fPropOpPropIO$fIsStringProp GFromProp gFromPropunProprunProp2runProp1runPropbuildIOnotFounderrgEnumtoNumFileName