rust(#rustc 1.70.0 (90c541806 2023-05-31)ʌԑ?-27094fcca7e14863ţ]-919e055b306699aerustc_std_workspace_coreΥ̽ˆV-914eb40be05d8663U macros log error   info  trace  log_enabled  __log_keyLOGGERSTATE UNINITIALIZED INITIALIZING INITIALIZEDMAX_LOG_LEVEL_FILTERLOG_LEVEL_NAMES SET_LOGGER_ERRORLEVEL_PARSE_ERROR!ok_or##E&~&from_str( ( ( ,..max.to_level_filter..3 579~9; ; > @@@to_level@@E  G'aGget JJbuilderJJmetadataJlevelJ JQ Jmodule_path_staticJT J file_staticJ XXXXXX XXXXXXbuild ee;hhhh mmmm mss;Logvenabledvvflush NopLoggerz | ||    set_max_levelset_max_level_racy max_level set_logger set_logger_innerFset_logger_racyloggerNOP __private_api    STATIC_MAX_LEVELMAX_LEVEL_INNERget_max_level_innerLevel  Warn Info o Trace  LevelFilterOff      o    !"#$%&'(MaybeStaticStrStatic  Borrowed  )*+,-./012Record34 RecordBuilderrecord5Metadata 6789:;<=>MetadataBuilder?@ABCDEFSetLoggerError  GParseLevelError  HIJKL 7 7"7"7(7-7-7-717273 67678787;7?7?7?7C7D7E I7M7N7O7P7Q7S7T7V7W7[7\7]7^7_7`7a7b7c7d7k7l7p7q7r7w7w7w7x7x7x7y7}7}7}7~7~7~7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777v |z57!>,se9&v 6H/##F*Z  *F ?*p p p p  zz{  ɡp p p  vppp)p)%p%p %p %p %p p)p  zp p p)%p %p p p pp qpp0p0\vC񞟕p p0rr(rr(rr0ss(rr(sr1ss(ss(ss2s ss's(ss?s?(s s?t2 tOFF,tERROR,tWARN,tINFO,tDEBUG,tTRACE,sWsW,(t sWtt(tt(tt6totoJattempted to set a logger after the logging system was already initializedJJ,tt,ttvHvHFattempted to convert a string that doesn't match an existing log levelFF,unun,uun||(||(||1 z""% "  o ߌڏ::2 :2MAX_LEVEL_INNER  ;;2 ;get_max_level_inner()   2     ŊO, 6,   Śi   ǔ9 A lightweight logging facade.!F The `log` crate provides a single logging API that abstracts over theIJ actual logging implementation. Libraries can use the logging API providedMJ by this crate, and the consumer of those libraries can choose the loggingM7 implementation that is most suitable for its use case.:L If no logging implementation is selected, the facade falls back to a "noop"OH implementation that ignores all log messages. The overhead in this caseK; is very small - just an integer load, comparison and jump.>M A log request consists of a _target_, a _level_, and a _body_. A target is aPM string which defaults to the module path of the location of the log request,PL though that default may be overridden. Logger implementations typically use O@ the target to filter requests based on some user configuration. C  # Usage  O The basic use of the log crate is through the five logging macros: [`error!`], R0 [`warn!`], [`info!`], [`debug!`] and [`trace!`] 3< where `error!` represents the highest-priority log messages ?F and `trace!` the lowest. The log messages are filtered by configuring I9 the log level to exclude messages with a lower priority. <F Each of these macros accept format strings similarly to [`println!`]. I   [`error!`]: ./macro.error.html " [`warn!`]: ./macro.warn.html  [`info!`]: ./macro.info.html  [`debug!`]: ./macro.debug.html" [`trace!`]: ./macro.trace.html"F [`println!`]: https://doc.rust-lang.org/stable/std/macro.println.htmlI ## In librariesD Libraries should link only to the `log` crate, and use the providedGK macros to log whatever information will be useful to downstream consumers.N ### Examples ```edition2018+ # #[derive(Debug)] pub struct Yak(String);.. # impl Yak { fn shave(&mut self, _: u32) {} }12 # fn find_a_razor() -> Result { Ok(1) }5 use log::{info, warn};& pub fn shave_the_yak(yak: &mut Yak) {)I info!(target: "yak_events", "Commencing yak shaving for {:?}", yak);L loop { match find_a_razor() {" Ok(razor) => {3 info!("Razor located: {}", razor);6" yak.shave(razor);% break; } Err(err) => {F warn!("Unable to locate a razor: {}, retrying", err);IO }  }  } # fn main() {} ``` ## In executablesR Executables should choose a logging implementation and initialize it early in theUI runtime of the program. Logging implementations will typically include aL7 function to do this. Any log messages generated before:3 the implementation is initialized will be ignored.6> The executable itself may use the `log` crate to log as well.A ### Warning1 The logging system may only be initialized once.4 ## Structured loggingL If you enable the `kv_unstable` feature you can associate structured valuesOJ with your log records. If we take the example from before, we can includeMA some additional context besides what's in the formatted message:DI# # #[macro_use] extern crate serde;&6 # #[derive(Debug, Serialize)] pub struct Yak(String);9J1= # fn find_a_razor() -> Result { Ok(1) }@( # #[cfg(feature = "kv_unstable_serde")]+ # fn main() {+ use log::{info, warn, as_serde, as_error};.K)Q info!(target: "yak_events", yak = as_serde!(yak); "Commencing yak shaving");T M M "M 7 info!(razor = razor; "Razor located"); :N!%N!O!O"S warn!(err = as_error!(err); "Unable to locate a razor, retrying");"VO"P# P# P# # }#- # #[cfg(not(feature = "kv_unstable_serde"))]#0P#P##$ # Available logging implementations$'$7 In order to produce log output executables have to use$:4 a logger implementation compatible with the facade.$79 There are many available implementations to choose from,%<( here are some of the most popular ones:%+& * Simple minimal loggers:& * [env_logger]& * [simple_logger]& * [simplelog]& * [pretty_env_logger]& * [stderrlog]' * [flexi_logger]' * [call_logger]' * [structured-logger]'# * Complex configurable frameworks:'& * [log4rs]( * [fern](! * Adaptors for other facilities:($ * [syslog]( * [slog-stdlog]( * [systemd-journal-logger])" * [android_log]) * [win_dbg_logger]) * [db_logger]) * [log-to-defmt]) * For WebAssembly binaries:* * [console_log]* * For dynamic libraries:*_ * You may need to construct an FFI-safe wrapper over `log` to initialize in your libraries*b+ # Implementing a Logger++M Loggers implement the [`Log`] trait. Here's a very basic example that simply+PH logs all messages at the [`Error`][level_link], [`Warn`][level_link] or,K' [`Info`][level_link] levels to stdout:-*-I-$ use log::{Record, Level, Metadata};-'- struct SimpleLogger;-.! impl log::Log for SimpleLogger {.$5 fn enabled(&self, metadata: &Metadata) -> bool {.8( metadata.level() <= Level::Info.+P/ /% fn log(&self, record: &Record) {/(- if self.enabled(record.metadata()) {/0@ println!("{} - {}", record.level(), record.args());0CP0 P0 0 fn flush(&self) {}0P11P1P11J Loggers are installed by calling the [`set_logger`] function. The maximum1ML log level also needs to be adjusted via the [`set_max_level`] function. The1OJ logging facade uses this as an optimization to improve performance of log2MF messages at levels that are disabled. It's important to set it, as it3IL defaults to [`Off`][filter_link], so no log messages will ever be captured!3OK In the case of our example logger, we'll want to set the maximum log level4NG to [`Info`][filter_link], since we ignore any [`Debug`][level_link] or5JJ [`Trace`][level_link] level log messages. A logging implementation should5M; provide a function that wraps a call to [`set_logger`] and6>: [`set_max_level`], handling initialization of the logger:6=7I7 # use log::{Level, Metadata};7! # struct SimpleLogger;7# # impl log::Log for SimpleLogger {7&6 # fn enabled(&self, _: &Metadata) -> bool { false }89& # fn log(&self, _: &log::Record) {}8) # fn flush(&self) {}8]9P9( use log::{SetLoggerError, LevelFilter};9+9, static LOGGER: SimpleLogger = SimpleLogger;9/:. pub fn init() -> Result<(), SetLoggerError> {:1 log::set_logger(&LOGGER): 9 .map(|()| log::set_max_level(LevelFilter::Info)):<P;P;;M Implementations that adjust their configurations at runtime should take care;P) to adjust the maximum log level as well.<,< # Use with `std`<<L `set_logger` requires you to provide a `&'static Log`, which can be hard to` rather than a>M `&'static Log`:??I?@ # use log::{Level, LevelFilter, Log, SetLoggerError, Metadata};?Cv?v@&v@9w@)wA]APA # #[cfg(feature = "std")]AyA12 log::set_boxed_logger(Box::new(SimpleLogger))B5yB<PCPCC # Compile time filtersCC] Log levels can be statically disabled at compile time via Cargo features. Log invocations atC`V disabled levels will be skipped and will not even be present in the resulting binary.DYT This level is configured separately for release and debug builds. The features are:DWE * `max_level_off`E * `max_level_error`E * `max_level_warn`F * `max_level_info`F * `max_level_debug`F * `max_level_trace`F * `release_max_level_off`F * `release_max_level_error`G * `release_max_level_warn`G * `release_max_level_info`G * `release_max_level_debug`G * `release_max_level_trace`HH^ These features control the value of the `STATIC_MAX_LEVEL` constant. The logging macros checkHaI this value before logging a message. By default, no levels are disabled.ILI` Libraries should avoid using the max level features because they're global and can't be changedIc once they're set.JJ] For example, a crate can disable trace level logs in debug builds and trace, debug, and infoJ`? level logs in release builds with the following configuration:KBK ```tomlK  [dependencies]LT log = { version = "0.4", features = ["max_level_debug", "release_max_level_warn"] }LWPL # Crate Feature FlagsLMU The following crate feature flags are available in addition to the filters. They areMX! configured in your `Cargo.toml`.M$N` * `std` allows use of `std` crate instead of the default `core`. Enables using `std::error` andNc" `set_boxed_logger` functionality.O%^ * `serde` enables support for serialization and deserialization of `Level` and `LevelFilter`.OaPP P7 log = { version = "0.4", features = ["std", "serde"] }P:PPP # Version compatibilityPQY The 0.3 and 0.4 versions of the `log` crate are almost entirely compatible. Log messagesQ\` made using `log` 0.3 will forward transparently to a logger implementation using `log` 0.4. LogQc_ messages made using `log` 0.4 will forward to a logger implementation using `log` 0.3, but theRb^ module path and file name information associated with the message will unfortunately be lost.SaT [`Log`]: trait.Log.htmlT [level_link]: enum.Level.htmlT!% [filter_link]: enum.LevelFilter.htmlT(# [`set_logger`]: fn.set_logger.htmlU&) [`set_max_level`]: fn.set_max_level.htmlU,3 [`try_set_logger_raw`]: fn.try_set_logger_raw.htmlU65 [`shutdown_logger_raw`]: fn.shutdown_logger_raw.htmlV87 [env_logger]: https://docs.rs/env_logger/*/env_logger/V:B [simple_logger]: https://github.com/borntyping/rust-simple_loggerWE6 [simplelog]: https://github.com/drakulix/simplelog.rsW9L [pretty_env_logger]: https://docs.rs/pretty_env_logger/*/pretty_env_logger/XO4 [stderrlog]: https://docs.rs/stderrlog/*/stderrlog/X7= [flexi_logger]: https://docs.rs/flexi_logger/*/flexi_logger/Y@: [call_logger]: https://docs.rs/call_logger/*/call_logger/Y=+ [syslog]: https://docs.rs/syslog/*/syslog/Z.: [slog-stdlog]: https://docs.rs/slog-stdlog/*/slog_stdlog/Z=+ [log4rs]: https://docs.rs/log4rs/*/log4rs/Z.% [fern]: https://docs.rs/fern/*/fern/[([ [systemd-journal-logger]: https://docs.rs/systemd-journal-logger/*/systemd_journal_logger/[^: [android_log]: https://docs.rs/android_log/*/android_log/\=C [win_dbg_logger]: https://docs.rs/win_dbg_logger/*/win_dbg_logger/\F4 [db_logger]: https://docs.rs/db_logger/*/db_logger/]7= [log-to-defmt]: https://docs.rs/log-to-defmt/*/log_to_defmt/]@: [console_log]: https://docs.rs/console_log/*/console_log/^=Q [structured-logger]: https://docs.rs/structured-logger/latest/structured_logger/^T___a _ _` ``%https://www.rust-lang.org/favicon.ico`'` ` `https://docs.rs/log/0.4.20`_bbbe e e e e The standard logging macro.I This macro will generically log with the specified `Level` and `format!`L based argument list. # ExamplesI use log::{log, Level};Y let data = (42, "Forty-two");! let private_data = "private";!? log!(Level::Error, "Received errors: {}, {}", data.0, data.1);BC log!(target: "app_events", Level::Warn, "App warning: {}, {}, {}",F# data.0, data.1, private_data);&]P  !# Logs a message at the error level.&I use log::error;Y. let (err_info, port) = ("No connection", 22);10 error!("Error: {} on port {}", err_info, port);3G error!(target: "app_events", "App Error: {}, Port: {}", err_info, 22);J]P  #" Logs a message at the warn level.%I use log::warn;Y( let warn_description = "Invalid Input";+) warn!("Warning! {}!", warn_description);,M warn!(target: "input_events", "App received warning: {}", warn_description);P]P  %!" Logs a message at the info level.%I use log::info;Y. # struct Connection { port: u32, speed: f32 }16 let conn_info = Connection { port: 40, speed: 3.20 };9K info!("Connected to port {} at {} Mb/s", conn_info.port, conn_info.speed);NQ info!(target: "connection_events", "Successful connection, port: {}, speed: {}", T( conn_info.port, conn_info.speed); +]!P!! ! '!!'# Logs a message at the debug level.$&$$$I$ use log::debug;%%Y%% # struct Position { x: f32, y: f32 }%(, let pos = Position { x: 3.234, y: -1.223 };%/&4 debug!("New position: x: {}, y: {}", pos.x, pos.y);&7J debug!(target: "app_events", "New position: x: {}, y: {}", pos.x, pos.y);&M]'P'' ' )''.# Logs a message at the trace level.*&***I* use log::trace;*+Y++(+/+3 trace!("Position is: x: {}, y: {}", pos.x, pos.y);+64 trace!(target: "app_events", "x is {} and y is {}",,7; if pos.x >= 0.0 { "positive" } else { "negative" },,>< if pos.y >= 0.0 { "positive" } else { "negative" });-?]-P-- - +-.7J Determines if a message logged at the specified level in that module will0M be logged.11L This can be used to avoid expensive computation of log message arguments if1O% the message would be ignored anyway.2(222I2 use log::Level::Debug;2 use log::{debug, log_enabled};3"3 # fn foo() {3 if log_enabled!(Debug) {3! let data = expensive_call();3$; debug!("expensive debug data: {} {}", data.x, data.y);4>P4+ if log_enabled!(target: "Global", Debug) {4. let data = expensive_call();5#L debug!(target: "Global", "expensive debug data: {} {}", data.x, data.y);5OP5]6! # struct Data { x: u32, y: u32 }6$6 # fn expensive_call() -> Data { Data { x: 0, y: 0 } }69P6P67 7 -77 :99/9: :9: : 0:: pp vpp(rr (rr (ss (s(s(s!s (t(ttuu%  o ) &āCǁ !Ӂ! "ʂ2͂$%$%ӂւ #ӂӂււȃ&&:4&& (())))()  ,(****(*  (9(++++(+ (96,, - ( .. /( Returns the most verbose logging level.Ɗ+.. 0,6 Converts the `Level` to the equivalent `LevelFilter`.9.. 1$2 Returns the string representation of the `Level`.5C This returns the same string as the `fmt::Display` implementation.F.. 2+. Iterate through all supported logging levels.1H The order of iteration is from more severe to less severe log messages.KP use log::Level; let mut levels = Level::iter();#/ assert_eq!(Some(Level::Error), levels.next());2/ assert_eq!(Some(Level::Trace), levels.last());2Pݑ.. 334444349%2#55 6&2= 7š7 82֛ۛ99::99 ;;<<<<;<ϝ;====;= 29!2՞6؞>ܞ> ?2͟.П @@ A/ Returns the most verbose logging level filter.2@@ BĤ'+ Converts `self` to the equivalent `Level`.ã.0 Returns `None` if `self` is `LevelFilter::Off`.3ˤ@Ԥ@ C$8 Returns the string representation of the `LevelFilter`.;F@Ħ@ D+0 Iterate through all supported filtering levels.3ȧ? The order of iteration is from less to more verbose filtering.ЧBP use log::LevelFilter;ƨ& let mut levels = LevelFilter::iter();)3 assert_eq!(Some(LevelFilter::Off), levels.next());65 assert_eq!(Some(LevelFilter::Trace), levels.last());ݩ8P@@ EEFFFFEF9HH  ŊOHԬ׬G۬G IHĿKK١Kɿɿ% Returns a new builder.޿JJ LK) The message body.JJ MK'" Metadata about the log directive.%JJ NK$ The verbosity level of the message.'JJ OK) The name of the target of the directive.,JJ PK, The module path of the message.# JJ QKQRRRRQR 6,98= The module path of the message, if it is a `'static` string.@JJ SK%( The source file containing the message.+JJ TKTUUUUTU91@ JJ VK!! The line containing the message.$JJ WKYYЦﯴMY! Construct new `RecordBuilder`." The default options are: - `args`: [`format_args!("")`]". - `metadata`: [`Metadata::builder().build()`]1 - `module_path`: `None` - `file`: `None` - `line`: `None`K [`format_args!("")`]: https://doc.rust-lang.org/std/macro.format_args.htmlNJ [`Metadata::builder().build()`]: struct.MetadataBuilder.html#method.buildMXX ZYJ. Set [`args`](struct.Record.html#method.args).1XX [YL Set [`metadata`](struct.Record.html#method.metadata). Construct a `Metadata` object with [`MetadataBuilder`](struct.MetadataBuilder.html).XX \Y?< Set [`Metadata::level`](struct.Metadata.html#method.level).?XX ]YC= Set [`Metadata::target`](struct.Metadata.html#method.target)@XX ^YN; Set [`module_path`](struct.Record.html#method.module_path)> XX _YZQ Set [`module_path`](struct.Record.html#method.module_path) to a `'static` stringTXX `YG- Set [`file`](struct.Record.html#method.file)0XX aYSD Set [`file`](struct.Record.html#method.file) to a `'static` string.G XX bYC- Set [`line`](struct.Record.html#method.line)0XX cY!) Invoke the builder and return a `Record`,XX dY&ffЦﯴMfee gfii ֐átiǂ'΂hh jiՃ'܃hh kiф,؄h߄h linn̼سenŠŠ## Construct a new `MetadataBuilder`.& - `level`: `Level::Info` - `target`: `""`݋mm on?9 Setter for [`level`](struct.Metadata.html#method.level).ɍ<mm pnE; Setter for [`target`](struct.Metadata.html#method.target).>mm qn# Returns a `Metadata` object. mm rn(tt̼سetss ut; A trait encapsulating the operations required of a logger.В>vv֗/A Determines if a log message with the specified metadata would beD logged. C This is used by the `log_enabled!` macro to allow callers to avoidFG expensive computation of log message arguments if the message would beܔJ discarded anyway.ŕ # For implementors͕= This method isn't called automatically by the `log!` macros.@M It's up to an implementation of the `Log` trait to call `enabled` in its ownPD `log` method implementation to guarantee that filtering is applied.Gٗvv w Logs the `Record`.ɘD Note that `enabled` is *not* necessarily called before this method.јG@ Implementations of `log` should perform all necessary filteringC internally.vv xĚ Flushes any buffered records.!ǚv͚v y %ɡ{ zz%%'|ě| }|| ~|| 7vߜ 7. 7ɝ̝Н 7 7(# Sets the global maximum log level.ң&L Generally, this should only be called by the active logging implementation.Oͤn Note that `Trace` is the maximum level, because it provides the maximum amount of detail in the emitted logs.Ѥqϥϥ ҥ  ӥͥ!  4. A thread-unsafe version of [`set_max_level`].1I This function is available on all platforms, even those that do not haveL9 support for atomics that is needed by [`set_max_level`].<< In almost all cases, [`set_max_level`] should be preferred.? # Safety K This function is only safe to call when no other level setting function isN+ called while this function still executes.ȩ.J This can be upheld by (for example) making sure that **there are no otherM? threads**, and (on embedded) that **interrupts are disabled**.ɪBG Is is safe to use all other logging functions while this function runsJ (including all logging macros).۫#,Ȭ !' Returns the current maximum log level.*ԯX The [`log!`], [`error!`], [`warn!`], [`info!`], [`debug!`], and [`trace!`] macros checkد[I this value and discard any message logged at a higher level. The maximumL4 log level is set by the [`set_max_level`] function.7 [`log!`]: macro.log.html [`error!`]: macro.error.htmlڱ  [`warn!`]: macro.warn.html [`info!`]: macro.info.html [`debug!`]: macro.debug.html  [`trace!`]: macro.trace.htmlڲ ,  I, Sets the global logger to a `&'static Log`./L This function may only be called once in the lifetime of a program. Any logOM events that occur before the call to `set_logger` completes will be ignored.P۽D This function does not typically need to be called manually. Logger߽GJ implementations should provide an initialization method that installs theM logger internally. # AvailabilityK This method is available even when the `std` feature is disabled. However,NI it is currently unavailable on `thumbv6` targets, which lack support forLF some atomic operations which are used by this function. Even on thoseI0 targets, [`set_logger_racy`] will be available.3 # Errors 7 An error is returned if a logger has already been set.:ID use log::{error, info, warn, Record, Level, Metadata, LevelFilter};G' static MY_LOGGER: MyLogger = MyLogger;* struct MyLogger; impl log::Log for MyLogger { k8l+P l(m0mCP P nP # fn main(){& log::set_logger(&MY_LOGGER).unwrap();)' log::set_max_level(LevelFilter::Info);* info!("hello log"); warn!("warning"); error!("oops");]P- [`set_logger_racy`]: fn.set_logger_racy.html0   !  9% %o   !  99 U+ A thread-unsafe version of [`set_logger`]..L6 support for atomics that is needed by [`set_logger`].99 In almost all cases, [`set_logger`] should be preferred.< G This function is only safe to call when no other logger initializationJ7 function is called while this function still executes.:͟MBC It is safe to use other logging functions while this function runsFС#& $96 %:6 ## Returns a reference to the logger.&B If a logger has not been set, a no-op implementation is returned.E % Y WARNING: this is not part of the crate's public API and is subject to change at any time\    kv_unstable $   2   '+ The statically resolved maximum log level..L See the crate level documentation for information on how to configure this.OM This value is checked by the log macros, but not by the `Log`ger returned byPJ the [`logger`] function. Code that manually calls functions on that valueM- should compare the level against this value.0 [`logger`]: fn.logger.html2"2-4yC An enum representing the available verbosity levels of the logger.vFwF Typical usage includes: checking if a certain `Level` is enabled withwID [`log_enabled!`](macro.log_enabled.html), specifying the `Level` ofwG@ [`log!`](macro.log.html), and comparing a `Level` directly to axC( [`LevelFilter`](enum.LevelFilter.html).x+y| The "error" level.zz Designates very serious errors.z#||||(} The "warn" level.|}! Designates hazardous situations.}$}}}~ The "info" level.}} Designates useful information.}"~~~~ The "debug" level.~~' Designates lower priority information.~*~~~ The "trace" level.~D Designates very low priority, often extremely verbose, information.Gyyyyyyy yyyyy y y y y y y y y y y yyyyyyyyyyyyy yyyyyyy y y y y y y y yyyyyyy yyyyyyy yyyyyyyyHy yyJ An enum representing the available verbosity level filters of the logger.ՒMG A `LevelFilter` may be compared directly to a [`Level`]. Use this typeJQ to get and set the maximum log level with [`max_level()`] and [`set_max_level`].Tǔ [`Level`]: enum.Level.html˔# [`max_level()`]: fn.max_level.html&, 2ߌڏז# A level lower than all log levels.&ז2זז2& Corresponds to the `Error` log level.)22Ɨ% Corresponds to the `Warn` log level.(Ɨ2ƗƗ2% Corresponds to the `Info` log level.З(22& Corresponds to the `Debug` log level.)22& Corresponds to the `Trace` log level.)22֕֕֕֕2֕֕֕ ݕݕݕݕ2    2    2   22      2   2 2 2 ֫۫  ŊOŊO             ŊO!!!!  ŊO!!! """"   ŊO""""   ŊO""""" """"""" # # # # !  ŊO# # # # !  ŊO# # # $$$$"  ŊO$$$ % % % % #  ŊO% % % &ȫ&ȫ&ȫ&ȫ$  ŊO&ȫ&ȫ&ȫ&ȫH&ȫ &ȫ&ȫ'Ϋ'Ϋ'Ϋ'Ϋ%  ŊO'Ϋ'Ϋ'Ϋ  The "payload" of a log message.# # Use H `Record` structures are passed as parameters to the [`log`][method.log]KB method of the [`Log`] trait. Logger implementors manipulate theseEI structures in order to display log messages. `Record`s are automaticallyL@ created by the [`log!`] macro and so are not seen by log users.C˰G Note that the [`level()`] and [`target()`] accessors are equivalent toϰJG `self.metadata().level()` and `self.metadata().target()` respectively.JI These methods are provided as a convenience for users of this structure.L # Example IJE The following example shows a simple logger that displays the level,ȲH? module path, and message of any `Record` that is passed to it.BԳIسjk$: fn enabled(&self, _metadata: &log::Metadata) -> bool {= true }) fn log(&self, record: &log::Record) {,- if !self.enabled(record.metadata()) {0 return; }  println!("{}:{} -- {}"," record.level(),#! record.target(),ն$ record.args());#Ί fn flush(&self) {}PPǷϷ* [method.log]: trait.Log.html#tymethod.logӷ-- [`level()`]: struct.Record.html#method.level0/ [`target()`]: struct.Record.html#method.target2١١ȹȹҹҹ ֐átIpiecesDDDزƬf'  ֺ   ŊO ߺߺ ֺ ((((&١ȹȹ((( ))))'١ȹȹ))) , Builder for [`Record`](struct.Record.html)./Y Typically should only be used by log library creators or for testing and "shim loggers".\U The `RecordBuilder` can set the different parameters of `Record` object, and returnsX+ the created object when `build` is called..I use log::{Level, Record}; let record = Record::builder()". .args(format_args!("Error!"))1% .level(Level::Error)(! .target("myApp")$) .file(Some("server.rs")),! .line(Some(144))$- .module_path(Some("server"))0 .build();PE Alternatively, use [`MetadataBuilder`](struct.MetadataBuilder.html):HI+ use log::{Record, Level, MetadataBuilder};., let error_metadata = MetadataBuilder::new()/) .target("myApp"),- .level(Level::Error)0" .build();%"* .metadata(error_metadata)-͜1! .line(Some(433))$& .file(Some("app.rs")))̞0P ЦﯴMЦﯴM١****(ЦﯴM***  Metadata about a log message.! = `Metadata` structs are created when users of the library use@ logging macros.? They are consumed by implementations of the `Log` trait in theB `enabled` method.A `Record`s use `Metadata` to determine the log message's severityD and target.A Users should use the `log_enabled!` macro in their code to avoidD% constructing expensive log messages.(Ij'߰ k8l+P l(m0mCP P nP؀ހ # fn main(){}PŁ ֐át֐át΁΁؁ ؁ ,,,,) ֐át΁΁,,, ----* ֐át΁΁----* ֐át΁΁----- ------- . . . . + ֐át΁΁. . . . + ֐át΁΁. . . ////, ֐át΁΁/// 0 0 0 0 - ֐át΁΁0 0 0 111 1. ֐át΁΁11111 11222 2/ ֐át΁΁222 0 Builder for [`Metadata`](struct.Metadata.html).3ąȅ\[ The `MetadataBuilder` can set the different parameters of a `Metadata` object, and returns^. ŇIɇ let target = "myApp";܇# use log::{Level, MetadataBuilder};&& let metadata = MetadataBuilder::new())) .level(Level::Debug)Lj,$ .target(target)' .build();!P ̼سe̼سe ֐át3ω3ω3ω!3ω0̼سe3ω3ω3ω!3ω0̼سe3ω3ω3ω!3ω3ω 3ω3ω3ω3ω!3ω3ω3ω 4Ӊ 4Ӊ 4Ӊ !4Ӊ 1̼سe4Ӊ 4Ӊ 4Ӊ !4Ӊ 1̼سe4Ӊ 4Ӊ 4Ӊ 5މ5މ5މ!5މ2̼سe5މ5މ5މ 6 6 6 !6 3̼سe6 6 6 777"74̼سe77777 77888"85̼سe888 O The type returned by [`set_logger`] if [`set_logger`] has already been called.R& 9Śi9999 9<<<#<79<<< W The type returned by [`from_str`] when the string doesn't match any of the log levels.ZU [`from_str`]: https://doc.rust-lang.org/std/str/trait.FromStr.html#tymethod.from_strX :ǔ9:9: 9===#=8:=== > > > #> 9:> > > #> 9:> > > ???$?::???$?::???$?? ????$??? ӁLJч D33Map.آ׋ عż(ƙšКܞ ԤĦEEE.آ׋۬߄͚ěΛϛĜНߝ    yyyyyyyyyyyyy֕!"##$$%%&ȫ&ȫ'Ϋ'Ϋ'Ϋ()))***,-..//00112223ω4Ӊ4Ӊ5މ5މ6677888<<<===>>?XGmhJ@.macro.trace.html./macro.error.html*https://docs.rs/call_logger/*/call_logger/(https://github.com/drakulix/simplelog.rs https://docs.rs/log4rs/*/log4rs/trait.Log.htmlfn.max_level.html7https://doc.rust-lang.org/stable/std/macro.println.html,https://docs.rs/flexi_logger/*/flexi_logger/./macro.warn.html*https://docs.rs/console_log/*/console_log/fn.logger.htmlstruct.MetadataBuilder.htmlstruct.Metadata.htmlfn.set_logger_racy.html./macro.trace.html&https://docs.rs/stderrlog/*/stderrlog/*https://docs.rs/android_log/*/android_log/struct.Record.htmlmacro.info.html https://docs.rs/syslog/*/syslog/(https://docs.rs/env_logger/*/env_logger/,https://docs.rs/log-to-defmt/*/log_to_defmt/@https://docs.rs/systemd-journal-logger/*/systemd_journal_logger/macro.log_enabled.htmlmacro.warn.html./macro.debug.html4https://doc.rust-lang.org/std/str/trait.FromStr.htmlhttps://docs.rs/fern/*/fern/fn.set_max_level.html*https://docs.rs/slog-stdlog/*/slog_stdlog/macro.debug.html./macro.info.htmlfn.set_logger.htmlmacro.error.htmlenum.LevelFilter.html;https://docs.rs/structured-logger/latest/structured_logger/6https://docs.rs/pretty_env_logger/*/pretty_env_logger/&https://docs.rs/db_logger/*/db_logger/4https://doc.rust-lang.org/std/macro.format_args.html0https://docs.rs/win_dbg_logger/*/win_dbg_logger/macro.log.html0https://github.com/borntyping/rust-simple_loggerenum.Level.html #vz{ ddddeDememe eFromStreZe     ! !''..7 7: :\f f ff        lvl    key   value         arg                                                                                                                                                                                                                                                                                                                                                               !$"#  """  "" """""" ""  " ##### ## # ###  ###  ### ##  ##  ###### # ######## ##  # ###$# $$ $ $$$ $ $$  $$  $$$$$$ $ $'*((  (((  (( (((((( ((  ( ((()( (( ( )))  )))  ))) ))  )) o)))))) ) )))))))) ))  ) )))*) )) ) ))* ) )*  ** o****** * *.0//  ///  // ////// //  / ///0/ // / //0  ///  /// //  //  /00000 0 00000000 00  0 00000 00 0 000 0 00  00  000000 0 07977  777  77 777 77 777979 7 777 77 778 88  88 888 88  8 8888 88  8 8  888 888  89999 99 99999 99 9  999  999 99  9 9 9  99999 99:;:::::: :: : :::;: ::  : :  :  ;;;;;;; ; ;;;;;;;; ;; ; ;;;;;;;; ; ;;y7 7y y 77 7 7y7 79y y 77 7 7 ֺ Less}Greater>yy77 7 7Fyy777 7 7FFFDFDFDF DFDFbufDۭ7 ~ 9 ÕŜՍHy y77 7 792 77 7 722"ԁځ77 7 72tق ֺ  ~ Z'(7 7 ~ ZF-‡777 7 7FFFDFDFDF DFDFDۭ7/0123u( ֺ 7 727 7D88 2֕7 7222222  77 72 72227 72922  77 72 72277 72 72F2777 72 7FFFDFDFDF DFDFDۭ7H2 77 72 792677 72 728Úɚ77 72 7Z2:;7 7 ~ 22ZF2?ݞ777 72 7FFFDFDFDF DFDFDۭ7ABCDE۟( ֺ 22դ7 72Ŧ7 72E882Ū 7 77 79 # 77 7 7$77 7 7 % 77 7 7Hȫ &ȫ77 7 79FΫ'Ϋ777 7 7FFFDFDFDF DFDFDۭ7Iܬ7 7 H7 7Fǘ)777 7ǘ 7FFFDFDFDF DFDFDۭ7LMNOPQSTVWЦﯴMK7 7 7IDDDزƬfK7 7 7 ֐átK7 77 7 K7 7 ֺ 7 7 ֺ 7 77 77 7ܕF*777 7 7FFFDFDFDF DFDFDۭ7Z[\]^_`abcd7 7IDDDزƬfY7 7 ֐átY7 7 7 7 Y7 7 ֺ 7 77 77 77 7ܕ7 7١Yg7 7Ŵ7 7Ŵ9 . 77 7 7ɹ/77 7ɹ 7ɹ 0 77 7 7H߼ 177 7߼ 79F2777 7 7FFFDFDFDF DFDFDۭ7jkl̼سei7 77 7 iω7 79Ӊ 4Ӊ 77 7 7މ5މ77 7 7 6 77 7 7H 777 7 79F8777 7 7FFFDFDFDF DFDFDۭ7opqr7 7 7 7 n7 7 ֐átnuvwxy777 7 7 ֐át7777 7 7١79Κ7 79v%}~ś777 7% 7 ֐át7777 7% 7١797 7%9v777 7 7 ֐át7ѝם777 7 7١797 7929۬2929%  ~ 99 make_logger  F9<777 79 7FFFDFDFDF DFDFDۭ7F9777 79 7FFFDFDFDF DFDFDۭ7F:=777 7: 7FFFDFDFDF DFDFDۭ7::: > 77 7: 7:::7 7:9F:777 7: 7FFFDFDFDF DFDFDۭ7 jjqq{{I    #     kvs777777IDDDزƬf7 7 7 ֺ  7  7 79  7 7222,,ncVlZy*7ncVl|2ѴNncVlғncVl,ڵWncVl]"`HncVl~Yx.pncVl䖑 XzncVl.ncVlSљ#WncVl7sy[ncVln&fcncVlHa&*]ncVl*/ .ncVlB*Q3!ncVl*}v,ncVl g~{uncVlCͩOncVlcV=|ncVlڌ=0ncVl JQncVll>fncVlUVOZZvncVlPAmQ)ncVl»o=ncVlPӞUncVl(7=ncVl=ZRuncVlaOv0TncVlAByNdncVlk] >JncVliͶ(;ncVl}&n%ncVluHnXzncVlLPMMncVl!ȸIncVl)UncVlpncVlMEIncVl09ncVlG ^ ncVl).c#?ncVlBV/RncVlзiUS\ncVl(]!%bncVl;He.ncVlmlY1{[ncVl+,// 6)/ncVlPVEgwncVlܩ PncVlb'VQ@&ncVl7zJncVlSyncVld5o6ncVl{h~YncVlk\i֨ncVlLTGt<ncVl*eKncVl,IncVlrI|OncVlF;SncVl1@o(QncVl丏UncVl2 7UncVl)yB3 ncVlm?9ncVlSAn[2ncVldA qXXncVljlncVl mQԖncVliDBXncVlz˩pncVl^)ncVl J#OncVlx]`ncVlNevncVl`זncVl^gCncVl/7KncVl|yncVl>#N2ncVl ncVluIA1ncVl֠cf3ncVl1 6^ncVlvQ4JHncVls*ncVl2ޥmCncVli ;ncVl* jQւncVl.q+&ncVl{E5ncVleincVl;6gvncVl"ObytSncVlZuncVlyޮncVlxIޝRncVltsߎncVl^,y{\YncVl oncVl\yzFncVl_HancVl~Ko{ncVl0BncVlz|EOYncVlxncVlD YncVlZ@ncVlCKQIuncVlll_ncVl& Y ncVl8!ncVl\GAGkHncVlcKB\ncVlK]encVlqWA\ncVl E!ncVl9^ yltncVlmv곶$ncVluncVl_QrgncVl#nncVltgSJncVlQ&"ncVl3KʹncVl/f{_·ncVl`FncVl8x^IQncVl@O|ncVl4"rncVl0PncVlM)ncVlgncVlNz06ncVlMJB=ncVl}ccncVl/w)ncVl;wp4ncVl.R5ncVlKncVlR$Y+7ncVlEٿ:ncVlSnncVl> gncVl-v9rncVleJTncVl9gP9ncVläU!%@ncVl)ncVlpQncVl ̇"ncVl;pd?ncVlbwncVllwuuZncVlx@PncVlSF|DncVly%WncVlaNiWncVl mmncVluC}ancVlL[ ncVlRqOncVl{ZLncVl?7.,[ncVlnR3zncVl>f@VncVlORedO8ncVlWp|D6ncVl:PncVl"ncVl$ ncVlԥN)3ncVl: *3ncVlNncVl@ncVlԱܸncVl ncVl0 iJ ncVl6 ncVl.#obncVlCtzvncVl uncVlfBnncVltmincVl}ljncVlFmVncVlV7"ncVlςinncVlḒ:ncVlΫlN2ncVl0=ncVl$ܐDncVl'׌ncVlfQY}ncVljancVlOncVl傻ʮncVlmbncVlcyncVl5g6@GncVlk&FvncVl/`tncVlWYB$ncVl|~AncVlc:r ncVl´g4ncVlFFy'ncVlcncVlPk+ncVlmncVl\VVLMncVl|xXncVl5ՕvwfncVl'ZncVliGl\]ncVlXFncVlDq3wRncVlלFncVlH،.ncVlPU ncVlE\kncVlN!ncVlJqHQEXncVl6֋ncVl.~ncVl@,BncVltO5`3ncVl5S ncVl|3ncVl3<oncVl#ncVl6RoqoncVl/@(> ncVlQT0ncVl2J>XncVl6ncVlBuoH)a,ncVl?LimencVl incVlIHdncVl_j#(pncVl6;_ncVlACj5zxncVl]nϾ|ncVl9lncVl?vѩncVloOsDncVlW 1@ncVlWlͩ+ncVl}#<X7ncVl}'HncVlְ?>ncVl&cncVl MTncVl ?dncVl]T*LncVlMiw ncVlNZdrhncVlnk?5qncVlk>yncVlr;@ncVlPOH*ncVl95ncVlXjr!ncVlHY0(ncVlKm؇ncVle ٠ncVlu$RHncVlhW]gncVl8"/ncVlohPncVlGo\t+ncVlR&rނncVleSݠncVlg6ncVl>ncVl;@ncVln'ncVl&΋ncVlg팿GncVl*pbӦncVl CnzncVlIncVlMOncVl>_S ncVlM.5qncVl ?*5QncVlaҍncVlI&4f?ncVl.=;%ncVlrncVlCq}>ncVl\7{pncVlUkncVlaCVy|ncVlh9JncVlCak56ncVlىr7fncVlL&GcOncVlxncVl";dncVlAiGncVl6+XncVlɰXy!ncVlK-I4+ncVlincVlv͒BN7ncVlr+'ncVl6mncVlo$?c,ncVl s*uncVl#J^ncVlϗ?ncVlĵNncVl m7 ncVl encVllǦhncVljJncVlnH%ncVl uncVlVXSW{ncVl[)'8ncVlLYEncVlH>lѰncVlɥnncVlMF_ncVlUm:%ncVlh IWܝncVl0=./ncVlԼUR]ncVllA`ncVlWjLncVlѭgncVl3VRN©ncVlNHm_{ncVl-f_>ncVlairncVl}JN)ncVl8l`?SncVluO{A ncVlqk7> @ncVl, ncVlFHsZncVlߑ!v"ncVlArncVl@+\ncVldٽVncVlIe*ncVlHjDY?0ncVl>̩fncVlU늘#ncVl)H80ncVl``?ncVl=ҁIncVl'jF"ncVlSFncVlcW46ncVl,"cxUncVlg[3ncVln>=rncVl/LAncVl (vncVl[i;uncVl<ncVlF.ncVl X+ncVlTncVl|o_ncVl3گkncVl9"敷ncVlQIncVlFVJmLncVluncVlj[ncVl筋<5ncVlLvu7[ncVl|UMncVlqWĂncVlfncVl OG@ncVl)P^ncVliڠqncVl5w^<ɀncVlԭ8ncVlWէaH#ncVlncVlXIl\vfncVl++0ncVl_|DncVl&1pncVlKu'PncVlE/;2ncVlwncVl&t:RncVlT ncVlPAncVlz ncVl$*ncVlcaO!ncVl=ncVl_]y 'ncVlHmH8ancVlqyncVlPncVl 3l`ncVlGrncVlD~bncVl:&]ncVlE.ncVlh}E2ncVlF;[ncVlB{SyncVl4`QxncVl(n;!vncVl/WREvhncVl incVle|6 !ncVl_/.ncVl'^ncVll]KB&b+S   |C 7RRJUVXZ\^bbc=cUcmccccd8dddd+eeefgggghqhhikl6lKllllmmmm nn>oorrrMsstottPuvvfwwxxx z{{p|||}~~bAׁ3 r΄ JCXZ)ȍ> 6SHÞ؞$[8¡ ʥ$ħm3gϩ7kӪbʫ2fάTPίOϰOбQ-dҳ ۴I% s1ιI(iG%¿X6- y$EK2s'=& 5Cc.:{uw_!dg#m2iB$'#\#X$$%(3)))*.'/ 2 5#8:;;'=h>6D+l6.u .<N\'%3tnbp XO]R`]5f+b3<ENW`ir{ &/8AJS\enw (08@HPX`hpx %.7@IR[dmv!*3<ENW`ir{R=UVXZ\^vbbbc=cUcmccccd:dddd+eeeeefggggDhhimkkl8lKllllmmmm\n ooqrrrr?sqss2ttu}ubvvtwwxjxezz{3||?}}Q~~VTb Oف%͂I΃5t΄NGEXCZÚ1Ş؞$ޠeb"@ڦz#ATg$7,Sfά>ݮ""$uQdkȴ۴6I%r 8s#Uι3к;}(k־I¿A| y$E=K$25ae Y$|v5g2Uc .,:i@EVd Yg d<mVip:CLU^gpy $-6?HQZclu~&.6>FNV^fnv~#,5>GPYbkt} (1:CLU^gpy c3cKccc{ccccd-dBdddedeeeee+fff^gggghbhhikkk'l@lpllllmsmmmmnzn/ooqq+rrrssXtt9uuuvvKwwx1xzz{Y||e}~w~|*uo[h7mщ6M}PNj 0ߚ,ٛ>͞J-ڣo2^u3_%\ĩ,[ȪR"[ìJAA±C}"Ydzд>oݵ[ϷY͸jHԻ'ļO- ^N 6WrYQvn9|Gea//UEZ.\'^ b-cEc]cuccccd'dcn[&i4zFQ&B5G | ~({Sv!Xc5cMcec}ccccd/dDddd eeee/fffbgggghfhhikkk+lBltllll#mwmmmmn~n3ooqr-rrrss\tt=uuuvvOww x3xz{{]||i}~{~ .yās_;qՉ:O0̋21!ϞO/ܣq7cz8d*^Ʃ.`ʪW']Ŭ/ůFưFDZH$[ɳҴ@tvԷ#^ϸlJٻ)ƼT2`(!(";\w^lx#p;~If41WJ \!0a)`d eBefggZhhiklallm nrn ooqrssHtt)uuxvvww{zz{I||U}}g~~lx!e_K'].n֊p*ٚÛ:zԣi)U *V|LC{ 8 8 :z_͵;ŷOû>ؿ aH=myDP4z}({S"#p##d$`FiFuF$%%%&7&F(G))FF**++;+W+F.1/o//N0t00F1m1F1122/3334x4445:55&8d88:;:;j;;;p<=7==F>>???????^@s@QAGCC$E=FYF; v ^!!"&&!'['''(8-`M++7,,,&-t-Q..156J66697789[999K:TK@,#BBCbccccddd2e f:ff$gggKhhitkk lRlll9mmmcnooqqrxss9ttuuuivvw{wwlzz{:||F}}X~~]iVԂPՃ<ՄN_NJaʚߞ+kģFG m=2lԬ))+krP,?չ/ ɿR9}j5A%knkCpw#Q#P$$(()x))5;!=a>5A+C! ) W C!!"&&&&''<'''(++++,,g,, -W->.n.1555!6)6z667j78888>999.:~@ABBBBeeR@LPadX%eYc~$WdX[;z`@#]##Z$$%%%&7&(4)))*+ +2+W+.1/f//E0k000d111223333e4444155&8[88::';a;;;]<<*===>n>>?????I@i@>A4CCD+FYF3 e M!!"&&'H'''(++$,q,,-a-H.x.1557666&7t788H9998:@ABC;% --a#% --a#  wxywxya#a#%  \#;$%  \#;$ % ;$\#\#\# % ;$\# % ;$\#\#\#RR8ddeggk6llmmrrxׁrLCÞܠ` ئx!R"QۮsOƴ4 S1κiGz3_cW"e0>CT?t ~2 !3CGKO\h| '.6:@OSW[_fjq{ '+2@GVbipt#*18?CJQX_fjqw 0AF]f| #9S_fkp|*5:AFNS[`glty} ).6:BFNVZbfnvz   # + / 7 ? C K S g o }    $ , 4 8 @ H P T \ d z     " 7 < D H P f k s w       % + 1 7 = C I O U [ a g m s y      % , 3 : A H O V ] d k r y  !(/6=DKRY`gnu|$+29@GNU\cjqx !)19A#CA' -<KXg8==477144.11+..&((#%% ""<9>>588255/22,//),,'))$&&!## =:??7<<366033-00*--(**%''"$$!!ncVlܹ3܅o core_intrinsicsfmt_helpers_for_deriveFFncVl3IL Ӊ = ncVl4Y = ncVlEUn>oΫFFncVl̚ nhi% derive_clone_copyncVl}DZ|O  derive_eq ncVl;e=z y ncVlsS'ncVljKbo FFncVlk72z މ ncVl ncVlw8wrPCi% ncVlIɌ a|O  ncVl1cd ncVlg-oyFFncVlliy% ncVlGq8=)ncVl;pA-FyC)ncVlIP&  = ncVl|Z#  ncVl!ʬuZ ncVlBbPoFFncVl*1dѿr = ncVlÌP ncVl=DcO\3/yA'HHncVlz8@_25lypDncVl2,蘕Ɖ6)ncVlU#! ͕C)ncVl9t R;| O  ncVlcR I A'HHncVl_'9A'HHncVl]B㗄|oFFncVl;) ncVl\oFFncVlߥq2i֕% ncVl>֊y = ncVlrk&C)ncVl!,o FFncVl/5&oFFncVl6Ui% ncVl|0W[ ncVl6A'HHncVl!lݕpDncVlhT 2|yO  ncVl 2| )ncVlr9g})ncVl?}&ncVle[)@v| ωO  ncVln*'X,x|O  ncVlsg@BDFH5@fBrFcH?,BgD2F+H>?A,DEG=?ACEGm=F?ACE}G1= ?EA{CKE ACCEF<>@ CD\<]>@BF7<'<M>@BDFHW@BFH%@VBDbFSH)>?BWD"FH=?ADEG=w?ACEG]=6?qACvEmG!=>5AkC;E,G<>@3CD<>@BFL<ODHT ncVl9l$ncVl\A[fKkncVl傻ʮncVl>CncVlUm:%vncVlx@PncVl䖑 XzncVl ocncVl5H9 ncVlp$ncVl;wp4ncVl)H80ncVlRqOncVlHmH8ancVl^sncVlcaO!ncVlT ncVlD YncVläU!%@ncVl]"`HncVlSљ#WncVl_j#(p ncVl(n;!vncVl ?*5QNncVl6+X^ncVlc-ncVls 1D>ncVlI[1lncVle|6 !ncVl m7 jncVl7m:h~ncVl:PncVl3<oncVlڌ=0ncVl2J>XncVlr;@4ncVlqk7> @ncVlE/;2ncVlfBnncVl^gCLncVlK-I4+`ncVlhLhjwncVlb'VQ@&1ncVlz|E+ncVlKu'PncVl@,BncVl乪pncVl: *3ncVl6qtncVluncVlwncVl~Yx.pncVl3KʹūncVlqyncVlqWĂncVl]nϾ|#ncVlE\k ncVlH،. ncVl.ncVl X+ncVlTwncVl!ȸI"ncVlx]`IncVl0&ȬkncVl#nΨncVl ncVlH>lѰsncVlIJncVlNZdrh1ncVlaOv0TncVl'׌ncVliڠqncVluO{ncVln>=rncVluIA1QncVlXFncVlvQ4JHTncVl/7KMncVl\VVLMncVljJmncVlrI|O:ncVlPAmQ)ncVlpQncVlJqHQEXncVl>_S LncVlhW]g<ncVl|xXncVl& Y ʝncVlh IWܝwncVlK]encVl8x^IQncVl_HaencVl,"cxUncVlq[f2rncVlk\i֨6ncVljlCncVlei[ncVlςinncVl mmncVlairncVl`o{vncVl;pd?ncVl6RoqoncVl֘qt;ncVlZu^ncVl?vѩ%ncVlj+ytudُncVlaCVy|VncVl"&R{%ncVl\7{pTncVl䗽~}̠ncVl8!ncVllǦhlncVl@ncVl4`QxncVlWlͩ+(ncVl OG@ncVl{E5ZncVl庎ncVlM)ncVl*eK8ncVlylncVlxIޝR`ncVluC}ancVlMOKncVllwuuZncVl9gP9ncVlSFncVltmincVlAByNdncVlCͩOncVl.=;%QncVl)atncVllA`zncVl篭qncVl2ޥmCVncVl(]!%b+ncVlcncVlWYB$ncVlmncVl <ncVl͞=IEncVlw,Ùz4ncVlLYErncVlk] >JncVl|2ѴNncVl09&ncVlcyncVlk>y3ncVl|jx)ncVlQIncVlNHm_{~ncVlG ^ 'ncVlN! ncVl8"/=ncVlfncVlh}E2ncVlḒ:ncVlQT0ncVlOncVlohP>ncVlÈ|剒lncVl9"敷ncVlзiUS\*ncVl[i;uncVlԭ8ncVl ekncVl7zJ2ncVlm?9@ncVlNevJncVlPVEgw/ncVl PncVl `yLncVl|UMncVl@ncVlLPMM!ncVlmbncVlIHdncVlTncVl'ZncVl/`tncVl|~AncVl incVl*pbӦHncVlu$RH;ncVl+,// 6)/.ncVl C D`ncVlV7"ncVl&b:B&ncVlR&rނ@ncVl> gncVl J#OHncVl]$bMdncVln&fc ncVlHa&*] ncVli߹'" ncVl/@(> ncVlBuoH)a,ncVl_+vjncVl,I9ncVl&΋FncVl0=./xncVl]*ncVl (vncVl++0ncVlnR3zncVl|3ncVlACj5zx"ncVl1 6^SncVl?7.,[ncVl,8㜎ncVl6֋ncVlnk?5q2ncVlI&4f?PncVlfncVlArncVlD~bncVlMEI%ncVlk&FvncVl'jF"ncVl>F;[ncVl=ҁIncVltgSJncVlcKB\ncVlMJB=ncVl3VRN©}ncVlPOH*5ncVl5ORncVl* jQւXncVl_QrgncVl5S ncVl&t:RncVlPU ncVl~Of#ncVl[DncVlXIl\vfncVll]KncVl;He.,ncVl;6gv\ncVlWjL{ncVlFmVncVld5o64ncVl{pjԍncVl.#obncVlXjr!7ncVl) rBZncVl)yB3 ?ncVl{ZLncVlBV/R)ncVl)SncVln'EncVlSQ>gncVl>f@VncVl*/ . ncVlQ&"ΪncVlCtzvncVlɥntncVlh9JWncVl>̩fncVlԥN)3ncVl*f*~ncVlv͒BN7bncVlmv곶$ncVl";d\ncVl2KrzncVl3گkncVlL[ ncVlMF_uncVl#J^gncVldٽVncVlZy*7ncVlUVOZZvncVl6mdncVliͶ(;ncVlSF|DncVlDVxncVl#z}ncVl mQԖDncVlNz06ncVlx[ncVl`זKncVl#ncVl|o_ncVlyޮ_ncVltsߎancVlԼUR]yncVlZ@ncVl<ncVl.R5ncVl0 iJ ncVlSn몽ncVlxӘncVl4"rncVl CnzIncVl%CV3$ߍncVltoncVl)P^ncVlܩ P0ncVli ;WncVl»o=ncVl5g6@GncVl$ ncVlNfy6ncVlSy3ncVl/"lncVlw(% ncVl&c,ncVlBE&?QncVl[)'8qncVl s*ufncVl@+\ncVlHY0(8ncVlDq3wRncVlcW46ncVlc:r ncVl6;_!ncVl?6ncVl;@DncVl>A ncVlsWVB+V ncVlHjDY?0ncVl/LAncVl\GAGkHncVlCKQIuncVl>#N2OncVl.OCĨ|ncVlNncVlB*Q3! ncVlQOR@jncVlVXSW{pncVlPncVl)U#ncVlcV=|ncVlqWA\ncVl8l`?SncVljancVlaҍOncVlCak56XncVl֠cf3RncVl Ãg;̄ncVl}&n%ncVl"ObytS]ncVlncVlGrncVl6 ncVl_]y 'ncVlRhחncVl1@o(Q<ncVlFFy'ncVlלF ncVleSݠAncVl}#<X7)ncVlg[3ncVlM.5qMncVl,yncVl_/.ncVlfQY}ncVlSAn[2AncVl/oJRncVlY0uncVlgncVlR$Y+7ncVlz ncVlىr7fYncVlXgpncVlf ^>OYm%WZh=q 'cW, E 8;(,HKVRNivJ O^?Ay.T["gP}\=&OmQb2R~K 645A\@D*ui,(2,eK(!cVCqI8bbWd ;$ YgyE4*`MB( #kgvx-XOGRFb:dKqw-$Yn9%{K4gy* $xYfS ,3ueN`(t*Thvap9=p`hlHDsfZ4 ^ oSV%6) '-pT2'`0^! xHRn%'Ivh =bTREfSJ@.XZ[u^;;&&tc12*e: 4S$0mA3'21w5$[ LJazsv)TFUfBRs?zm:wcv6JyuM'['W8?f\**'g9 Y LjtSb:kHu5uRok(Y#P8Phyc3i,m%WZh=qY/home/madeline/.cargo/registry/src/index.crates.io-6f17d22bba15001f/log-0.4.20/src/lib.rs \ [8A?#EB@A$"JNN;PL?QQPD S4@J=J#!!##JHO/26*M#7&J VM;7B5PNE':2A,/*U#;&W 1(;8=,'%# cQL+(%9, )1D NPNJPOKN?>"':*,02!=Q-PEQND':*26=aZX  bMdaC XY%d&b ;]dcb")'-79;F:P8A>/>/)_>G8A>UT@1A;Q39:K+(6P (77 25NKU'-D+ . - - . . (*)D7 AD?! $=5)+**++ 7"38.*@K+(8G .;= 25D,. $ LFMDKKMIC%> -1 #$%$ .13-&$.+0 * (;)=,0*.,#1&(3*E?!8 0,#E88 )(D$2X$0%02!/!!5 0]Y/#2)%-%1I/0-1&#.2%*1'!'6 SR((7#0N 6Q! S) DF, EJ. CUF YaD 5N? LZ= 5J! A$V1 1()" ACEE)(!9, )1D >.,#1&4]_/'*-("7!+!!*!$ AF# CL' %*+?IKOEUL4LH$&1.!5#%#5(%""5(%"'Pr "+C2M=@ O/NCK$- 7O`CC+\M8!!!-$-EIGPNL,JG%  ;'8N+0PQHNOMJ4 ;H+!9, )1D *+1"L "E%2(8 AM%5$ &/M:= K;NCG$'X)8 [a &S'''=(/([Y' (=)/)'F&5+ \/PQN1;<0N % P ' O & O & P ' P ' * % , ' + & + & , '  6& %+/--//+/--//0 +.  /)'')))''))0 +.  %##%% )3  57 !9= 432 535 G7G HH $'+))++ )3  #$B&  !$3!95 -0!95 5F./ &><52 +'C., &3<52 ($,&!37<52 $*! 3"$)& 9F9?+ $->A!'#) 4U  /% ) );'$'#$' ڀЪܲğ\/home/madeline/.cargo/registry/src/index.crates.io-6f17d22bba15001f/log-0.4.20/src/macros.rs Kz