!N      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                             ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M 5Internal utilities of the configuration-tools package&Copyright 2014-2015 PivotCloud, Inc.MIT!Lars Kuhtz <lkuhtz@pivotmail.com> experimentalSafe>DSXhconfiguration-toolsKThis is the same type as the type from the lens library with the same name.ZIn case it is already import from the lens package this should be hidden from the import.configuration-toolsKThis is the same type as the type from the lens library with the same name.ZIn case it is already import from the lens package this should be hidden from the import.configuration-toolsKThis is the same type as the type from the lens library with the same name.ZIn case it is already import from the lens package this should be hidden from the import.11 Configuration of Optional Values!Copyright 2015 PivotCloud, Inc.MIT!Lars Kuhtz <lkuhtz@pivotmail.com> experimentalNone=>?DX?configuration-toolsCommand line parser for record N valuesExample: edata Setting = Setting { _setA "7 !Int , _setB "7 !String } deriving (Show, Read, Eq, Ord, Typeable) $(makeLenses ''Setting) defaultSetting "7 Setting defaultSetting = Setting { _setA = 0 , _setB = 1 } instance ToJSON Setting where toJSON setting = object [ "a" .= _setA setting , "b" .= _setB setting ] instance FromJSON (Setting ! Setting) where parseJSON = withObject "Setting" $ \o ! id <$< setA ..: "a" % o <*< setB ..: "b" % o instance FromJSON Setting where parseJSON v = parseJSON v <*> pure defaultSetting pSetting "7 MParser Setting pSetting = id <$< setA .:: option auto % short 'a' <> metavar "INT" <> help "set a" <*< setB .:: option auto % short 'b' <> metavar "INT" <> help "set b" -- | Use 'Setting' as 'Maybe' in a configuration: -- data Config = Config { _maybeSetting "7 !(Maybe Setting) } deriving (Show, Read, Eq, Ord, Typeable) $(makeLenses ''Config) defaultConfig "7 Config defaultConfig = Config { _maybeSetting = defaultSetting } instance ToJSON Config where toJSON config = object [ "setting" .= maybeSetting ] instance FromJSON (Config ! Config) where parseJSON = withObject "Config" $ \o ! id <$< maybeSetting %.: "setting" % o pConfig "7 MParser Config pConfig = id <$< maybeSetting %:: (maybeOption defaultSetting <$> pEnableSetting <*> pSetting) where pEnableSetting = boolOption % long "setting-enable" <> value False <> help "Enable configuration flags for setting"configuration-tools4default value that is used if base configuration is Oconfiguration-toolsIwhether to enable this parser or not (usually is a boolean option parser)configuration-tools:update function (usually given as applicative 'MParser a')configuration-toolsUthe base value that is updated (usually the result of parsing the configuration file)AUseful operators for defining functions in an applicative context!Copyright 2015 PivotCloud, Inc.MIT!Lars Kuhtz <lkuhtz@pivotmail.com> experimentalSafeDXR'configuration-tools$This operator is an alternative for Px with a higher precedence. It is suitable for usage within applicative style code without the need to add parenthesis.configuration-tools$This operator is a UTF-8 version of  which is an alternative for Px with a higher precedence. It is suitable for usage within applicative style code without the need to add parenthesis.1The hex value of the UTF-8 character is 0x00d7. In VIM type:  Ctrl-V u 00d7nYou may also define a key binding by adding something like the following line to your vim configuration file: iabbrev <buffer> >< configuration-tools0Functional composition for applicative functors.configuration-toolsLFunctional composition for applicative functors with its arguments flipped.configuration-toolsXApplicative functional composition between a pure function and an applicative function.configuration-toolssApplicative functional composition between a pure function and an applicative function with its arguments flipped.554444/Command Line Option Parsing with Default Values!Copyright 2015 PivotCloud, Inc.MIT!Lars Kuhtz <lkuhtz@pivotmail.com> experimentalSafeDSXconfiguration-tools:Type of option parsers that yield a modification function.configuration-toolsJAn operator for applying a setter to an option parser that yields a value.Example usage: "data Auth = Auth { _user "7 !String , _pwd "7 !String } user "7 Functor f ! (String ! f String) ! Auth ! f Auth user f s = (\u ! s { _user = u }) <$> f (_user s) pwd "7 Functor f ! (String ! f String) ! Auth ! f Auth pwd f s = (\p ! s { _pwd = p }) <$> f (_pwd s) -- or with lenses and TemplateHaskell just: -- $(makeLenses ''Auth) pAuth "7 MParser Auth pAuth = id <$< user .:: strOption % long "user" " short 'u' " help "user name" <*< pwd .:: strOption % long "pwd" " help "password for user"configuration-tools[An operator for applying a setter to an option parser that yields a modification function.Example usage: data HttpURL = HttpURL { _auth "7 !Auth , _domain "7 !String } auth "7 Functor f ! (Auth ! f Auth) ! HttpURL ! f HttpURL auth f s = (\u ! s { _auth = u }) <$> f (_auth s) domain "7 Functor f ! (String ! f String) ! HttpURL ! f HttpURL domain f s = (\u ! s { _domain = u }) <$> f (_domain s) path "7 Functor f ! (String ! f String) ! HttpURL ! f HttpURL path f s = (\u ! s { _path = u }) <$> f (_path s) -- or with lenses and TemplateHaskell just: -- $(makeLenses ''HttpURL) pHttpURL "7 MParser HttpURL pHttpURL = id <$< auth %:: pAuth <*< domain .:: strOption % long "domain" " short 'd' " help "HTTP domain"configuration-toolsThe  is an alternative to B.Using Bq with command line parsers that overwrite settings from a configuration file is problematic: the absence of the BB is interpreted as setting the respective configuration value to Q. So there is no way to specify on the command line that the value from the configuration file shall be used. Some command line UIs use two different options for those values, for instance --enable-feature and --disable-feature]. This option instead expects a Boolean value. Beside that it behaves like any other option.configuration-toolsAn alternative syntax for  for options with long names.Instead of taking a boolean argument the presence of the option acts as a switch to set the respective configuration setting to R>. If the option is not present the setting is left unchanged./In addition for long option names a respective  unset flag' is provided. For instance for a flag  --verbose there will also be a flag  --no-verbose.<This can still be used with short option names only, but no  unset flag would be provided.configuration-toolsMAn option parser for flags that are enabled via the flag name prefixed with  --enable-' and disabled via the flag name prefix  --disable-. The prefixes are applied to all long option names. Short option names are parsed unchanged and and cause the flag to be enabled.HThis resembles the style of flags that is used for instances with Cabal.     !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnowvutsrqp~}|{zyx     !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnowvutsrqp~}|{zyx55Configuration of Monoids!Copyright 2015 PivotCloud, Inc.MIT!Lars Kuhtz <lkuhtz@pivotmail.com> experimentalNone=?DMX configuration-toolsxUpdate a value by appending on the right. Under normal circumstances you'll never use this type directly but only its S instance. See the  for an example.configuration-toolswUpdate a value by appending on the left. Under normal circumstances you'll never use this type directly but only its S instance. See the  for an example.configuration-tools(Update a value by appending on the left. #newtype RoutingTable = RoutingTable { _routingTableMap "7 HashMap T.Text T.Text } $(makeLenses ''RoutingTable) instance FromJSON (RoutingTable ! RoutingTable) where parseJSON = withObject "RoutingTable" $ \o ! id <$< routingTableMap . from leftMonoidalUpdate %.: "route_map" % oconfiguration-toolsThis is the same as from leftMonoidalUpdate) but doesn't depend on the lens Library.configuration-tools(Update a value by appending on the left. newtype RoutingTable = RoutingTable { _routingTableMap "7 HashMap T.Text T.Text } $(makeLenses ''RoutingTable) pRoutingTable "7 MParser RoutingTable pRoutingTable = routingTableMap %:: pLeftMonoidalUpdate pRoute where pRoute = option (eitherReader readRoute) % long "route" <> help "add a route to the routing table; the APIROUTE part must not contain a colon character" <> metavar "APIROUTE:APIURL" readRoute s = case break (== ':') s of (a,':':b) ! fmapL T.unpack $ do validateNonEmpty "APIROUTE" a validateHttpOrHttpsUrl "APIURL" b return $ HM.singleton (T.pack a) (T.pack b) _ ! Left "missing colon between APIROUTE and APIURL" fmapL f = either (Left . f) Rightconfiguration-toolsLike , but works for Ts instead. Using this parser requires the input to have at least one copy (say, for flags that can be passed multiple times).configuration-tools.Update a value by appending on the right. See  for an usage example.configuration-toolsThis is the same as from rightMonoidalUpdate) but doesn't depend on the lens Library.configuration-tools.Update a value by appending on the right. See  for an usage example.configuration-toolsLike , but works for Ts instead. Using this parser requires the input to have at least one copy (say, for flags that can be passed multiple times). 2Parsing of Configuration Files with Default Values!Copyright 2015 PivotCloud, Inc.MIT!Lars Kuhtz <lkuhtz@pivotmail.com> experimentalNone2>DSX7configuration-toolsAn internalc type for the meta configuration that specifies how the configuration files are loaded and parsed.configuration-toolsA JSON U# parser for a property of a given U- that updates a setter with the parsed value. data Auth = Auth { _userId "7 !Int , _pwd "7 !String } userId "7 Functor f ! (Int ! f Int) ! Auth ! f Auth userId f s = (\u ! s { _userId = u }) <$> f (_userId s) pwd "7 Functor f ! (String ! f String) ! Auth ! f Auth pwd f s = (\p ! s { _pwd = p }) <$> f (_pwd s) -- or with lenses and TemplateHaskell just: -- $(makeLenses ''Auth) instance FromJSON (Auth ! Auth) where parseJSON = withObject "Auth" $ \o ! id <$< setProperty user "user" p o <*< setProperty pwd "pwd" parseJSON o where p = withText "user" $ \case "alice" ! pure (0 "7 Int) "bob" ! pure 1 e ! fail $ "unrecognized user " " econfiguration-toolsA variant of the  that uses the default V method from the Sa instance to parse the value of the property. Its usage pattern mimics the usage pattern of the W! operator from the aeson library. data Auth = Auth { _user "7 !String , _pwd "7 !String } user "7 Functor f ! (String ! f String) ! Auth ! f Auth user f s = (\u ! s { _user = u }) <$> f (_user s) pwd "7 Functor f ! (String ! f String) ! Auth ! f Auth pwd f s = (\p ! s { _pwd = p }) <$> f (_pwd s) -- or with lenses and TemplateHaskell just: -- $(makeLenses ''Auth) instance FromJSON (Auth ! Auth) where parseJSON = withObject "Auth" $ \o ! id <$< user ..: "user" % o <*< pwd ..: "pwd" % oconfiguration-toolsBA JSON parser for a function that modifies a property of a given U0 and updates a setter with the parsed function.This function is useful when a S# instance isn't available. When a S instance exists, the ( provides a more ideomatic alternative. data HttpURL = HttpURL { _auth "7 !Auth , _domain "7 !String } auth "7 Functor f ! (Auth ! f Auth) ! HttpURL ! f HttpURL auth f s = (\u ! s { _auth = u }) <$> f (_auth s) domain "7 Functor f ! (String ! f String) ! HttpURL ! f HttpURL domain f s = (\u ! s { _domain = u }) <$> f (_domain s) path "7 Functor f ! (String ! f String) ! HttpURL ! f HttpURL path f s = (\u ! s { _path = u }) <$> f (_path s) -- or with lenses and TemplateHaskell just: -- $(makeLenses ''HttpURL) instance FromJSON (HttpURL ! HttpURL) where parseJSON = withObject "HttpURL" $ \o ! id <$< updateProperty auth "auth" parseJSON o <*< setProperty domain "domain" parseJSON oconfiguration-tools A variant of  that uses the SA instance for the update function. It mimics the aeson operator WE. It creates a parser that modifies a setter with a parsed function. data HttpURL = HttpURL { _auth "7 !Auth , _domain "7 !String } auth "7 Functor f ! (Auth ! f Auth) ! HttpURL ! f HttpURL auth f s = (\u ! s { _auth = u }) <$> f (_auth s) domain "7 Functor f ! (String ! f String) ! HttpURL ! f HttpURL domain f s = (\u ! s { _domain = u }) <$> f (_domain s) path "7 Functor f ! (String ! f String) ! HttpURL ! f HttpURL path f s = (\u ! s { _path = u }) <$> f (_path s) -- or with lenses and TemplateHaskell just: -- $(makeLenses ''HttpURL) instance FromJSON (HttpURL ! HttpURL) where parseJSON = withObject "HttpURL" $ \o ! id <$< auth %.: "auth" % o <*< domain ..: "domain" % oconfiguration-toolsThis operator requires that a value is explicitly provided in a configuration file, thus preventing the default value from being used. Otherwise this operator does the same as '(..:)'.configuration-tools4a lens into the target that is updated by the parserconfiguration-toolsthe JSON property nameconfiguration-tools the JSON U7 parser that is used to parse the value of the propertyconfiguration-toolsthe parsed JSON U UXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~WSVU66NoneX_`Aconfiguration-toolsOInclude this function when your setup doesn't contain any extra functionality.configuration-toolsModifies the given record of hooks by adding functionality that creates a package info module for each component of the cabal package.4This function is intended for usage in more complex Setup.hsU scripts. If your setup doesn't contain any other function you can just import the  function from this module.The modules are created in the autogen# build directories where also the Path_3 modules are created by cabal's simple build setup.)Copyright 2014 AlephCloud Systems, Inc.MIT Lars Kuhtz <lars@alephcloud.com> experimentalSafe>DSX_?d configuration-tools'A validation function. The type in the  is excpected to be a # structure for collecting warnings.configuration-tools.Validates that a value is an HTTP or HTTPS URLconfiguration-tools%Validates that a value is an HTTP URLconfiguration-tools&Validates that a value is an HTTPS URLconfiguration-tools>Validates that a value is an URI without a fragment identifierconfiguration-toolsGValidates that a value is an absolute URI without a fragment identifierconfiguration-toolsOValidates that a value is an absolute URI with an optional fragment identifierconfiguration-toolsWValidates if the given executable name can be found in the system and can be executed.configuration-tools(Validate that the input is a config file"configuration-tools=configuration property name that is used in the error messageconfiguration-tools=configuration property name that is used in the error messageconfiguration-tools=configuration property name that is used in the error messageconfiguration-tools=configuration property name that is used in the error messageconfiguration-tools=configuration property name that is used in the error messageconfiguration-tools=configuration property name that is used in the error messageconfiguration-tools=configuration property name that is used in the error messageconfiguration-tools=configuration property name that is used in the error messageconfiguration-tools=configuration property name that is used in the error messageconfiguration-tools=configuration property name that is used in the error messageconfiguration-tools=configuration property name that is used in the error messageconfiguration-tools#exact length of the validated valueconfiguration-tools=configuration property name that is used in the error messageconfiguration-tools%maximum length of the validated valueconfiguration-tools=configuration property name that is used in the error messageconfiguration-tools%minimum length of the validated valueconfiguration-tools=configuration property name that is used in the error messageconfiguration-tools%minimum length of the validated valueconfiguration-tools%maximum length of the validated valueconfiguration-tools=configuration property name that is used in the error messageconfiguration-tools=configuration property name that is used in the error messageconfiguration-tools=configuration property name that is used in the error messageconfiguration-tools=configuration property name that is used in the error messageconfiguration-tools=configuration property name that is used in the error messageconfiguration-tools=configuration property name that is used in the error messageconfiguration-tools=configuration property name that is used in the error messageconfiguration-tools=configuration property name that is used in the error messageconfiguration-tools=configuration property name that is used in the error messageconfiguration-tools=configuration property name that is used in the error messageconfiguration-toolsexpected valueconfiguration-tools=configuration property name that is used in the error messageconfiguration-tools=configuration property name that is used in the error messageconfiguration-tools=configuration property name that is used in the error messageconfiguration-tools=configuration property name that is used in the error messageconfiguration-tools=configuration property name that is used in the error messageconfiguration-tools=configuration property name that is used in the error messageconfiguration-tools0a strict upper bound for the configuration valueconfiguration-tools=configuration property name that is used in the error messageconfiguration-tools)a upper bound for the configuration valueconfiguration-tools=configuration property name that is used in the error messageconfiguration-tools0a strict lower bound for the configuration valueconfiguration-tools=configuration property name that is used in the error messageconfiguration-tools)a lower bound for the configuration valueconfiguration-tools=configuration property name that is used in the error messageconfiguration-tools+the valid range for the configuration value## .Internal Tools for Parsing Configuration Files!Copyright 2015 PivotCloud, Inc.MIT!Lars Kuhtz <lkuhtz@pivotmail.com> experimentalNone ,27>DX_Econfiguration-toolsdefault configuration valueconfiguration-tools list of configuration file paths configuration-tools file path configuration-tools file path    "Utilities for Configuring Programs&Copyright 2014-2015 PivotCloud, Inc.MIT!Lars Kuhtz <lkuhtz@pivotmail.com> experimentalNone "#>DSXconfiguration-tools3Information about the cabal package. The format is: C(info message, detailed info message, version string, license text)See the documentation of Configuration.Utils.Setupr for a way how to generate this information automatically from the package description during the build process.configuration-toolsAn internalw data type that is used during configuration parsing to represent the overall application configuration which includes the user\ configuration, which is actual configuration value that is given to the application andthe metaI configuration, which are all settings that determine how the actual user$ configuration is loaded and parsed. NOTE that metak configuration settings can only be provided via command line options but not through configuration files.configuration-toolsProgram Descriptionconfiguration-tools Help headerconfiguration-tools Help footerconfiguration-tools options parser for configurationconfiguration-toolsdefault configurationconfiguration-toolsa validation function. The  result is interpreted as a  structure of warnings.configuration-toolsfa list of configuration files that are loaded in order before any command line argument is evaluated.configuration-tools[A newtype wrapper around a validation function. The only purpose of this type is to avoid ImpredicativeTypes# when storing the function in the  record.configuration-toolsProgram Descriptionconfiguration-tools Help headerconfiguration-tools Help footerconfiguration-tools Options parser for configurationconfiguration-toolsDefault configurationconfiguration-toolsValidation FunctionThe  result is interpreted as a  structure of warnings.configuration-tools\Configuration files that are loaded in order before any command line argument is evaluated. configuration-tools& for simultaneous query and update of  and &. This supports to change the type of  with  and .!configuration-toolsSmart constructor for . and  are set to O. The function  is set to const (return [])"configuration-toolsSmart constructor for . and  are set to O.configuration-toolsA list of configuration file locations. Configuration file locations are set either statically in the code or are provided dynamically on the command line via  --config-file options.configuration-toolsThe user configuration. During parsing this is represented as an update function that yields a configuration value when applied to a default value.configuration-toolsThis function parsers all command line options: ? options that determine how configuration files are loaded. ConfigFiles options are all  --config-file options.Other meta options, such as --print-config.Options for the actual user  configuration. The user configuration is represented as an update function that yields a configuration value when applied to an default value.#configuration-toolsRun an IO action with a configuration that is obtained by updating the given default configuration the values defined via command line arguments.eIn addition to the options defined by the given options parser the following options are recognized: --config-file, -cSParse the given file path as a (partial) configuration in YAML or JSON format.--print-config, -p>Print the final parsed configuration to standard out and exit. --help, -hPrint a help message and exit.)As long as the package wasn't build with -f-remote-configsl the following two options are available. They affect how configuration files are loaded from remote URLs. "--config-https-insecure=true|falseMBypass certificate validation for all HTTPS connections to all services.3--config-https-allow-cert=HOSTNAME:PORT:FINGERPRINTIUnconditionally trust the certificate for connecting to the service.$configuration-toolsRun an IO action with a configuration that is obtained by updating the given default configuration the values defined via command line arguments.eIn addition to the options defined by the given options parser the following options are recognized: --config-file, -cSParse the given file path as a (partial) configuration in YAML or JSON format.--print-config, -p>Print the final parsed configuration to standard out and exit. --help, -hPrint a help message and exit. --version, -v.Print the version of the application and exit. --info, -i8Print a short info message for the application and exit. --long-info;Print a detailed info message for the application and exit. --license:Print the text of the license of the application and exit.)As long as the package wasn't build with -f-remote-configsl the following two options are available. They affect how configuration files are loaded from remote URLs. "--config-https-insecure=true|falseMBypass certificate validation for all HTTPS connections to all services.3--config-https-allow-cert=HOSTNAME:PORT:FINGERPRINTIUnconditionally trust the certificate for connecting to the service.configuration-toolsInternal main function%configuration-tools!Parse the command line arguments.IAny warnings from the configuration function are discarded. The options --print-config and --help are just ignored.configuration-toolsxValidates a configuration value. Throws an user error if there is an error. If there are warnings they are printed to .!configuration-toolsprogram descriptionconfiguration-tools-parser for updating the default configurationconfiguration-toolsdefault configuration#configuration-toolsprogram info value; use !# to construct a value of this typeconfiguration-toolsRcomputation that is given the configuration that is parsed from the command line.$configuration-toolsprogram info value; use !# to construct a value of this typeconfiguration-toolsRcomputation that is given the configuration that is parsed from the command line.configuration-tools:Program Info value which may include a validation functionconfiguration-tools^Maybe a package info parser. This parser is run only for its side effects. It is supposed to  interceptM the parsing process and execute any implied action (showing help messages).configuration-toolsprogram info value; use !# to construct a value of this typeconfiguration-toolsRcomputation that is given the configuration that is parsed from the command line.%configuration-tools%program name (used in error messages)configuration-toolsprogram info value; use !# to construct a value of this typeconfiguration-toolscommand line argumentsg    XYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~WSVU !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnowvutsrqp~}|{zyx !"#$%!"#$%  None  "#=>?DXþ'configuration-tools>We restrict services to use either HTTP or HTTPS but not both.bTLS can be turned off explicitely in the configuration file by setting the respective section to null. It can not be turned on or off via command line options. But once it is turned on the values for the certificate and key file can be changed by command line options.(configuration-toolsMIn order to make TLS optional this type should be used wrapped into a Maybe.-configuration-toolsThis option parser does not allow to enable or disable usage of TLS. The option will have effect only when TLS usage is configured in the configuration file or the default configuration.eFIXME: print a warning and exit when one of these options is provided even though TLS is turned off.<configuration-tools3This is used as default when wrapped into Maybe and the parsed value is not  andthe given default is not O.&'()*+,-./0123456789:()*+-,'./0132&456798: SafeSXĵ                   ! " # $ % & & '( ') ') * + , -./0./1./2./3./4./5./6./7./8.9:.9;.9<.9=.9>.9?.9@.9A.9B.9C.9D.9E.9F.9G.9H.9I.9J.9K.9L.9M.9N.9O.9P.9Q.9R.9S.9T.9U.9V.9W.9X.9Y.9Z.9[.9\.9].9^.9_.9`.9a.9b.9c.9d.9e.9f.9g.9h.9i.9j.9k.9l.9m.9n.9o.9p.9q.rs.rt.ru.vw.vx.vy.vz.v{.v|.v}.v~.v.v.................................................                   ! "  # $ % % & ' ( ) * + , - . / 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 X Y Z[ Z\ ]^_`^_abcd ebfgbchbcibjkbjlbjmbjnbjobjpbjqbjrbjsbjtbjubjvbjwbjxbyzb{|b{}b~b~b~b~b~b~b~b~b~b~b~b~b~b~b~b~b~b~b~b~b~b~b~b~b~b~b~b~b~b~b~b~b~b~b~b~bbbbbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbbbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbb                                      ! " E # $%0configuration-tools-0.5.0-5xGRdmmrpidBQrrEWfutxbConfiguration.Utils.CommandLineConfiguration.Utils.InternalConfiguration.Utils.MaybeConfiguration.Utils.OperatorsConfiguration.Utils.MonoidConfiguration.Utils.ConfigFileConfiguration.Utils.SetupConfiguration.Utils.Validation-Configuration.Utils.Internal.ConfigFileReaderConfiguration.UtilsConfiguration.Utils.HttpPkgInfobaseGHC.Basemappend<*>pure*> Applicative Alternativeempty<|>somemany<*<$ Data.Functor<$>Control.Applicativeoptional unwrapMonad WrapMonad WrappedMonad unwrapArrow WrapArrow WrappedArrow getZipListZipListData.Functor.ConstgetConstConstliftA3liftA<**>liftA23optparse-applicative-0.15.1.0-2OPgP7o9KjFKThFwjitEaOptions.Applicative.Extra renderFailure parserFailureexecParserPuregetParseResulthandleParseResultcustomExecParser execParser hsubparserhelperOptions.Applicative.Builder defaultPrefsidmprefshelpLongEqualscolumnssubparserInline noBacktrackshowHelpOnEmptyshowHelpOnError disambiguate multiSuffixinfoforwardOptions noIntersperse failureCode progDescDocprogDesc footerDocfooter headerDocheader briefDescfullDescoption strOption infoOption abortOptionswitchflag'flag strArgumentargument subparser completeraction completeWith commandGroupcommandstylehiddenmetavar noArgErrorhelpDochelp showDefaultshowDefaultWithvaluelongshortdisabled maybeReader eitherReaderstrautoInfoModPrefsMod%Options.Applicative.Builder.Completer bashCompleter listCompleterlistIOCompleter$Options.Applicative.Builder.Internalinternal OptionFields FlagFields CommandFieldsArgumentFieldsHasName HasCompleterHasValue HasMetavarModOptions.Applicative.Types overFailure mkCompleter readerError readerAbortUnexpectedErrorExpectsArgError MissingError UnknownError ShowHelpTextInfoMsgErrorMsg ParseError infoPolicyinfoFailureCode infoFooter infoHeader infoProgDesc infoFullDesc infoParser ParserInfoprefHelpLongEquals prefColumns prefBacktrackprefShowHelpOnEmptyprefShowHelpOnErrorprefDisambiguateprefMultiSuffix ParserPrefsReadM CompleterexecCompletionCompletionResult execFailure ParserFailureCompletionInvokedFailure ParserResultOptions.Applicative.Help.Types helpFooterhelpBody helpUsage helpHeaderhelpSuggestions helpError ParserHelpIso'IsoLens'Lenslensoversetviewiso&<&>sshowexceptTerrorTfmapL maybeOption $fFromJSON->%×<*<>*><$<>$>MParser.::%:: boolReader boolOption boolOption_enableDisableFlag fileOption eitherReadPRightMonoidalUpdateLeftMonoidalUpdateleftMonoidalUpdatefromLeftMonoidalUpdatepLeftMonoidalUpdatepLeftSemigroupalUpdaterightMonoidalUpdatefromRightMonoidalUpdatepRightMonoidalUpdatepRightSemigroupalUpdate $fFromJSON->0$fSemigroupLeftMonoidalUpdate$fMonoidLeftMonoidalUpdate$fSemigroupRightMonoidalUpdate$fMonoidRightMonoidalUpdateConfigFilesConfig ConfigFileConfigFileRequiredConfigFileOptional getConfigFile setProperty..:updateProperty%.:!..:defaultConfigFilesConfigpConfigFilesConfig dropAndUncaml$fShowConfigFile$fReadConfigFile$fEqConfigFile$fOrdConfigFilemainmkPkgInfoModulesConfigValidationvalidateHttpOrHttpsUrlvalidateHttpUrlvalidateHttpsUrl validateUrivalidateAbsoluteUrivalidateAbsoluteUriFragment validateIPv4 validateIPv6 validatePortvalidateNonEmptyvalidateLengthvalidateMaxLengthvalidateMinLengthvalidateMinMaxLengthvalidateFilePath validateFilevalidateFileReadablevalidateFileWritablevalidateDirectoryvalidateExecutablevalidateConfigFile validateFalse validateTrue validateBoolvalidateNonNegativevalidatePositivevalidateNonPositivevalidateNegativevalidateNonNull validateLessvalidateLessEqvalidateGreatervalidateGreaterEq validateRangeConfigFileFormatYamlJsonOtherparseConfigFilesreadConfigFile loadLocal$fNFDataConfigFileFormat$fShowConfigFileFormat$fReadConfigFileFormat$fEqConfigFileFormat$fOrdConfigFileFormat$fEnumConfigFileFormat$fBoundedConfigFileFormat$fGenericConfigFileFormatProgramInfoValidate ProgramInfoConfigValidationFunctionrunConfigValidation piDescription piHelpHeader piHelpFooterpiOptionParserpiDefaultConfigurationpiValidateConfigurationpiConfigurationFiles%piOptionParserAndDefaultConfiguration programInfoprogramInfoValidaterunWithConfigurationrunWithPkgInfoConfigurationparseConfigurationHttpClientConfigurationHttpServiceConfigurationHttpServiceTLSConfiguration hstcCertFile hstcKeyFile"defaultHttpServiceTLSConfiguration#validateHttpServiceTLSConfigurationpHttpServiceTLSConfigurationhscHosthscPort hscUseTLSdefaultHttpServiceConfiguration validateHttpServiceConfigurationpHttpServiceConfigurationhccHosthccPort hccUseTLSdefaultHttpClientConfigurationvalidateHttpClientConfigurationpHttpClientConfigurationhttpService2clientConfiguration#$fToJSONHttpServiceTLSConfiguration%$fFromJSONHttpServiceTLSConfiguration $fToJSONHttpServiceConfiguration$fToJSONHttpClientConfiguration $fFromJSON->1!$fShowHttpServiceTLSConfiguration!$fReadHttpServiceTLSConfiguration$fEqHttpServiceTLSConfiguration $fOrdHttpServiceTLSConfiguration$fShowHttpServiceConfiguration$fReadHttpServiceConfiguration$fEqHttpServiceConfiguration$fOrdHttpServiceConfiguration$fShowHttpClientConfiguration$fReadHttpClientConfiguration$fEqHttpClientConfiguration$fOrdHttpClientConfiguration GHC.MaybeMaybeNothing$ghc-prim GHC.TypesFalseTrue$aeson-1.4.7.1-7zIsgD57QtKBLAX7Q8FqzRData.Aeson.Types.FromJSONFromJSON SemigroupData.Aeson.Types.InternalValue parseJSON.: Data.AesoneitherDecodeFileStrict'eitherDecodeStrict' eitherDecode'eitherDecodeFileStricteitherDecodeStrict eitherDecodedecodeFileStrict' decodeStrict'decode'decodeFileStrict decodeStrictdecode encodeFileencodeData.Aeson.TypesfoldableData.Aeson.Types.ClassGToJSON GToEncodingData.Aeson.Types.ToJSON toEncoding2toJSON2 toEncoding1toJSON1genericToJSONKeygenericLiftToEncodinggenericToEncodinggenericLiftToJSON genericToJSONToArgsNoToArgsTo1ArgsToJSONtoJSON toEncoding toJSONListtoEncodingListKeyValue.= ToJSONKey toJSONKey toJSONKeyListToJSONKeyFunction ToJSONKeyTextToJSONKeyValue GToJSONKeyToJSON1 liftToJSONliftToJSONListliftToEncodingliftToEncodingListToJSON2 liftToJSON2liftToJSONList2liftToEncoding2liftToEncodingList2Data.Aeson.Encoding.Internalpairs fromEncodingEncodingSeries.!=.:!.:?fromJSONwithEmbeddedJSONwithBoolwithScientific withArraywithText withObject parseJSON2 parseJSON1genericFromJSONKeygenericLiftParseJSONgenericParseJSONparseIndexedJSON GFromJSON gParseJSONFromArgs NoFromArgs From1Args parseJSONList FromJSONKey fromJSONKeyfromJSONKeyListFromJSONKeyFunctionFromJSONKeyCoerceFromJSONKeyTextFromJSONKeyTextParserFromJSONKeyValue GFromJSONKey FromJSON1 liftParseJSONliftParseJSONList FromJSON2liftParseJSON2liftParseJSONList2Data.Aeson.Parser.Internaljson'jsoncamelTo2defaultJSONKeyOptionsdefaultTaggedObjectdefaultOptionsobjectJSONPathResultErrorSuccessObjectArrayBoolStringNumberNull DotNetTimefromDotNetTimeOptionsfieldLabelModifierconstructorTagModifierallNullaryToStringTagomitNothingFields sumEncodingunwrapUnaryRecordstagSingleConstructors SumEncoding TaggedObject UntaggedValueObjectWithSingleField TwoElemArray tagFieldNamecontentsFieldNameJSONKeyOptions keyModifierData.Aeson.Types.GenericZeroOne mtl-2.2.2Control.Monad.Writer.Class MonadWriter Data.FoldableFoldablevalidateFileExecutableAppConfiguration_piDescription _piHelpHeader _piHelpFooter_piOptionParser_piDefaultConfiguration_piValidateConfiguration Data.EitherRight_piConfigurationFiles configFiles mainConfigpAppConfiguration runInternalvalidateConfigGHC.IO.Handle.FDstderr mainOptionsnametagrevisionbranchbranch' vcsVersioncompilerflags optimisationarchlicense licenseText copyrightauthorhomepagepackage packageNamepackageVersion dependenciesdependenciesWithLicenses versionStringlongInfopkgInfo