!k`}      !"#$%&'()*+,-./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=>?(q9salak%Reload result, show erros or changes.;salakIf reload process has errors.<salakFIf hasError then this show error messages, else this show change logs.23876549:<;=>?None"#48=>?@AHMUVXA@salakProp operators.)Suppose we have the following definition: Gdata Config = Config { enabled :: Bool , level :: IO LogLevel }AsalakParse or default value instance MonadThrow m => FromProp m Config where fromProp = Config <$> "enabled" .?= True <*> "level" .?= (return LevelInfo)IO value will work right.Bsalak+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" .?: levelDsalak Parse failedEsalak Not foundGsalakECore type class of salak, which provide function to parse properties.HsalakMonad has the ability to get a 2 instance.Isalak0Get reload action which used for reload profilesLsalakParse properties using N. 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"L 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.PsalakParse primitive value from QsalakParse 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 M m a.@BACEDFGLKJIHMNOPQA5B52019 Daniel YUBSD3leptonyu@gmail.com experimentalportableNone"#4=>?@AHMPSVXMa RsalakConvert arguments to propertiesSsalakSimple IO MonadTsalak Standard G instance.UsalakSimple IO MonadVsalakXConfiguration Loader Monad, used for load properties from sources. Custom loaders using YYsalak Basic loaderZsalak Simple loader[salak-Standard salak functions, by load and with a 2 instance. Users should use 2 to create custom G- instances, then you get will an instance of G.\salakLoad mock variables into >]salak Load environment variables into >^salak+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.6 2345678=>?GHIJKLRSTUVWXYZ[\]^_`6[YZVUTSXGHIJKL\]_R^`>= ? W23456782019 Daniel YUBSD3leptonyu@gmail.com experimentalportableNone "#=?@ASUVX^ ysalakLoad file by extensionzsalakProp load configuration|salakSpecify config key, default is  application.}salak Specify config name, default is  application.~salak'Search current directory, default true.salak%Search home directory, default false.salakHow to parse commandline.salakType synonyms of 2salak4Load 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 T.salak"Run salak, load strategy refer to salak"Run salak, load strategy refer to 929:;<@ABCFDEGHIJKLMNOPQRSTUV[\]^_uvwxyz{|}~9[z{|}~GHIJKLTS@ABNOMPQ2CFDEVU_R^]\ywxuv9:;<u3v3    !""#$%&'()*+,-./0123456789:;<<=>?@ABBCDEFGHIJKLMKNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{||}~T"salak-0.3.2-79NYNACSx9YH7LcvQZ771MSalak.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 SourcePacksourceprefqreflrefreload ReloadResulthasErrormsgs TraceSourceSourcesetValPropOp.?=.?:SalakException PropException NullException MonadSalakaskSalak askReloadsetLogFlogSalakrequirePropFromPropfromProp 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 configKey configName searchCurrent searchHome commandLineloggerFloadExt loadByExt loadSalak loadSalakWithloadAndRunSalakrunSalak runSalakWith$fDefaultPropConfig$fFromPropmFileConfig $fHasLoad:|:isNumValsunValsPriorityModTypeNoopDelAddModprioritytypeOfVgetTypenullVals emptyVals deleteValsgetValdelValsmodValsmodVals'LFuncQFuncdiffextractgensearchsearch2search1fmtfmtMod 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 gFromPropunProprunProp2runProp1runPropbuildIOnotFounderrgEnumtoNum