úÎ1a-¾<      !"#$%&'()*+,-./0123456789:;None<&Time delay between calls to the actionAction to perform<<NoneËPrepare a save action which writes settings into a JSON file. This action defers the work to a separate dedicated thread, and ensures the file isn't saved more than once within the given time interval.ZThe action is non-blocking but there is a chance a save is missed if saves are triggered ‚You can call the returned action from your UI thread as a reaction to a settings change, without worrying about delay or IO load.!Try to load settings from a file.If an error occurs, =M a pair is returned. The boolean indicates whether reading the file failed (>!) or parsing the content failed (?'). The string is an error description.If the operation succeeds, @" the loaded settings are returned.AA Safe-Inferred68         Safe-Inferred     Safe-Inferred!:Construct an empty section, no options and no subsections.")Construct a section with a single option.#Return ?' if this section contains any options, > otherwise.$Return ?+ if this section contains any subsections, > otherwise.%Return ?9 if this section is empty (no options, no subsections), > otherwise.&Return ?A if an option or a subsection is present at the specified path, > otherwise.'Return ?0 if an option is present at the specified path, > otherwise.(Return ?3 if a subsection is present at the specified path, > otherwise.)Return B1 the section or option at the specified path, or C( if this section contains no such path.*Return B& the option at the specified path, or C9 if this section doesn't contain an option at this path.+Return B' the section at the specified path, or C< if this section doesn't contain a subsection at this path.,œAdd the specified option at the specified path under this section. If the section previously contained an option for this path, the old value is replaced.-qRemove the option at the specified path, if present. If there is a section under this path, it won't be removed..rRemove the section at the specified path, if present. If there is an option under this path, it won't be removed./?Remove the option or section at the specified path, if present.!"#$%&'()*+,D-./!"#$%&'()*+,-./!"#$%&'()*+,-./!"#$%&'()*+,D-./ Safe-Inferred0MSplit a path string into its components, if it's a valid path syntactically.1OCreate a string representation of a path, with the parts separated by periods.01010101 Safe-Inferred 2TODO3TODO4TODO5TODO6TODO7TODO8TODO9TODO:TODO;TODO 23456EF789:; 23456789:; 23456789:; 23456EF789:; Safe-InferredG      !""#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIGHJDEKLDMNDMOPQRSsettings-0.1.0.0Data.Settings.PersistData.Settings.TypesData.Settings.OptionData.Settings.SectionData.Settings.RouteData.Settings.InterfaceControl.Debounce Data.SettingsmkSaveSettings loadSettings MonadSettings getSettings putSettingsmodifySettingsgetSTree OptionValue readOption showOptiontypeName SettingsError InvalidValueInvalidValueForType NoSuchNode NoSuchSection NoSuchOption InvalidPathOptRouteOptPathSecNameOptNameSectionsecOptssecSubsOptionoptGetoptSetoptReset mkOptionV mkOptionSempty singletonhasOptshasSubsnullmember memberOpt memberSublookup lookupOpt lookupSubinsert deleteOpt deleteSubdelete parseRoute showRoutequeryR querySectionR queryOptionR updateOptionR resetOptionRquery querySection queryOption updateOption resetOption mkDebouncebase Data.EitherLeftghc-prim GHC.TypesFalseTrueRight saveAction Data.MaybeJustNothing deleteImpl byPathMaybe byPathEither