From 07f835472b25b0ac763bfc44849f82a620143c4d Mon Sep 17 00:00:00 2001 From: "Documenter.jl" Date: Tue, 23 Apr 2024 16:05:47 +0000 Subject: [PATCH] build based on 9329628 --- previews/PR33/api/index.html | 430 ++++++++++++++++++ previews/PR33/assets/documenter.js | 331 ++++++++++++++ previews/PR33/assets/search.js | 267 +++++++++++ .../PR33/assets/themes/documenter-dark.css | 7 + .../PR33/assets/themes/documenter-light.css | 9 + previews/PR33/assets/themeswap.js | 66 +++ previews/PR33/assets/warner.js | 49 ++ previews/PR33/index.html | 3 + previews/PR33/search/index.html | 2 + previews/PR33/search_index.js | 3 + previews/PR33/siteinfo.js | 1 + previews/PR33/terminology/index.html | 41 ++ 12 files changed, 1209 insertions(+) create mode 100644 previews/PR33/api/index.html create mode 100644 previews/PR33/assets/documenter.js create mode 100644 previews/PR33/assets/search.js create mode 100644 previews/PR33/assets/themes/documenter-dark.css create mode 100644 previews/PR33/assets/themes/documenter-light.css create mode 100644 previews/PR33/assets/themeswap.js create mode 100644 previews/PR33/assets/warner.js create mode 100644 previews/PR33/index.html create mode 100644 previews/PR33/search/index.html create mode 100644 previews/PR33/search_index.js create mode 100644 previews/PR33/siteinfo.js create mode 100644 previews/PR33/terminology/index.html diff --git a/previews/PR33/api/index.html b/previews/PR33/api/index.html new file mode 100644 index 0000000..3b5b577 --- /dev/null +++ b/previews/PR33/api/index.html @@ -0,0 +1,430 @@ + +API · HELICS.jl

API

This is the Julia API for the HELICS library.

julia> using HELICS; const h = HELICS;
julia> h.helicsGetVersion()"3.5.2 (2024-04-08)"

Enum

HELICS.HelicsCoreFlagsType

Enumeration of additional core flags

  • HELICS_FLAG_DELAY_INIT_ENTRY: used to delay a core from entering initialization mode even if it would otherwise be ready (45)
  • HELICS_FLAG_ENABLE_INIT_ENTRY: used to clear the HELICSDELAYINIT_ENTRY flag in cores (47)
  • HELICS_FLAG_IGNORE: ignored flag used to test some code paths (999)
source
HELICS.HelicsCoreTypesType

Pick a core type depending on compile configuration

  • HELICS_CORE_TYPE_DEFAULT: a default core type that will default to something available (0)
  • HELICS_CORE_TYPE_ZMQ: use the Zero MQ networking protocol (1)
  • HELICS_CORE_TYPE_MPI: use MPI for operation on a parallel cluster (2)
  • HELICS_CORE_TYPE_TEST: use the Test core if all federates are in the same process (3)
  • HELICS_CORE_TYPE_INTERPROCESS: interprocess uses memory mapped files to transfer data (for use when all federates are on the same machine (4)
  • HELICS_CORE_TYPE_IPC: interprocess uses memory mapped files to transfer data (for use when all federates are on the same machine ipc is the same as HELICS_CORE_TYPE_INTERPROCESS (5)
  • HELICS_CORE_TYPE_TCP: use a generic TCP protocol message stream to send messages (6)
  • HELICS_CORE_TYPE_UDP: use UDP packets to send the data (7)
  • HELICS_CORE_TYPE_ZMQ_SS: single socket version of ZMQ core usually for high fed count on the same system (10)
  • HELICS_CORE_TYPE_NNG: for using the nanomsg communications (9)
  • HELICS_CORE_TYPE_TCP_SS: a single socket version of the TCP core for more easily handling firewalls (11)
  • HELICS_CORE_TYPE_HTTP: a core type using http for communication (12)
  • HELICS_CORE_TYPE_WEBSOCKET: a core using websockets for communication (14)
  • HELICS_CORE_TYPE_INPROC: an in process core type for handling communications in shared memory it is pretty similar to the test core but stripped from the "test" components (18)
  • HELICS_CORE_TYPE_NULL: an explicit core type that is recognized but explicitly doesn't exist, for testing and a few other assorted reasons (66)
  • HELICS_CORE_TYPE_EMPTY: an explicit core type exists but does nothing but return empty values or sink calls (77)
source
HELICS.HelicsDataTypesType

Enumeration of allowable data types for publications and inputs

  • HELICS_DATA_TYPE_UNKNOWN: unknown type (-1)
  • HELICS_DATA_TYPE_STRING: a sequence of characters (0)
  • HELICS_DATA_TYPE_DOUBLE: a double precision floating point number (1)
  • HELICS_DATA_TYPE_INT: a 64 bit integer (2)
  • HELICS_DATA_TYPE_COMPLEX: a pair of doubles representing a complex number (3)
  • HELICS_DATA_TYPE_VECTOR: an array of doubles (4)
  • HELICS_DATA_TYPE_COMPLEX_VECTOR: a complex vector object (5)
  • HELICS_DATA_TYPE_NAMED_POINT: a named point consisting of a string and a double (6)
  • HELICS_DATA_TYPE_BOOLEAN: a boolean data type (7)
  • HELICS_DATA_TYPE_TIME: time data type (8)
  • HELICS_DATA_TYPE_CHAR: data type for a single character (9)
  • HELICS_DATA_TYPE_RAW: raw data type (25)
  • HELICS_DATA_TYPE_JSON: type converts to a valid json string (30)
  • HELICS_DATA_TYPE_MULTI: the data type can change (33)
  • HELICS_DATA_TYPE_ANY: open type that can be anything (25262)
source
HELICS.HelicsErrorTypesType

Enumeration of return values from the C interface functions

  • HELICS_ERROR_FATAL: global fatal error for federation (-404)
  • HELICS_ERROR_EXTERNAL_TYPE: an unknown non-helics error was produced (-203)
  • HELICS_ERROR_OTHER: the function produced a helics error of some other type (-101)
  • HELICS_USER_EXCEPTION: user code generated exception (-29)
  • HELICS_ERROR_INSUFFICIENT_SPACE: insufficient space is available to store requested data (-18)
  • HELICS_ERROR_EXECUTION_FAILURE: the function execution has failed (-14)
  • HELICS_ERROR_INVALID_FUNCTION_CALL: the call made was invalid in the present state of the calling object (-10)
  • HELICS_ERROR_INVALID_STATE_TRANSITION: error issued when an invalid state transition occurred (-9)
  • HELICS_WARNING: the function issued a warning of some kind (-8)
  • HELICS_ERROR_SYSTEM_FAILURE: the federate has terminated unexpectedly and the call cannot be completed (-6)
  • HELICS_ERROR_DISCARD: the input was discarded and not used for some reason (-5)
  • HELICS_ERROR_INVALID_ARGUMENT: the parameter passed was invalid and unable to be used (-4)
  • HELICS_ERROR_INVALID_OBJECT: indicator that the object used was not a valid object (-3)
  • HELICS_ERROR_CONNECTION_FAILURE: the operation to connect has failed (-2)
  • HELICS_ERROR_REGISTRATION_FAILURE: registration has failed (-1)
  • HELICS_OK: the function executed successfully (0)
  • HELICS_ERROR_USER_ABORT: user system abort to match typical SIGINT value (130)
  • HELICS_ERROR_TERMINATED: force termination to match typical SIGKILL value (143)
source
HELICS.HelicsFederateFlagsType

Enumeration of possible federate flags

  • HELICS_FLAG_OBSERVER: flag indicating that a federate is observe only (0)
  • HELICS_FLAG_UNINTERRUPTIBLE: flag indicating that a federate can only return requested times (1)
  • HELICS_FLAG_INTERRUPTIBLE: flag indicating that a federate can be interrupted (2)
  • HELICS_FLAG_SOURCE_ONLY: flag indicating that a federate/interface is a signal generator only (4)
  • HELICS_FLAG_ONLY_TRANSMIT_ON_CHANGE: flag indicating a federate/interface should only transmit values if they have changed(binary equivalence) (6)
  • HELICS_FLAG_ONLY_UPDATE_ON_CHANGE: flag indicating a federate/interface should only trigger an update if a value has changed (binary equivalence) (8)
  • HELICS_FLAG_WAIT_FOR_CURRENT_TIME_UPDATE: flag indicating a federate should only grant time if all other federates have already passed the requested time (10)
  • HELICS_FLAG_RESTRICTIVE_TIME_POLICY: flag indicating a federate should operate on a restrictive time policy, which disallows some 2nd order time evaluation and can be useful for certain types of dependency cycles and update patterns, but generally shouldn't be used as it can lead to some very slow update conditions (11)
  • HELICS_FLAG_ROLLBACK: flag indicating that a federate has rollback capability (12)
  • HELICS_FLAG_FORWARD_COMPUTE: flag indicating that a federate performs forward computation and does internal rollback (14)
  • HELICS_FLAG_REALTIME: flag indicating that a federate needs to run in real time (16)
  • HELICS_FLAG_SINGLE_THREAD_FEDERATE: flag indicating that the federate will only interact on a single thread (27)
  • HELICS_FLAG_MULTI_THREAD_CORE: flag indicating use of a thread safe core (28)
  • HELICS_FLAG_SINGLE_THREAD_CORE: flag indicating use of a single threaded core (29)
  • HELICS_FLAG_IGNORE_TIME_MISMATCH_WARNINGS: used to not display warnings on mismatched requested times (67)
  • HELICS_FLAG_STRICT_CONFIG_CHECKING: specify that checking on configuration files should be strict and throw and error on any invalid values (75)
  • HELICS_FLAG_USE_JSON_SERIALIZATION: specify that the federate should use json serialization for all data types (79)
  • HELICS_FLAG_EVENT_TRIGGERED: specify that the federate is event triggered-meaning (all/most) events are triggered by incoming events (81)
  • HELICS_FLAG_LOCAL_PROFILING_CAPTURE: specify that federate should capture the profiling data to the local federate logging system (96)
  • HELICS_FLAG_CALLBACK_FEDERATE: specify that the federate is a callback based federate using callbacks for execution (103)
  • HELICS_FLAG_AUTOMATED_TIME_REQUEST: specify that a federate should automatically call timeRequest on completion of current request (106)
source
HELICS.HelicsFederateStateType

Enumeration of possible federate states

  • HELICS_STATE_UNKNOWN: used when no information is available about the federate state (-1)
  • HELICS_STATE_STARTUP: when created the federate is in startup state (0)
  • HELICS_STATE_INITIALIZATION: entered after the enterInitializingMode call has returned (1)
  • HELICS_STATE_EXECUTION: entered after the enterExectuationState call has returned (2)
  • HELICS_STATE_FINALIZE: the federate has finished executing normally final values may be retrieved (3)
  • HELICS_STATE_ERROR: error state no core communication is possible but values can be retrieved the following states are for asynchronous operations (4)
  • HELICS_STATE_PENDING_INIT: indicator that the federate is pending entry to initialization state (5)
  • HELICS_STATE_PENDING_EXEC: state pending EnterExecution State (6)
  • HELICS_STATE_PENDING_TIME: state that the federate is pending a timeRequest (7)
  • HELICS_STATE_PENDING_ITERATIVE_TIME: state that the federate is pending an iterative time request (8)
  • HELICS_STATE_PENDING_FINALIZE: state that the federate is pending a finalize request (9)
  • HELICS_STATE_FINISHED: state that the federate is finished simulating but still connected (10)
source
HELICS.HelicsFilterTypesType

Enumeration of the predefined filter types

  • HELICS_FILTER_TYPE_CUSTOM: a custom filter type that executes a user defined callback (0)
  • HELICS_FILTER_TYPE_DELAY: a filter type that executes a fixed delay on a message (1)
  • HELICS_FILTER_TYPE_RANDOM_DELAY: a filter type that executes a random delay on the messages (2)
  • HELICS_FILTER_TYPE_RANDOM_DROP: a filter type that randomly drops messages (3)
  • HELICS_FILTER_TYPE_REROUTE: a filter type that reroutes a message to a different destination than originally specified (4)
  • HELICS_FILTER_TYPE_CLONE: a filter type that duplicates a message and sends the copy to a different destination (5)
  • HELICS_FILTER_TYPE_FIREWALL: a customizable filter type that can perform different actions on a message based on firewall like rules (6)
source
HELICS.HelicsFlagsType

enumeration of general flags that can be used in federates/cores/brokers

  • HELICS_FLAG_SLOW_RESPONDING: flag specifying that a federate, core, or broker may be slow to respond to pings. If the federate goes offline there is no good way to detect it so use with caution (29)
  • HELICS_FLAG_DEBUGGING: flag specifying the federate/core/broker is operating in a user debug mode so deadlock timers and timeout are disabled this flag is a combination of slow_responding and disabling of some timeouts (31)
  • HELICS_FLAG_TERMINATE_ON_ERROR: specify that a federate error should terminate the federation (72)
  • HELICS_FLAG_FORCE_LOGGING_FLUSH: specify that the log files should be flushed on every log message (88)
  • HELICS_FLAG_DUMPLOG: specify that a full log should be dumped into a file* (89)
  • HELICS_FLAG_PROFILING: specify that helics should capture profiling data (93)
  • HELICS_FLAG_PROFILING_MARKER: flag trigger for generating a profiling marker (95)
  • HELICS_FLAG_ALLOW_REMOTE_CONTROL: specify that the federate/core/broker should allow some remote control operations such as finalize (109)
  • HELICS_FLAG_DISABLE_REMOTE_CONTROL: specify that the federate/core/broker should NOT allow some remote control operations such as finalize (110)
source
HELICS.HelicsHandleOptionsType

Enumeration of options that apply to handles

  • HELICS_HANDLE_OPTION_CONNECTION_REQUIRED: specify that a connection is required for an interface and will generate an error if not available (397)
  • HELICS_HANDLE_OPTION_CONNECTION_OPTIONAL: specify that a connection is NOT required for an interface and will only be made if available no warning will be issues if not available (402)
  • HELICS_HANDLE_OPTION_SINGLE_CONNECTION_ONLY: specify that only a single connection is allowed for an interface (407)
  • HELICS_HANDLE_OPTION_MULTIPLE_CONNECTIONS_ALLOWED: specify that multiple connections are allowed for an interface (409)
  • HELICS_HANDLE_OPTION_BUFFER_DATA: specify that the last data should be buffered and send on subscriptions after init (411)
  • HELICS_HANDLE_OPTION_STRICT_TYPE_CHECKING: specify that the types should be checked strictly for pub/sub and filters (414)
  • HELICS_HANDLE_OPTION_RECEIVE_ONLY: specify that the handle is receive only (422)
  • HELICS_HANDLE_OPTION_SOURCE_ONLY: specify that the handle is source only (423)
  • HELICS_HANDLE_OPTION_IGNORE_UNIT_MISMATCH: specify that the mismatching units should be ignored (447)
  • HELICS_HANDLE_OPTION_ONLY_TRANSMIT_ON_CHANGE: specify that an interface will only transmit on change (only applicable to publications) (452)
  • HELICS_HANDLE_OPTION_ONLY_UPDATE_ON_CHANGE: specify that an interface will only update if the value has actually changed (454)
  • HELICS_HANDLE_OPTION_IGNORE_INTERRUPTS: specify that an interface does not participate in determining time interrupts (475)
  • HELICS_HANDLE_OPTION_MULTI_INPUT_HANDLING_METHOD: specify the multi-input processing method for inputs (507)
  • HELICS_HANDLE_OPTION_INPUT_PRIORITY_LOCATION: specify the source index with the highest priority (510)
  • HELICS_HANDLE_OPTION_CLEAR_PRIORITY_LIST: specify that the priority list should be cleared or question if it is cleared (512)
  • HELICS_HANDLE_OPTION_CONNECTIONS: specify the required number of connections or get the actual number of connections (522)
  • HELICS_HANDLE_OPTION_TIME_RESTRICTED: specify that the interface only sends or receives data at specified intervals (557)
source
HELICS.HelicsIterationRequestType

Enumeration of the different iteration results

  • HELICS_ITERATION_REQUEST_NO_ITERATION: No iteration is requested (0)
  • HELICS_ITERATION_REQUEST_FORCE_ITERATION: Force iteration return when able (1)
  • HELICS_ITERATION_REQUEST_ITERATE_IF_NEEDED: Only return an iteration if necessary (2)
  • HELICS_ITERATION_REQUEST_HALT_OPERATIONS: Halt the federate (5)
  • HELICS_ITERATION_REQUEST_ERROR: Indicate there was an error (7)
source
HELICS.HelicsIterationResultType

Enumeration of possible return values from an iterative time request

  • HELICS_ITERATION_RESULT_NEXT_STEP: the iterations have progressed to the next time (0)
  • HELICS_ITERATION_RESULT_ERROR: there was an error (1)
  • HELICS_ITERATION_RESULT_HALTED: the federation has halted (2)
  • HELICS_ITERATION_RESULT_ITERATING: the federate is iterating at current time (3)
source
HELICS.HelicsLogLevelsType

Log level definitions

  • HELICS_LOG_LEVEL_DUMPLOG: log level for dumping log messages (-10)
  • HELICS_LOG_LEVEL_NO_PRINT: don't print anything except a few catastrophic errors (-4)
  • HELICS_LOG_LEVEL_ERROR: only print error level indicators (0)
  • HELICS_LOG_LEVEL_PROFILING: profiling log level (2)
  • HELICS_LOG_LEVEL_WARNING: only print warnings and errors (3)
  • HELICS_LOG_LEVEL_SUMMARY: warning errors and summary level information (6)
  • HELICS_LOG_LEVEL_CONNECTIONS: summary+ notices about federate and broker connections +messages about network connections (9)
  • HELICS_LOG_LEVEL_INTERFACES: connections+ interface definitions (12)
  • HELICS_LOG_LEVEL_TIMING: interfaces + timing message (15)
  • HELICS_LOG_LEVEL_DATA: timing+ data transfer notices (18)
  • HELICS_LOG_LEVEL_DEBUG: data+ additional debug message (21)
  • HELICS_LOG_LEVEL_TRACE: all internal messages (24)
source
HELICS.HelicsMultiInputModesType

enumeration of the multi_input operations

  • HELICS_MULTI_INPUT_NO_OP: time and priority order the inputs from the core library (0)
  • HELICS_MULTI_INPUT_VECTORIZE_OPERATION: vectorize the inputs either double vector or string vector (1)
  • HELICS_MULTI_INPUT_AND_OPERATION: all inputs are assumed to be boolean and all must be true to return true (2)
  • HELICS_MULTI_INPUT_OR_OPERATION: all inputs are assumed to be boolean and at least one must be true to return true (3)
  • HELICS_MULTI_INPUT_SUM_OPERATION: sum all the inputs (4)
  • HELICS_MULTI_INPUT_DIFF_OPERATION: do a difference operation on the inputs, first-sum(rest) for double input, vector diff for vector input (5)
  • HELICS_MULTI_INPUT_MAX_OPERATION: find the max of the inputs (6)
  • HELICS_MULTI_INPUT_MIN_OPERATION: find the min of the inputs (7)
  • HELICS_MULTI_INPUT_AVERAGE_OPERATION: take the average of the inputs (8)
source
HELICS.HelicsPropertiesType

Enumeration of properties that apply to federates

  • HELICS_PROPERTY_TIME_DELTA: the property controlling the minimum time delta for a federate (137)
  • HELICS_PROPERTY_TIME_PERIOD: the property controlling the period for a federate (140)
  • HELICS_PROPERTY_TIME_OFFSET: the property controlling time offset for the period of federate (141)
  • HELICS_PROPERTY_TIME_RT_LAG: the property controlling real time lag for a federate the max time a federate can lag real time (143)
  • HELICS_PROPERTY_TIME_RT_LEAD: the property controlling real time lead for a federate the max time a federate can be ahead of real time (144)
  • HELICS_PROPERTY_TIME_RT_TOLERANCE: the property controlling real time tolerance for a federate sets both HELICS_PROPERTY_RT_LAG and HELICS_PROPERTY_RT_LEAD (145)
  • HELICS_PROPERTY_TIME_INPUT_DELAY: the property controlling input delay for a federate (148)
  • HELICS_PROPERTY_TIME_OUTPUT_DELAY: the property controlling output delay for a federate (150)
  • HELICS_PROPERTY_TIME_STOPTIME: specify the maximum time of a federate (152)
  • HELICS_PROPERTY_TIME_GRANT_TIMEOUT: the property specifying a timeout to trigger actions if the time for granting exceeds a certain threshold (161)
  • HELICS_PROPERTY_INT_CURRENT_ITERATION: read only property getting the current iteration count (258)
  • HELICS_PROPERTY_INT_MAX_ITERATIONS: integer property controlling the maximum number of iterations in a federate (259)
  • HELICS_PROPERTY_INT_LOG_LEVEL: integer property controlling the log level in a federate see HELICS_LOG_LEVELS (271)
  • HELICS_PROPERTY_INT_FILE_LOG_LEVEL: integer property controlling the log level for file logging in a federate see HELICS_LOG_LEVELS (272)
  • HELICS_PROPERTY_INT_CONSOLE_LOG_LEVEL: integer property controlling the log level for file logging in a federate see HELICS_LOG_LEVELS (274)
  • HELICS_PROPERTY_INT_LOG_BUFFER: integer property controlling the size of the log buffer (276)
  • HELICS_PROPERTY_INT_INDEX_GROUP: integer property specifying an index group (282)
source
HELICS.HelicsSequencingModesType

enumeration of sequencing modes for queries and commands fast is the default, meaning the query travels along priority channels and takes precedence of over existing messages; ordered means it follows normal priority patterns and will be ordered along with existing messages

  • HELICS_SEQUENCING_MODE_FAST: sequencing mode to operate on priority channels (0)
  • HELICS_SEQUENCING_MODE_ORDERED: sequencing mode to operate on the normal channels (1)
  • HELICS_SEQUENCING_MODE_DEFAULT: select the default channel (2)
source
HELICS.HelicsTranslatorTypesType

enumeration of the predefined translator types

  • HELICS_TRANSLATOR_TYPE_CUSTOM: a custom filter type that executes a user defined callback (0)
  • HELICS_TRANSLATOR_TYPE_JSON: a translator type that converts to and from JSON (11)
  • HELICS_TRANSLATOR_TYPE_BINARY: a translator type that just encodes the message again in binary (12)
source

Functions

  1. Broker
  2. Core
  3. Endpoint
  4. FederateInfo
  5. Federate
  6. Filter
  7. Input
  8. Message
  9. Publication
  10. Query

Broker

HELICS.helicsBrokerAddAliasMethod
helicsBrokerAddAlias(broker::HELICS.Broker, interfaceName::String, alias::String)
+

create an alias for an interface

Arguments

  • broker: the Broker to us to set the alias
  • interfaceName: the current name of an interface
  • alias: the additional name to use for a given interface
source
HELICS.helicsBrokerAddDestinationFilterToEndpointMethod
helicsBrokerAddDestinationFilterToEndpoint(broker::HELICS.Broker, filter::String, endpoint::String)
+

Link a named filter to a destination endpoint

Arguments

  • broker the Broker to generate the connection from
  • filter the name of the Filter (cannot be NULL)
  • endpoint the name of the Endpoint to filter the data going to (cannot be NULL)
source
HELICS.helicsBrokerAddSourceFilterToEndpointMethod
helicsBrokerAddSourceFilterToEndpoint(broker::HELICS.Broker, filter::String, endpoint::String)
+

Link a named filter to a source endpoint

Arguments

  • broker the Broker to generate the connection from
  • filter the name of the Filter (cannot be NULL)
  • endpoint the name of the Endpoint to filter the data from (cannot be NULL)
source
HELICS.helicsBrokerCloneMethod
helicsBrokerClone(broker::HELICS.Broker) -> HELICS.Broker
+

Create a new reference to an existing broker

this will create a new broker object that references the existing broker it must be freed as well

Arguments

Returns

  • a new reference to the same broker
source
HELICS.helicsBrokerDataLinkMethod
helicsBrokerDataLink(broker::HELICS.Broker, source::String, target::String)
+

Link a named publication and named input using a broker

Arguments

  • broker: the Broker to generate the connection from
  • source: the name of the Publication (cannot be NULL)
  • target: the name of the target to send the Publication data (cannot be NULL)
source
HELICS.helicsBrokerGetAddressMethod
helicsBrokerGetAddress(broker::HELICS.Broker) -> String
+

Get the network address associated with a broker

Arguments

Returns

  • a string with the network address of the Broker
source
HELICS.helicsBrokerGlobalErrorMethod
helicsBrokerGlobalError(broker::HELICS.Broker, errorCode::Int64, errorString::String)
+

Generate a global error through a broker. This will terminate the federation.

Arguments

  • broker: the Broker to generate the global error on.
  • errorCode: the integer error code to associate with the global error.
  • errorString: an error message to associate withthe global error.
source
HELICS.helicsBrokerIsConnectedMethod
helicsBrokerIsConnected(broker::HELICS.Broker) -> Bool
+

Check if a broker is connected. A connected broker implies is attached to cores or cores could reach out to communicate. return 0 if not connected , something else if it is connected.

source
HELICS.helicsBrokerMakeConnectionsMethod
helicsBrokerMakeConnections(broker::HELICS.Broker, file::String)
+

Load a file containing connection information

Arguments

  • broker: the Broker to generate the connections from
  • file: A JSON or TOML file containing connection information
source
HELICS.helicsBrokerSendCommandMethod
helicsBrokerSendCommand(broker::HELICS.Broker, target::String, command::String)
+

Send a command to another helics object though a broker using asynchronous(fast) operations.

Arguments

  • broker: The Broker to set the command through
  • target: The name of the object to send the command to
  • command: the command to send
source
HELICS.helicsBrokerSendOrderedCommandMethod
helicsBrokerSendOrderedCommand(broker::HELICS.Broker, target::String, command::String)
+

Send a command to another helics object through a broker using ordered sequencing.

Arguments

  • broker: The Broker to set the command through
  • target: The name of the object to send the command to
  • command: the command to send
source
HELICS.helicsBrokerSetGlobalMethod
helicsBrokerSetGlobal(broker::HELICS.Broker, valueName::String, value::String)
+

Set a federation global value

this overwrites any previous value for this name

Arguments

  • broker: the Broker to set the global through
  • valueName: the name of the global to set
  • value: the value of the global
source
HELICS.helicsBrokerSetLogFileMethod
helicsBrokerSetLogFile(broker::HELICS.Broker, logFileName::String)
+

Set a the log file on a broker

Arguments

  • broker: the Broker to set the global through
  • logFileName: The name of the file to log to
source
HELICS.helicsBrokerSetLoggingCallbackMethod
helicsBrokerSetLoggingCallback(broker::HELICS.Broker, logger::Ptr{Nothing}, userdata)
+

Set the logging callback to a broker

Add a logging callback function for the C The logging callback will be called when a message flows into a broker from the core or from a broker

Arguments

  • broker: the Broker object in which to create a Subscription must have been create with helicsCreateValueFederate or helicsCreateCombinationFederate
  • logger: a callback with signature void(int, const char *, const char *, void *); the function arguments are loglevel, an identifier, and a message string, and a pointer to user data
  • userdata: a point to user data that is passed to the function when executing
source
HELICS.helicsBrokerSetTimeBarrierMethod
helicsBrokerSetTimeBarrier(broker::HELICS.Broker, barrierTime::Union{Float64, Int64})
+

Set a broker time barrier.

Arguments

  • broker: the Broker to set the time barrier for
  • barrierTime: The time to se the barrier at
source
HELICS.helicsBrokerWaitForDisconnectMethod
helicsBrokerWaitForDisconnect(broker::HELICS.Broker, msToWait::Int64) -> Bool
+

Wait for the Broker to disconnect

Arguments

  • broker: the Broker to wait for
  • msToWait: the time out in millisecond (<0 for infinite timeout)

Returns

  • true if the disconnect was successful, false if there was a timeout
source

Core

HELICS.helicsCoreAddAliasMethod
helicsCoreAddAlias(core::HELICS.Core, interfaceName::String, alias::String)
+

create an alias for an interface

Arguments

  • core: the Core to us to set the alias
  • interfaceName: the current name of an interface
  • alias: the additional name to use for a given interface
source
HELICS.helicsCoreAddSourceFilterToEndpointMethod
helicsCoreAddSourceFilterToEndpoint(core::HELICS.Core, filter::String, endpoint::String)
+

Link a named filter to a source endpoint

Arguments

  • core: the core to generate the connection from
  • filter: the name of the Filter (cannot be NULL)
  • endpoint: the name of the Endpoint to filter the data from (cannot be NULL)
source
HELICS.helicsCoreCloneMethod
helicsCoreClone(core::HELICS.Core) -> HELICS.Core
+

Create a new reference to an existing core

this will create a new broker object that references the existing broker it must be freed as well

Arguments

  • core: an existing Core

Returns

  • a new reference to the same Core
source
HELICS.helicsCoreConnectMethod
helicsCoreConnect(core::HELICS.Core)
+

Connect a core to the federate based on current configuration

Arguments

  • core: the core object to enable init values for
source
HELICS.helicsCoreDataLinkMethod
helicsCoreDataLink(core::HELICS.Core, source::String, target::String)
+

Link a named publication and named input using a core

Arguments

  • core: the core to generate the connection from
  • source: the name of the Publication (cannot be NULL)
  • target: the named of the target to send the Publication data (cannot be NULL)
source
HELICS.helicsCoreDisconnectMethod
helicsCoreDisconnect(core::HELICS.Core)
+

Get an identifier for the core

Arguments

  • core: the core to query

Returns

  • a void enumeration indicating any error condition
source
HELICS.helicsCoreGetAddressMethod
helicsCoreGetAddress(core::HELICS.Core) -> String
+

Get the network address associated with a core

Arguments

  • core: The core to query

Returns

  • a string with the network address of the Broker
source
HELICS.helicsCoreGetIdentifierMethod
helicsCoreGetIdentifier(core::HELICS.Core) -> String
+

Get an identifier for the core

Arguments

  • core: the core to query

Returns

  • a string with the identifier of the core
source
HELICS.helicsCoreGlobalErrorMethod
helicsCoreGlobalError(core::HELICS.Core, errorCode::Int64, errorString::String)
+

Generate a global error through a core. This will terminate the federation.

Arguments

  • core: the Core to generate the global error on.
  • errorCode: the integer error code to associate with the global error.
  • errorString: an error message to associate withthe global error.
source
HELICS.helicsCoreIsConnectedMethod
helicsCoreIsConnected(core::HELICS.Core) -> Bool
+

Check if a core is connected. A connected core implies is attached to federate or federates could be attached to it.

Returns

  • false if not connected, true if it is connected
source
HELICS.helicsCoreMakeConnectionsMethod
helicsCoreMakeConnections(core::HELICS.Core, file::String)
+

Load a file containing connection information

Arguments

  • core: The core to generate the connections from
  • file: A JSON or TOML file containing connection information
source
HELICS.helicsCoreRegisterCloningFilterMethod
helicsCoreRegisterCloningFilter(core::HELICS.Core, name::String) -> HELICS.Filter
+

Create a cloning Filter on the specified core

Cloning filters copy a message and send it to multiple locations source and destination can be added through other functions

Arguments

  • core: the core to register through
  • name: the name of the Filter (can be NULL)

Returns

source
HELICS.helicsCoreRegisterFilterMethod
helicsCoreRegisterFilter(core::HELICS.Core, kind::Union{Int64, HELICS.Lib.HelicsFilterTypes}, name::String) -> HELICS.Filter
+

Create a source Filter on the specified core

Filters can be created through a Federate or a core , linking through a federate allows a few extra features of name matching to function on the Federate interface but otherwise equivalent behavior

Arguments

  • core the core to register through
  • type the type of filter to create HelicsFilterTypes
  • name the name of the Filter (can be NULL)

Returns

source
HELICS.helicsCoreRegisterTranslatorMethod
helicsCoreRegisterTranslator(core::HELICS.Core, type::Int64, name::String)
+

Create a Translator on the specified core.

Translators can be created through a federate or a core. Linking through a federate allows a few extra features of name matching to function on the federate interface but otherwise have equivalent behavior.

Arguments

  • core: the Core to register through.
  • type: The type of translator to create /ref HelicsTranslatorTypes
  • name: The name of the translator, it can be null

Returns

source
HELICS.helicsCoreSendCommandMethod
helicsCoreSendCommand(core::HELICS.Core, target::String, command::String)
+

Send a command to another helics object though a core using asynchronous(fast) operations.

Arguments

  • core: The Core to set the command through
  • target: The name of the object to send the command to
  • command: the command to send
source
HELICS.helicsCoreSendOrderedCommandMethod
helicsCoreSendOrderedCommand(core::HELICS.Core, target::String, command::String)
+

Send a command to another helics object though a core using ordered operations.

Arguments

  • core: The Core to set the command through
  • target: The name of the object to send the command to
  • command: the command to send
source
HELICS.helicsCoreSetGlobalMethod
helicsCoreSetGlobal(core::HELICS.Core, valueName::String, value::String)
+

Set a global value in a core

this overwrites any previous value for this name

Arguments

  • core: the core to set the global through
  • valueName: the name of the global to set
  • value: the value of the global
source
HELICS.helicsCoreSetLogFileMethod
helicsCoreSetLogFile(core::HELICS.Core, logFileName::String)
+

Set a the log file on a core

Arguments

  • core: The core to set the global through
  • logFileName: The name of the file to log to
source
HELICS.helicsCoreSetLoggingCallbackMethod
helicsCoreSetLoggingCallback(core::HELICS.Core, logger::Ptr{Nothing}, userdata)
+

Set the logging callback for a core

Add a logging callback function for the C The logging callback will be called when a message flows into a core from the core or from a broker

Arguments

  • core: the core object in which to create a Subscription must have been create with helicsCreateValueFederate or helicsCreateCombinationFederate
  • logger: a callback with signature void(int, const char *, const char *, void *); the function arguments are loglevel, an identifier, and a message string
  • userdata: a point to user data that is passed to the function when executing
source
HELICS.helicsCoreSetReadyToInitMethod
helicsCoreSetReadyToInit(core::HELICS.Core)
+

Set the core to ready for init

this function is used for cores that have filters but no federates so there needs to be a direct signal to the core to trigger the federation initialization

Arguments

  • core: the core object to enable init values for
source
HELICS.helicsCoreWaitForDisconnectMethod
helicsCoreWaitForDisconnect(core::HELICS.Core, msWait::Int64) -> Int32
+

Wait for the core to disconnect

Arguments

  • core: The core to wait for
  • msToWait: The time out in millisecond (<0 for infinite timeout)

Returns

true if the disconnect was successful, false if there was a timeout

source

Endpoint

HELICS.helicsEndpointAddDestinationTargetMethod
helicsEndpointAddDestinationTarget(endpoint::HELICS.Endpoint, targetEndpoint::String)
+

add a destination target to an endpoint, Specifying an endpoint to send undirected messages to

  • endpoint: The Endpoint to modify
  • targetEndpoint: the name of the endpoint to send messages to
source
HELICS.helicsEndpointAddSourceTargetMethod
helicsEndpointAddSourceTarget(endpoint::HELICS.Endpoint, targetEndpoint::String)
+

add a source target to an endpoint, Specifying an endpoint to receive undirected messages from

  • endpoint: The Endpoint to modify
  • targetEndpoint: the endpoint name to get messages from
source
HELICS.helicsEndpointCreateMessageMethod
helicsEndpointCreateMessage(endpoint::HELICS.Endpoint) -> HELICS.Message
+

Create a new empty message object.

The message is empty and isValid will return false since there is no data associated with the message yet.

Arguments

  • endpoint: The identifier for the Endpoint

Returns

source
HELICS.helicsEndpointGetInfoMethod
helicsEndpointGetInfo(endpoint::HELICS.Endpoint) -> String
+

Get the data in the info field of an filter

Arguments

Returns

  • a string with the info field string
source
HELICS.helicsEndpointGetTagMethod
helicsEndpointGetTag(endpoint::HELICS.Endpoint, tagName::String) -> String
+

Get the data in a specified tag of an endpoint

Arguments

  • endpoint: The Endpoint to query
  • tagName: The name of the tag

Returns

  • a string with the tag data
source
HELICS.helicsEndpointIsValidMethod
helicsEndpointIsValid(endpoint::HELICS.Endpoint) -> Bool
+

Check if an endpoint is valid.

Arguments

Returns

true if the Endpoint object represents a valid endpoint.

source
HELICS.helicsEndpointRemoveTargetMethod
helicsEndpointRemoveTarget(endpoint::HELICS.Endpoint, targetEndpoint::String)
+

remove an endpoint from being targeted

  • endpoint: The Endpoint to modify
  • targetEndpoint: the name of the target enpoint to remove
source
HELICS.helicsEndpointSendBytesMethod
helicsEndpointSendBytes(endpoint::HELICS.Endpoint, data::String)
+

Send a message to the targeted destination

Arguments

  • endpoint: The Endpoint to send the data from
  • data: The data to send
source
HELICS.helicsEndpointSendBytesAtMethod
helicsEndpointSendBytesAt(endpoint::HELICS.Endpoint, data::String, time::Union{Float64, Int64})
+

Send a message at a specific time to the targeted destinations

Arguments

  • endpoint: The Endpoint to send the data from
  • data: The data to send
  • time: The time the message should be sent.
source
HELICS.helicsEndpointSendBytesToMethod
helicsEndpointSendBytesTo(endpoint::HELICS.Endpoint, data::String, dest::String)
+

Send a message to the specified destination

Arguments

  • endpoint: The Endpoint to send the data from
  • data: The data to send
  • dest: The target destination (empty string to use the default destination)
source
HELICS.helicsEndpointSendBytesToAtMethod
helicsEndpointSendBytesToAt(endpoint::HELICS.Endpoint, data::String, dest::String, time::Union{Float64, Int64})
+

Send a message to the specified destination at a specific time.

Arguments

  • endpoint: The Endpoint to send the data from
  • data: The data to send
  • dest: The target destination (empty string to use the default destination)
  • time: The time the message should be sent.
source
HELICS.helicsEndpointSendMessageZeroCopyMethod
helicsEndpointSendMessageZeroCopy(endpoint::HELICS.Endpoint, message::HELICS.Message)
+

Send a message object from a specific endpoint, the message will not be copied and the message object will no longer be valid after the call.

Arguments

source
HELICS.helicsEndpointSetInfoMethod
helicsEndpointSetInfo(endpoint::HELICS.Endpoint, info::String)
+

Set the data in the info field for an filter

Arguments

  • endpoint: The Endpoint to query
  • info: The string to set
source
HELICS.helicsEndpointSetTagMethod
helicsEndpointSetTag(endpoint::HELICS.Endpoint, tagName::String, tagValue::String)
+

Set the data in a specific tag for an endpoint.

Arguments

  • endpoint: The Endpoint to query
  • tagName: The name of the tag
  • tagValue: The string value to associate with the tag
source

Federate

HELICS.helicsFederateAddAliasMethod
helicsFederateAddAlias(fed::HELICS.Federate, interfaceName::String, alias::String)
+

create an alias for an interface

Arguments

  • fed: the Federate to query
  • interfaceName: The current name of an interface
  • alias: the additional name to use for the given interface
source
HELICS.helicsFederateCloneMethod
helicsFederateClone(fed::HELICS.Federate) -> HELICS.Federate
+

Create a new reference to an existing federate

this will create a new Federate object that references the existing federate it must be freed as well

Arguments

Returns

  • a new reference to the same federate
source
HELICS.helicsFederateCosimulationTerminationCallbackMethod
helicsFederateCosimulationTerminationCallback(fed::HELICS.Federate, cosimTermination::Ptr{Nothing}, userdata::Ptr{Nothing})
+

Set callback for cosimulation termination.

This callback will be executed once when the time advancement of the federate/co-simulation has terminated. This may be called as part of the finalize operation, or when a maxTime signal is returned from requestTime or when an error is encountered.

Arguments

  • fed: the Federate to set a callback for.
  • cosimTermination: A callback with signature void(void *userdata)
  • userdata: a point to user data that is passed to the function when executing
source
HELICS.helicsFederateCreateMessageMethod
helicsFederateCreateMessage(fed::HELICS.Federate) -> HELICS.Message
+

Create a new empty message object.

The message is empty and isValid will return false since there is no data associated with the message yet.

#Arguments

  • fed: a federate object to associate the message with

Returns

  • a Message object containing the message data
source
HELICS.helicsFederateDisconnectMethod
helicsFederateDisconnect(fed::HELICS.Federate)
+

Disconnect/finalize the federate. This function halts all communication in the federate and disconnects it from the core. This call is identical to helicsFederateFinalize.

source
HELICS.helicsFederateDisconnectAsyncMethod
helicsFederateDisconnectAsync(fed::HELICS.Federate)
+

Disconnect/finalize the federate in an async call. This call is identical to helicsFederateFinalizeAsync.

source
HELICS.helicsFederateEnterExecutingModeIterativeMethod
helicsFederateEnterExecutingModeIterative(fed::HELICS.Federate, iterate::Union{Int64, HELICS.Lib.HelicsIterationRequest}) -> HELICS.Lib.HelicsIterationResult
+

Request an iterative time

this call allows for finer grain control of the iterative process then helicsFederateRequestTime it takes a time and iteration request and return a time and iteration status.

Arguments

  • fed: the Federate to make the request of
  • iterate: the requested iteration mode

Returns

  • an iteration structure with field containing the time and iteration status
source
HELICS.helicsFederateEnterExecutingModeIterativeAsyncMethod
helicsFederateEnterExecutingModeIterativeAsync(fed::HELICS.Federate, iterate::Union{Int64, HELICS.Lib.HelicsIterationRequest})
+

Request an iterative entry to the execution mode

This call allows for finer grain control of the iterative process then helicsFederateRequestTime it takes a time and and iteration request and return a time and iteration status

Arguments

  • fed: the Federate to make the request of
  • iterate: the requested iteration mode
source
HELICS.helicsFederateEnterExecutingModeIterativeCompleteMethod
helicsFederateEnterExecutingModeIterativeComplete(fed::HELICS.Federate) -> HELICS.Lib.HelicsIterationResult
+

Complete the asynchronous iterative call into ExecutionModel

Arguments

  • fed: the Federate to make the request of

Returns

  • an iteration object containing the iteration time and iteration_status
source
HELICS.helicsFederateEnterInitializingModeMethod
helicsFederateEnterInitializingMode(fed::HELICS.Federate)
+

Enter the initialization state of a Federate

the initialization state allows initial values to be set and received if the iteration is requested on entry to the execution state. This is a blocking call and will block until the core allows it to proceed.

Arguments

source
HELICS.helicsFederateEnterInitializingModeIterativeMethod
helicsFederateEnterInitializingModeIterative(fed::HELICS.Federate)
+

Trigger a blocking call and return to created state after all federates have either triggered an iteration or are waiting to enter initializing mode.

This call will return the federate to the created state to allow additional setup to occur with federates either iterating in the mode or waiting.

Arguments

source
HELICS.helicsFederateEnterInitializingModeIterativeAsyncMethod
helicsFederateEnterInitializingModeIterativeAsync(fed::HELICS.Federate)
+

Non blocking alternative to ef helicsFederateEnterInitializingModeIterative. The function helicsFederateEnterInitializationModeIterativeComplete must be called to finish the operation.

Arguments

source
HELICS.helicsFederateEnterInitializingModeIterativeCompleteMethod
helicsFederateEnterInitializingModeIterativeComplete(fed::HELICS.Federate)
+

Complete the call to enter initializing mode Iterative that was initiated with /ref heliceEnterInitializingModeIterativeAsync. The federate will be in created or error mode on return

Arguments

source
HELICS.helicsFederateErrorHandlerCallbackMethod
helicsFederateErrorHandlerCallback(fed::HELICS.Federate, errorHandler::Ptr{Nothing}, userdata::Ptr{Nothing})
+

Set callback for error handling.

This callback will be called when a federate error is encountered.

Arguments

  • fed: the Federate to set a callback for.
  • errorHandler: A callback with signature void(int errorCode, const char *errorString, void *userdata)
  • userdata: a point to user data that is passed to the function when executing
source
HELICS.helicsFederateExecutingEntryCallbackMethod
helicsFederateExecutingEntryCallback(fed::HELICS.Federate, executingEntry::Ptr{Nothing}, userdata::Ptr{Nothing})
+

Set callback for the entry to ExecutingMode.

This callback will be executed once on first entry to executingMode

Arguments

  • fed: the Federate to set a callback for.
  • executingEntry: A callback with signature void(void *userdata)
  • userdata: a point to user data that is passed to the function when executing
source
HELICS.helicsFederateGetCommandMethod
helicsFederateGetCommand(fed::HELICS.Federate) -> String
+

Get a command sent to the federate

Arguments

  • fed: The Federate to get the command for

Returns

  • A string with the command for the federate, if the string is empty no command is available.
source
HELICS.helicsFederateGetCommandSourceMethod
helicsFederateGetCommandSource(fed::HELICS.Federate) -> String
+

Get the source of the most recently retrieved command sent to the federate.

Arguments

  • fed: The Federate to get the command for

Returns

  • A string with name of the source who sent the command
source
HELICS.helicsFederateGetFilterMethod
helicsFederateGetFilter(fed::HELICS.Federate, name::String) -> HELICS.Filter
+

Get a Filter by its name typically already created via helicsFederateRegisterInterfaces file or something of that nature

Arguments

Returns

  • a Filter object, the object will not be valid and err will contain an error code if no filter with the specified name exists
source
HELICS.helicsFederateGetFlagOptionMethod
helicsFederateGetFlagOption(fed::HELICS.Federate, flag::Union{Int64, HELICS.Lib.HelicsFederateFlags, HELICS.Lib.HelicsHandleOptions}) -> Bool
+

Get a flag value for a Federate

Arguments

  • fed: the Federate to get the flag for
  • flag: the flag to query

Returns

  • the value of the flag
source
HELICS.helicsFederateGetInputMethod
helicsFederateGetInput(fed::HELICS.Federate, key::String) -> HELICS.Input
+

Get an Input object from a key

Arguments

  • fed: the value federate object to use to get the Publication
  • key: the name of the Input

Returns

  • a Subscription object, the object will not be valid and err will contain an error code if no input with the specified key exists
source
HELICS.helicsFederateGetInputByIndexMethod
helicsFederateGetInputByIndex(fed::HELICS.Federate, index::Int64) -> HELICS.Input
+

Get an Input by its index typically already created via helicsFederateRegisterInterfaces file or something of that nature

Arguments

Returns

  • a helics_input, which will be NULL if an invalid index
source
HELICS.helicsFederateGetInputByTargetMethod
helicsFederateGetInputByTarget(fed::HELICS.Federate, target::String) -> HELICS.Input
+

Get an Input object from an Input target

Arguments

Returns

  • a Input object, the object will not be valid and err will contain an error code if no input with the specified

key exists

source
HELICS.helicsFederateGetIntegerPropertyMethod
helicsFederateGetIntegerProperty(fed::HELICS.Federate, intProperty::Union{Int64, HELICS.Lib.HelicsHandleOptions, HELICS.Lib.HelicsProperties}) -> Int64
+

Set the logging level for the Federate

debug and trace only do anything if they were enabled in the compilation

Arguments

Returns

  • the value of the property
source
HELICS.helicsFederateGetMessageMethod
helicsFederateGetMessage(fed::HELICS.Federate) -> HELICS.Message
+

Receive a communication message for any endpoint in the Federate

The return order will be in order of endpoint creation. So all messages that are available for the first endpoint, then all for the second, and so on within a single endpoint the messages are ordered by time, then source_id, then order of arrival

Returns

  • a Message object containing the message data
source
HELICS.helicsFederateGetTagMethod
helicsFederateGetTag(fed::HELICS.Federate, tagName::String) -> String
+

Get a federate tag value.

Arguments

  • fed: the Federate to get the tag for
  • tagName: the name of the tag to get
source
HELICS.helicsFederateGetTimePropertyMethod
helicsFederateGetTimeProperty(fed::HELICS.Federate, timeProperty::Union{Int64, HELICS.Lib.HelicsProperties}) -> Float64
+

Get the current value of a time based property in a Federate

Arguments

  • fed: the Federate query
  • timeProperty: the property to query
source
HELICS.helicsFederateGetTranslatorMethod
helicsFederateGetTranslator(fed::HELICS.Federate, name::String) -> HELICS.Translator
+

Get a translator by its name, typically already created via registerInterfaces file or something of that nature.

Arguments

  • fed: the Federate to get the translator from
  • name: The name of the translator to get

Returns

source
HELICS.helicsFederateGetTranslatorByIndexMethod
helicsFederateGetTranslatorByIndex(fed::HELICS.Federate, index::Int64) -> HELICS.Translator
+

Get a translator by its index, typically already created via registerInterfaces file or something of that nature.

Arguments

  • fed: the Federate to get the translator from
  • index: The index of the translator to get

Returns

source
HELICS.helicsFederateGetTranslatorCountMethod
helicsFederateGetTranslatorCount(fed::HELICS.Federate) -> Int64
+

Get the number of translators registered through a federate.

Arguments

Returns

  • a count of the number of translators registered through a federate.
source
HELICS.helicsFederateGlobalErrorMethod
helicsFederateGlobalError(fed::HELICS.Federate, error_code::Integer, error_string::String)
+

Generate a global Error from a Federate

A global error halts the co-simulation completely

Arguments

  • fed: the Federate to create an error in
  • error_code: the integer code for the error
  • error_string: a string describing the error
source
HELICS.helicsFederateInitializingEntryCallbackMethod
helicsFederateInitializingEntryCallback(fed::HELICS.Federate, initializingEntry::Ptr{Nothing}, userdata::Ptr{Nothing})
+

Set callback for the entry to initializingMode.

This callback will be executed when the initializingMode is entered

Arguments

  • fed: the Federate to set a callback for.
  • initializingEntry: A callback with signature void(HelicsBool iterating, void *userdata);
				   the bool parameter is set to true if the entry is iterative, therefore the first time this is called the bool is false
+				   and all subsequent times it is true.
  • userdata: a point to user data that is passed to the function when executing
source
HELICS.helicsFederateIsProtectedMethod
helicsFederateIsProtected(fedName::String)
+

checks if an existing federate is protected

Arguments

  • fedName: The name of an existing HelicsFederate.
source
HELICS.helicsFederateLocalErrorMethod
helicsFederateLocalError(fed::HELICS.Federate, error_code::Integer, error_string::String)
+

Generate a local error in a Federate

This will propagate through the co-simulation but not necessarily halt the co-simulation, it has a similar effect to finalize but does allow some interaction with a core for a brief time.

Arguments

  • fed: the Federate to create an error in
  • error_code: the integer code for the error
  • error_string: a string describing the error
source
HELICS.helicsFederateLogLevelMessageMethod
helicsFederateLogLevelMessage(fed::HELICS.Federate, loglevel::Union{Int64, HELICS.Lib.HelicsLogLevels}, logmessage::String)
+

Log a message through a Federate

Arguments

  • fed: The Federate to set the global through
  • loglevel: The level of the message to log. See HelicsLogLevels
  • logmessage: The message to put in the log
source
HELICS.helicsFederateProcessCommunicationsMethod
helicsFederateProcessCommunications(fed::HELICS.Federate, period::Union{Float64, Int64})
+

Tell helics to process internal communications for a period of time.

Arguments

  • fed: the Federate to tell to process
  • `period1: The length of time to process communications and then return control.
source
HELICS.helicsFederateProtectMethod
helicsFederateProtect(fedName::String)
+

Protect a federate from finalizing and closing if all references go out of scope

this function allows a federate to be retrieved on demand, it must be explicitly close later otherwise it will be destroyed when the library is closed

Arguments

  • fedName: The name of an existing HelicsFederate.
source
HELICS.helicsFederateRegisterCloningFilterMethod
helicsFederateRegisterCloningFilter(fed::HELICS.Federate, name::String) -> HELICS.Filter
+

Create a cloning Filter on the specified federate

Cloning filters copy a message and send it to multiple locations source and destination can be added through other functions

Arguments

  • fed: the fed to register through
  • name: the name of the Filter (can be NULL)

Returns

source
HELICS.helicsFederateRegisterEndpointMethod
helicsFederateRegisterEndpoint(fed::HELICS.Federate, name::String, kind::String) -> HELICS.Endpoint
+

Create an Endpoint

The Endpoint becomes part of the Federate and is destroyed when the Federate is freed so there are no separate free functions for endpoints.

Arguments

Returns

source
HELICS.helicsFederateRegisterFilterMethod
helicsFederateRegisterFilter(fed::HELICS.Federate, kind::Union{Int64, HELICS.Lib.HelicsFilterTypes}, name::String) -> HELICS.Filter
+

Create a source Filter on the specified federate

filters can be created through a Federate or a core , linking through a federate allows a few extra features of name matching to function on the Federate interface but otherwise equivalent behavior

Arguments

  • fed: the fed to register through
  • type: the type of filter to create HelicsFilterTypes
  • name: the name of the Filter (can be NULL)

Returns

source
HELICS.helicsFederateRegisterGlobalCloningFilterMethod
helicsFederateRegisterGlobalCloningFilter(fed::HELICS.Federate, name::String) -> HELICS.Filter
+

Create a global cloning Filter on the specified federate

Cloning filters copy a message and send it to multiple locations source and destination can be added through other functions

Arguments

  • fed: the fed to register through
  • name: the name of the Filter (can be NULL)

Returns

source
HELICS.helicsFederateRegisterGlobalEndpointMethod
helicsFederateRegisterGlobalEndpoint(fed::HELICS.Federate, name::String, type::String) -> HELICS.Endpoint
+

Create an Endpoint

The Endpoint becomes part of the Federate and is destroyed when the federate is freed so there are no separate free functions for endpoints

Arguments

Returns

source
HELICS.helicsFederateRegisterGlobalFilterMethod
helicsFederateRegisterGlobalFilter(fed::HELICS.Federate, kind::Union{Int64, HELICS.Lib.HelicsFilterTypes}, name::String) -> HELICS.Filter
+

Create a global source filter through a Federate

Filters can be created through a Federate or a core , linking through a federate allows a few extra features of name matching to function on the Federate interface but otherwise equivalent behavior

Arguments

  • fed: the fed to register through
  • type: the type of filter to create HelicsFilterTypes
  • name: the name of the Filter (can be NULL)

Returns

source
HELICS.helicsFederateRegisterGlobalInputFunction
helicsFederateRegisterGlobalInput(fed::HELICS.Federate, key::String, kind::Union{Int64, HELICS.Lib.HelicsDataTypes}) -> HELICS.Input
+helicsFederateRegisterGlobalInput(fed::HELICS.Federate, key::String, kind::Union{Int64, HELICS.Lib.HelicsDataTypes}, units::String) -> HELICS.Input
+

Register a global named input

The Publication becomes part of the Federate and is destroyed when the Federate is freed so there are no separate free functions for subscriptions and publications

Arguments

Returns

source
HELICS.helicsFederateRegisterGlobalPublicationFunction
helicsFederateRegisterGlobalPublication(fed::HELICS.Federate, key::String, kind::Union{Int64, HELICS.Lib.HelicsDataTypes}) -> HELICS.Publication
+helicsFederateRegisterGlobalPublication(fed::HELICS.Federate, key::String, kind::Union{Int64, HELICS.Lib.HelicsDataTypes}, units::String) -> HELICS.Publication
+

Register a global named publication with an arbitrary type

Arguments

The Publication becomes part of the Federate and is destroyed when the Federate is freed so there are no separate free functions for subscriptions and publications

Arguments

Returns

source
HELICS.helicsFederateRegisterGlobalTargetedEndpointMethod
helicsFederateRegisterGlobalTargetedEndpoint(fed::HELICS.Federate, name::String, type::String) -> HELICS.Endpoint
+

Create a global targeted endpoint, Targeted endpoints have specific destinations predefined and do not allow sending messages to other endpoints

@details The endpoint becomes part of the federate and is destroyed when the federate is freed so there are no separate free functions for endpoints.

Arguments

Returns

source
HELICS.helicsFederateRegisterGlobalTranslatorMethod
helicsFederateRegisterGlobalTranslator(fed::HELICS.Federate, type::Int64, name::String)
+

Create a global translator through a federate.

Translators can be created through a federate or a core. Linking through a federate allows a few extra features of name matching to function on the federate interface but otherwise have equivalent behavior.

Arguments

  • fed: the Federate to register through.
  • type: The type of translator to create /ref HelicsTranslatorTypes
  • name: The name of the translator, it can be null

Returns

source
HELICS.helicsFederateRegisterGlobalTypeInputFunction
helicsFederateRegisterGlobalTypeInput(fed::HELICS.Federate, key::String, kind::String) -> HELICS.Input
+helicsFederateRegisterGlobalTypeInput(fed::HELICS.Federate, key::String, kind::String, units::String) -> HELICS.Input
+

Register a global publication with an arbitrary type

The Publication becomes part of the Federate and is destroyed when the Federate is freed so there are no separate free functions for subscriptions and publications

Arguments

Returns

source
HELICS.helicsFederateRegisterGlobalTypePublicationFunction
helicsFederateRegisterGlobalTypePublication(fed::HELICS.Federate, key::String, kind::String) -> HELICS.Publication
+helicsFederateRegisterGlobalTypePublication(fed::HELICS.Federate, key::String, kind::String, units::String) -> HELICS.Publication
+

Register a global publication with a defined type

Arguments

The Publication becomes part of the Federate and is destroyed when the Federate is freed so there are no separate free functions for subscriptions and publications

Returns

source
HELICS.helicsFederateRegisterInputFunction
helicsFederateRegisterInput(fed::HELICS.Federate, key::String, kind::Union{Int64, HELICS.Lib.HelicsDataTypes}) -> HELICS.Input
+helicsFederateRegisterInput(fed::HELICS.Federate, key::String, kind::Union{Int64, HELICS.Lib.HelicsDataTypes}, units::String) -> HELICS.Input
+

Register a named input

The Input becomes part of the Federate and is destroyed when the Federate is freed so there are no separate free functions for subscriptions, inputs, and publications

Arguments

  • fed: the Federate in which to create an Input
  • key: the identifier for the Publication the global input key will be prepended with the Federate name
  • type: a code identifying the type of the Input see HelicsDataTypes for available options
  • units: a string listing the units of the Input maybe NULL

Returns

source
HELICS.helicsFederateRegisterInterfacesMethod
helicsFederateRegisterInterfaces(fed::HELICS.Federate, file::String)
+

Load interfaces from a file

Arguments

  • fed: the Federate to which to load interfaces
  • file: the name of a file to load the interfaces from either JSON, or TOML
source
HELICS.helicsFederateRegisterPublicationFunction
helicsFederateRegisterPublication(fed::HELICS.Federate, key::String, kind::Union{Int64, HELICS.Lib.HelicsDataTypes}) -> HELICS.Publication
+helicsFederateRegisterPublication(fed::HELICS.Federate, key::String, kind::Union{Int64, HELICS.Lib.HelicsDataTypes}, units::String) -> HELICS.Publication
+

Register a Publication with a known type

The Publication becomes part of the Federate and is destroyed when the Federate is freed so there are no separate free functions for subscriptions and publications

Arguments

Returns

source
HELICS.helicsFederateRegisterSubscriptionFunction
helicsFederateRegisterSubscription(fed::HELICS.Federate, key::String) -> HELICS.Input
+helicsFederateRegisterSubscription(fed::HELICS.Federate, key::String, units::String) -> HELICS.Input
+

Create a Subscription

The Subscription becomes part of the Federate and is destroyed when the Federate is freed so there are no separate free functions for subscriptions and publications

Arguments

Returns

source
HELICS.helicsFederateRegisterTargetedEndpointMethod
helicsFederateRegisterTargetedEndpoint(fed::HELICS.Federate, name::String, type::String) -> HELICS.Endpoint
+

Create a targeted endpoint. Targeted endpoints have specific destinations predefined and do not allow sending messages to other endpoints

The endpoint becomes part of the federate and is destroyed when the federate is freed so there are no separate free functions for endpoints.

Arguments

Returns

source
HELICS.helicsFederateRegisterTranslatorMethod
helicsFederateRegisterTranslator(fed::HELICS.Federate, type::Int64, name::String)
+

Create a Translator on the specified federate.

Translators can be created through a federate or a core. Linking through a federate allows a few extra features of name matching to function on the federate interface but otherwise have equivalent behavior.

Arguments

  • fed: the Federate to register through.
  • type: The type of translator to create /ref HelicsTranslatorTypes
  • name: The name of the translator, it can be null

Returns

source
HELICS.helicsFederateRegisterTypeInputFunction
helicsFederateRegisterTypeInput(fed::HELICS.Federate, key::String, kind::String) -> HELICS.Input
+helicsFederateRegisterTypeInput(fed::HELICS.Federate, key::String, kind::String, units::String) -> HELICS.Input
+

Register an Input with a defined type

The Input becomes part of the Federate and is destroyed when the Federate is freed so there are no separate free functions for subscriptions, inputs and publications

Arguments

  • fed: the Federate in which to create an Input
  • key: the identifier for the Input
  • type: a string describing the expected type of the Input
  • units: a string listing the units of the Input maybe NULL

Returns

source
HELICS.helicsFederateRegisterTypePublicationFunction
helicsFederateRegisterTypePublication(fed::HELICS.Federate, key::String, kind::String) -> HELICS.Publication
+helicsFederateRegisterTypePublication(fed::HELICS.Federate, key::String, kind::String, units::String) -> HELICS.Publication
+

Register a Publication with a defined type

The Publication becomes part of the Federate and is destroyed when the Federate is freed so there are no separate free functions for subscriptions and publications

Arguments

Returns

source
HELICS.helicsFederateRequestNextStepMethod
helicsFederateRequestNextStep(fed::HELICS.Federate) -> Float64
+

Request the next time step for federate execution

feds should have setup the period or minDelta for this to work well but it will request the next time step which is the current time plus the minimum time step.

Arguments

  • fed: the Federate to make the request of

Returns

source
HELICS.helicsFederateRequestTimeMethod
helicsFederateRequestTime(fed::HELICS.Federate, requestTime::Union{Float64, Int64}) -> Float64
+

Request the next time for federate execution

Arguments

  • fed: the Federate to make the request of
  • requestTime: the next requested time

Returns

  • the time granted to the Federate invalid
source
HELICS.helicsFederateRequestTimeAdvanceMethod
helicsFederateRequestTimeAdvance(fed::HELICS.Federate, timeDelta::Union{Float64, Int64}) -> Float64
+

Request the next time for federate execution

Arguments

  • fed: The Federate to make the request of
  • timeDelta: The requested amount of time to advance

Returns

  • the time granted to the Federate, will return maximum time if the simulation has terminated invalid
source
HELICS.helicsFederateRequestTimeIterativeMethod
helicsFederateRequestTimeIterative(fed::HELICS.Federate, requestTime::Union{Float64, Int64}, iterate::Union{Int64, HELICS.Lib.HelicsIterationRequest}) -> Tuple{Float64, HELICS.Lib.HelicsIterationResult}
+

Request an iterative time

this call allows for finer grain control of the iterative process then helicsFederateRequestTime it takes a time and iteration request and return a time and iteration status.

Arguments

  • fed: the Federate to make the request of
  • requestTime: the next desired time
  • iterate: the requested iteration mode

Returns

  • the granted time
  • the iteration specification of the result
source
HELICS.helicsFederateRequestTimeIterativeAsyncMethod
helicsFederateRequestTimeIterativeAsync(fed::HELICS.Federate, requestTime::Union{Float64, Int64}, iterate::Union{Int64, HELICS.Lib.HelicsIterationRequest})
+

Request an iterative time through an asynchronous call

this call allows for finer grain control of the iterative process then helicsFederateRequestTime it takes a time an iteration request and returns a time and iteration status call helicsFederateRequestTimeIterativeComplete to finish the process.

Arguments

  • fed: the Federate to make the request of
  • requestTime: the next desired time
  • iterate: the requested iteration mode

Returns

  • a void object with a return code of the result
source
HELICS.helicsFederateRequestTimeIterativeCompleteMethod
helicsFederateRequestTimeIterativeComplete(fed::HELICS.Federate) -> Tuple{Float64, HELICS.Lib.HelicsIterationResult}
+

Complete an iterative time request asynchronous call

Arguments

  • fed: the Federate to make the request of

Returns

  • the granted time
  • outIterate the iteration specification of the result
source
HELICS.helicsFederateSendCommandMethod
helicsFederateSendCommand(fed::HELICS.Federate, target::String, command::String)
+

Send a command to another helics object through a federate.

Arguments

  • fed: The Federate to set the command through
  • target: The name of the object to send the command to
  • command: the command to send
source
HELICS.helicsFederateSetFlagOptionMethod
helicsFederateSetFlagOption(fed::HELICS.Federate, flag::Union{Int64, HELICS.Lib.HelicsFederateFlags, HELICS.Lib.HelicsHandleOptions}, flagValue::Bool)
+

Set a flag for the Federate

Arguments

  • fed: the Federate to alter a flag for
  • flag: the flag to change
  • flagValue: the new value of the flag 0 for false !=0 for true
source
HELICS.helicsFederateSetGlobalMethod
helicsFederateSetGlobal(fed::HELICS.Federate, valueName::String, value::String)
+

Set a federation global value through a Federate

this overwrites any previous value for this name

Arguments

  • fed: the Federate to set the global through
  • valueName: the name of the global to set
  • value: the value of the global
source
HELICS.helicsFederateSetIntegerPropertyMethod
helicsFederateSetIntegerProperty(fed::HELICS.Federate, intProperty::Union{Int64, HELICS.Lib.HelicsProperties}, propertyVal::Int64)
+

Set an integer based property of a Federate

Arguments

  • fed: the Federate to change the property for
  • intProperty: the property to set
  • propertyVal: the value of the property
source
HELICS.helicsFederateSetLogFileMethod
helicsFederateSetLogFile(fed::HELICS.Federate, logFile::String)
+

Set the logging file for a Federate (actually on the core associated with a federate)

Arguments

  • fed: the Federate to set the log file for
  • logFile: the name of the log file
source
HELICS.helicsFederateSetLoggingCallbackMethod
helicsFederateSetLoggingCallback(fed::HELICS.Federate, logger::Ptr{Nothing}, userdata)
+

Set the logging callback for a Federate

Add a logging callback function for the C The logging callback will be called when a message flows into a Federate from the core or from a federate

Arguments

  • fed: the Federate in which to create a Subscription must have been create with helicsCreateValueFederate or helicsCreateCombinationFederate
  • logger: a callback with signature void(int, const char *, const char *, void *); the function arguments are loglevel, an identifier string, and a message string, and a pointer to user data
  • userdata: a point to user data that is passed to the function when executing
source
HELICS.helicsFederateSetQueryCallbackMethod
helicsFederateSetQueryCallback(fed::HELICS.Federate, queryAnswer::Ptr{Nothing}, userdata::Ptr{Nothing})
+

Set callback for queries executed against a federate.

There are many queries that HELICS understands directly, but it is occasionally useful to have a federate be able to respond to specific queries with answers specific to a federate.

Arguments

  • fed: the Federate to set a callback for.
  • queryAnswer: A callback with signature void(const char *query, int querySize, HelicsQueryBuffer buffer, void *userdata); The function arguments include the query string requesting an answer along with its size; the string is not guaranteed to
			 be null terminated. HelicsQueryBuffer is the buffer intended to filled out by the userCallback. The buffer can be empty if the query is not
+			 recognized and HELICS will generate the appropriate response.  The buffer is used to ensure memory ownership separation between user code
+			 and HELICS code.
+			 The HelicsQueryBufferFill method can be used to load a string into the buffer.
  • userdata: a point to user data that is passed to the function when executing
source
HELICS.helicsFederateSetSeparatorMethod
helicsFederateSetSeparator(fed::HELICS.Federate, separator::Char)
+

Set the separator character in a Federate

The separator character is the separation character for local publications/endpoints in creating their global name. for example if the separator character is '/' then a local endpoint would have a globally reachable name of fedName/localName.

Arguments

  • fed: the Federate object to alter
  • separator: the character to use as a separator
source
HELICS.helicsFederateSetStateChangeCallbackMethod
helicsFederateSetStateChangeCallback(fed::HELICS.Federate, stateChange::Ptr{Nothing}, userdata::Ptr{Nothing})
+

Set callback for the federate mode change.

This callback will be executed every time the operating mode of the federate changes.

Arguments

  • fed: the Federate to set a callback for.
  • stateChange: A callback with signature void(HelicsFederateState newState, HelicsFederateState oldState, void *userdata); The function arguments are the new state, the old state, and pointer to the userdata.
  • userdata: a point to user data that is passed to the function when executing
source
HELICS.helicsFederateSetTagMethod
helicsFederateSetTag(fed::HELICS.Federate, tagName::String, value::String)
+

Set a federate tag value. This overwrites any previous value for this tag.

Arguments

  • fed: the Federate to set the tag for
  • tagName: the name of the tag to set
  • value: the value of the tag
source
HELICS.helicsFederateSetTimePropertyMethod
helicsFederateSetTimeProperty(fed::HELICS.Federate, timeProperty::Union{Int64, HELICS.Lib.HelicsProperties}, time::Union{Float64, Int64})
+

Set a time based property for a Federate

Arguments

  • fed: the Federate set the property for
  • timeProperty: a integer code for a time property
  • time: the requested value of the property
source
HELICS.helicsFederateSetTimeRequestEntryCallbackMethod
helicsFederateSetTimeRequestEntryCallback(fed::HELICS.Federate, requestTime::Ptr{Nothing}, userdata::Ptr{Nothing})
+

Set callback for the time request.

This callback will be executed when a valid time request is made. It is intended for the possibility of embedded data grabbers in a callback to simplify user code.

Arguments

  • fed: the Federate to set a callback for.
  • requestTime: A callback with signature void(HelicsTime currentTime, HelicsTime requestTime, bool iterating, void *userdata); The function arguments are the current time value, the requested time value, a bool indicating that the time is
			 iterating, and pointer to the userdata.
  • userdata: a point to user data that is passed to the function when executing
source
HELICS.helicsFederateSetTimeRequestReturnCallbackMethod
helicsFederateSetTimeRequestReturnCallback(fed::HELICS.Federate, requestTimeReturn::Ptr{Nothing}, userdata::Ptr{Nothing})
+

Set callback for the time request return.

This callback will be executed after all other callbacks for a time request return. This callback will be the last thing executed before returning control to the user program. The difference between this and the TimeUpdate callback is the order of execution. The timeUpdate callback is executed prior to individual interface callbacks, this callback is executed after all others.

Arguments

  • fed: the Federate to set a callback for.
  • requestTimeReturn: A callback with signature void(HelicsTime newTime, bool iterating, void *userdata);
				   The function arguments are the new time value, a bool indicating that the time is iterating, and pointer to the userdata.
  • userdata: a point to user data that is passed to the function when executing
source
HELICS.helicsFederateSetTimeUpdateCallbackMethod
helicsFederateSetTimeUpdateCallback(fed::HELICS.Federate, timeUpdate::Ptr{Nothing}, userdata::Ptr{Nothing})
+

Set callback for the time update.

This callback will be executed every time the simulation time is updated starting on entry to executing mode.

Arguments

  • fed: the Federate to set a callback for.
  • timeUpdate: A callback with signature void(HelicsTime newTime, bool iterating, void *userdata); The function arguments are the new time value, a bool indicating that the time is iterating, and pointer to the userdata.
  • userdata: a point to user data that is passed to the function when executing
source
HELICS.helicsFederateUnProtectMethod
helicsFederateUnProtect(fedName::String)
+

remove the protection of an existing federate

this function allows a federate to be retrieved on demand, it must be explicitly close later otherwise it will be destroyed when the library is closed

Arguments

  • fedName: The name of an existing HelicsFederate that should not be protected.
source
HELICS.helicsFederateWaitCommandMethod
helicsFederateWaitCommand(fed::HELICS.Federate) -> String
+

Get a command sent to the federate. Blocks until a command is received.

Arguments

  • fed: The Federate to get the command for

Returns

  • A string with the command.
source

FederateInfo

HELICS.helicsFederateInfoSetBrokerMethod
helicsFederateInfoSetBroker(fi::HELICS.FederateInfo, broker::String)
+

Set the name or connection information for a broker

this is only used if the core is automatically created, the Broker information will be transferred to the core for connection

Arguments

  • fi: the FederateInfo object to alter
  • broker: a string which defined the connection information for a broker either a name or an address
source
HELICS.helicsFederateInfoSetBrokerInitStringMethod
helicsFederateInfoSetBrokerInitString(fi::HELICS.FederateInfo, brokerInit::String)
+

Set the initialization string that a core will pass to a generated broker usually in the form of command line arguments

Arguments

  • fi: The Federate info object to alter
  • brokerInit: A string with command line arguments for a generated broker
source
HELICS.helicsFederateInfoSetBrokerKeyMethod
helicsFederateInfoSetBrokerKey(fi::HELICS.FederateInfo, brokerKey::String)
+

Set the key for a broker connection

this is only used if the core is automatically created, the Broker information will be transferred to the core for connection

Arguments

  • fi: The Federate info object to alter
  • brokerkey: A string containing a key for the Broker to connect
source
HELICS.helicsFederateInfoSetBrokerPortMethod
helicsFederateInfoSetBrokerPort(fi::HELICS.FederateInfo, brokerPort::Int64)
+

Set the port to use for the Broker

this is only used if the core is automatically created, the Broker information will be transferred to the core for connection this will only be useful for network broker connections

Arguments

  • fi: the FederateInfo object to alter
  • brokerPort: the integer port number to use for connection with a broker
source
HELICS.helicsFederateInfoSetCoreInitStringMethod
helicsFederateInfoSetCoreInitString(fi::HELICS.FederateInfo, coreInit::String)
+

Set the initialization string for the core usually in the form of command line arguments

Arguments

  • fi: the FederateInfo object to alter
  • coreInit: a string with the core initialization strings
source
HELICS.helicsFederateInfoSetCoreTypeMethod
helicsFederateInfoSetCoreType(fi::HELICS.FederateInfo, coretype::Union{Int64, HELICS.Lib.HelicsCoreTypes})
+

Set the core type by integer code

valid values available by definitions in api-data.h

Arguments

  • fi: the FederateInfo object to alter
  • coretype: an numerical code for a core type see /ref HelicsCoreTypes
source
HELICS.helicsFederateInfoSetFlagOptionMethod
helicsFederateInfoSetFlagOption(fi::HELICS.FederateInfo, flag::Union{Int64, HELICS.Lib.HelicsFederateFlags}, value::Bool)
+

Set a flag in the info structure

valid flags are available HelicsFederateFlags

Arguments

  • fi: the FederateInfo object to alter
  • flag: a numerical index for a flag
  • value: the desired value of the flag true or false
source
HELICS.helicsFederateInfoSetLocalPortMethod
helicsFederateInfoSetLocalPort(fi::HELICS.FederateInfo, localPort::String)
+

Set the local port to use

this is only used if the core is automatically created, the port information will be transferred to the core for connection

Arguments

  • fi: the FederateInfo object to alter
  • localPort: a string with the port information to use as the local server port can be a number or "auto" or "os_local"
source
HELICS.helicsFederateInfoSetSeparatorMethod
helicsFederateInfoSetSeparator(fi::HELICS.FederateInfo, separator::Char)
+

Set the separator character in the info structure

the separator character is the separation character for local publications/endpoints in creating their global name. for example if the separator character is '/' then a local endpoint would have a globally reachable name of fedName/localName

Arguments

  • fi: the FederateInfo object to alter
  • separator: the character to use as a separator
source

Filter

HELICS.helicsFilterAddDeliveryEndpointMethod
helicsFilterAddDeliveryEndpoint(filt::HELICS.Filter, deliveryEndpoint::String)
+

Add a delivery endpoint to a cloning filter

All cloned messages are sent to the delivery address(es)

Arguments

  • filt: the given Filter
  • deliveryEndpoint: the name of the Endpoint to deliver messages to
source
HELICS.helicsFilterAddDestinationTargetMethod
helicsFilterAddDestinationTarget(filt::HELICS.Filter, dest::String)
+

Add a destination target to a Filter

All messages going to a destination are copied to the delivery address(es)

Arguments

  • filt: the given Filter to add a destination target
  • dest: the name of the Endpoint to add as a destination target
source
HELICS.helicsFilterAddSourceTargetMethod
helicsFilterAddSourceTarget(filt::HELICS.Filter, source::String)
+

Add a source target to a Filter

All messages coming from a source are copied to the delivery address(es)

  • filt: the given Filter
  • source: the name of the Endpoint to add as a source target
source
HELICS.helicsFilterGetInfoMethod
helicsFilterGetInfo(filt::HELICS.Filter) -> String
+

Get the data in the info field of an filter

Arguments

Returns

  • a string with the info field string
source
HELICS.helicsFilterGetTagMethod
helicsFilterGetTag(filt::HELICS.Filter, tagName::String) -> String
+

Get the data in a specified tag of a filter.

Arguments

  • filt: the given Filter
  • tagName: The name of the tag to query.

Returns

  • A string withthe tag data
source
HELICS.helicsFilterRemoveDeliveryEndpointMethod
helicsFilterRemoveDeliveryEndpoint(filt::HELICS.Filter, deliveryEndpoint::String)
+

Remove a delivery destination from a cloning filter

Arguments

  • filt: the given Filter (must be a cloning filter)
  • deliveryEndpoint: a string with the deliverEndpoint to remove
source
HELICS.helicsFilterSetMethod
helicsFilterSet(filt::HELICS.Filter, prop::String, val::Float64)
+

Set a property on a Filter

Arguments

  • filt: the Filter to modify
  • prop: a string containing the property to set
  • val: a numerical value of the property
source
HELICS.helicsFilterSetCustomCallbackMethod
helicsFilterSetCustomCallback(filter::HELICS.Filter, filtCall::Ptr{Nothing}, userdata::Ptr{Nothing})
+

Set a general callback for a custom filter.

Add a custom filter callback for creating a custom filter operation in the C shared library.

Arguments

  • filter: the Filter to set a callback for.
  • filtCall: A callback with signature Message(Message, void *); The function arguments are the message to filter and a pointer to user data. The filter should return a new message.
  • userdata: a point to user data that is passed to the function when executing
source
HELICS.helicsFilterSetInfoMethod
helicsFilterSetInfo(filt::HELICS.Filter, info::String)
+

Set the data in the info field for an filter

Arguments

  • filt: the given Filter
  • info: the string to set
source
HELICS.helicsFilterSetOptionMethod
helicsFilterSetOption(filt::HELICS.Filter, option::Union{Int64, HELICS.Lib.HelicsHandleOptions}, value::Bool)
+

Set the data in the info field for an filter

Arguments

  • filt: the given Filter
  • option: the option to set HelicsHandleOptions
  • value: the value of the option (helicstrue or helicsfalse)
source
HELICS.helicsFilterSetStringMethod
helicsFilterSetString(filt::HELICS.Filter, prop::String, val::String)
+

Set a string property on a Filter

Arguments

  • filt: the Filter to modify
  • prop: a string containing the property to set
  • val: a string containing the new value
source
HELICS.helicsFilterSetTagMethod
helicsFilterSetTag(filt::HELICS.Filter, tagName::String, tagValue::String)
+

Get the data in a specified tag of a filter.

Arguments

  • filt: the given Filter
  • tagName: The name of the tag to query.
  • tagValue: A string with the tag data
source

Input

HELICS.helicsInputGetByteCountMethod
helicsInputGetByteCount(ipt::HELICS.Input) -> Int64
+

Get the size of the raw value for subscription

Returns

  • the size of the raw data/string in bytes
source
HELICS.helicsInputGetCharMethod
helicsInputGetChar(ipt::HELICS.Input) -> Char
+

Get a single character value from an Input

Arguments

  • ipt: the Input to get the data for

Returns

  • the resulting character value
source
HELICS.helicsInputGetInfoMethod
helicsInputGetInfo(inp::HELICS.Input) -> String
+

Get the data in the info field of an Input

Arguments

Returns

  • a string with the info field string
source
HELICS.helicsInputGetNamedPointMethod
helicsInputGetNamedPoint(ipt::HELICS.Input) -> Tuple{String, Float64}
+

Get a named point from a Subscription

Arguments

  • ipt: the Input to get the result for

Returns

  • outputString storage for copying a null terminated string
  • val the double value for the named point
source
HELICS.helicsInputGetOptionMethod
helicsInputGetOption(inp::HELICS.Input, option::Union{Int64, HELICS.Lib.HelicsHandleOptions}) -> Bool
+

Get the data in the info field of an Input

Arguments

Returns

  • a string with the info field string
source
HELICS.helicsInputGetStringSizeMethod
helicsInputGetStringSize(ipt::HELICS.Input) -> Int64
+

Get the size of a value for subscription assuming return as a string

Returns

  • the size of the string
source
HELICS.helicsInputGetTagMethod
helicsInputGetTag(inp::HELICS.Input, tagName::String) -> String
+

Get the data in the tag field of an Input

Arguments

  • inp: the Input to query
  • tagName: the name of the tage to the get the value for

Returns

  • a string with the tag data
source
HELICS.helicsInputGetVectorSizeMethod
helicsInputGetVectorSize(ipt::HELICS.Input) -> Int64
+

Get the size of a value for subscription assuming return as an array of doubles

Returns

  • the number of double in a return vector
source
HELICS.helicsInputIsUpdatedMethod
helicsInputIsUpdated(ipt::HELICS.Input) -> Bool
+

Check if a particular subscription was updated

Arguments

Returns

  • true if it has been updated since the last value retrieval
source
HELICS.helicsInputSetDefaultBytesMethod
helicsInputSetDefaultBytes(ipt::HELICS.Input, data::String)
+

Set the default as a raw data array

Arguments

  • ipt: the Input to set the default for
  • data: a pointer to the raw data to use for the default
source
HELICS.helicsInputSetDefaultComplexVectorMethod
helicsInputSetDefaultComplexVector(ipt::HELICS.Input, vectorInput::Vector{ComplexF64})
+

Set the default as a vector of complex doubles

Arguments

  • ipt: the Input to set the default for
  • vectorInput: an array of complex double data
source
HELICS.helicsInputSetDefaultNamedPointMethod
helicsInputSetDefaultNamedPoint(ipt::HELICS.Input, str::String, val::Float64)
+

Set the default as a NamedPoint

Arguments

  • ipt: the Input to set the default for
  • str: a pointer to a string representing the name
  • val: a double value for the value of the named point
source
HELICS.helicsInputSetDefaultTimeMethod
helicsInputSetDefaultTime(ipt::HELICS.Input, val::Union{Float64, Int64})
+

Set the default as a double

Arguments

  • ipt: the Input to set the default for
  • val: the default double value
source
HELICS.helicsInputSetDefaultVectorMethod
helicsInputSetDefaultVector(ipt::HELICS.Input, vectorInput::Vector{Float64})
+

Set the default as a vector of doubles

Arguments

  • ipt: the Input to set the default for
  • vectorInput: an array of double data
source
HELICS.helicsInputSetMinimumChangeMethod
helicsInputSetMinimumChange(inp::HELICS.Input, tolerance::Float64)
+

Set the minimum change detection tolerance

Arguments

  • inp: the Input to modify
  • tolerance: the tolerance level for registering an update, values changing less than this value will not show as being updated
source
HELICS.helicsInputSetTagMethod
helicsInputSetTag(inp::HELICS.Input, tagName::String, tagValue::String)
+

Set the data in the tag field for an Input

Arguments

  • inp: the Input to query
  • tagName: the name of the tag to set
  • tagValue: the string value to associate with a tag
source

Message

HELICS.helicsMessageAppendDataMethod
helicsMessageAppendData(message::HELICS.Message, data::String)
+

Append data to the payload

Arguments

  • message: The message object in question
  • data: A string containing the message data to append
  • inputDataLength: The length of the data to input
source
HELICS.helicsMessageCopyMethod
helicsMessageCopy(srcMessage::HELICS.Message, dstMessage::HELICS.Message)
+

Clopy a message object.

Arguments

  • srcMessage: The message object to copy from
  • dstMessage: The message object to copy to.
source
HELICS.helicsMessageGetByteCountMethod
helicsMessageGetByteCount(message::HELICS.Message) -> Int64
+

Get the size of the data payload in bytes

Arguments

  • message: The message object in question

Returns

  • the size of the data payload
source
HELICS.helicsMessageGetBytesMethod
helicsMessageGetBytes(message::HELICS.Message) -> String
+

Get the raw data for a message object

  • message: A message object to get the data for
  • data: The memory location of the data
  • maxMessagelen: The maximum size of information that data can hold
  • actualSize: The actual length of data copied to data
source
HELICS.helicsMessageGetBytesPointerMethod
helicsMessageGetBytesPointer(message::HELICS.Message) -> Ptr{Nothing}
+

Get a pointer to the raw data of a message

Arguments

  • message: A message object to get the data for

Returns

  • a pointer to the raw data in memory, the

pointer may be NULL if the message is not a valid message

source
HELICS.helicsMessageGetDestinationMethod
helicsMessageGetDestination(message::HELICS.Message) -> String
+

Get the destination endpoint of a message

Arguments

  • message: The message object in question

Returns

  • a string with the destination endpoint
source
HELICS.helicsMessageGetFlagOptionMethod
helicsMessageGetFlagOption(message::HELICS.Message, flag::Int64) -> Bool
+

Check if a flag is set on a message.

Arguments

  • message: The message object in question
  • flag: The flag to check should be between [0,15]

Returns

  • true if set otherwise false
source
HELICS.helicsMessageGetMessageIDMethod
helicsMessageGetMessageID(message::HELICS.Message) -> Int64
+

Get the messageID of a message

Arguments

  • message: The message object in question

Returns

  • the messageID
source
HELICS.helicsMessageGetOriginalDestinationMethod
helicsMessageGetOriginalDestination(message::HELICS.Message) -> String
+

Get the original destination endpoint of a message, the destination may have been modified by filters or other actions

Arguments

  • message: The message object in question

Returns

  • a string with the original destination of a message
source
HELICS.helicsMessageGetOriginalSourceMethod
helicsMessageGetOriginalSource(message::HELICS.Message) -> String
+

Get the original source endpoint of a message, the source may have modified by filters or other actions

Arguments

  • message: The message object in question

Returns

  • a string with the source of a message
source
HELICS.helicsMessageGetSourceMethod
helicsMessageGetSource(message::HELICS.Message) -> String
+

Get the source endpoint of a message

 message operation functions

functions for working with helics message envelopes

Arguments

  • message: The message object in question

Returns

  • a string with the source endpoint
source
HELICS.helicsMessageGetStringMethod
helicsMessageGetString(message::HELICS.Message) -> String
+

Get the payload of a message as a string

Arguments

  • message: The message object in question

Returns

  • a string representing the payload of a message
source
HELICS.helicsMessageGetTimeMethod
helicsMessageGetTime(message::HELICS.Message) -> Float64
+

Get the helics time associated with a message

Arguments

  • message: The message object in question

Returns

  • the time associated with a message
source
HELICS.helicsMessageIsValidMethod
helicsMessageIsValid(message::HELICS.Message) -> Bool
+

A check if the message contains a valid payload

Arguments

  • message: The message object in question

Returns

  • true if the message contains a payload
source
HELICS.helicsMessageReserveMethod
helicsMessageReserve(message::HELICS.Message, reserveSize::Int64)
+

Reserve space in a buffer but don't actually resize

the message data buffer will be reserved but not resized

Arguments

  • message: The message object in question
  • reserveSize: The number of bytes to reserve in the message object
source
HELICS.helicsMessageResizeMethod
helicsMessageResize(message::HELICS.Message, newSize::Int64)
+

Resize the data buffer for a message

the message data buffer will be resized there is no guarantees on what is in the buffer in newly allocated space if the allocated space is not sufficient new allocations will occur

Arguments

  • message: The message object in question
  • newSize: The new size in bytes of the buffer
source
HELICS.helicsMessageSetDataMethod
helicsMessageSetData(message::HELICS.Message, data::String)
+

Set the data payload of a message as raw data

Arguments

  • message: The message object in question
  • data: A string containing the message data
  • inputDataLength: The length of the data to input
source
HELICS.helicsMessageSetDestinationMethod
helicsMessageSetDestination(message::HELICS.Message, dest::String)
+

Set the destination of a message

Arguments

  • message: The message object in question
  • dest: A string containing the new destination
source
HELICS.helicsMessageSetFlagOptionMethod
helicsMessageSetFlagOption(message::HELICS.Message, flag::Union{Int64, HELICS.Lib.HelicsFederateFlags}, flagValue::Bool)
+

Set a flag on a message

Arguments

  • message: The message object in question
  • flag: An index of a flag to set on the message
  • flagValue: The desired value of the flag
source
HELICS.helicsMessageSetMessageIDMethod
helicsMessageSetMessageID(message::HELICS.Message, messageID::Int32)
+

Set the message ID for the message

normally this is not needed and the core of HELICS will adjust as needed

Arguments

  • message: The message object in question
  • messageID: A new message ID
source
HELICS.helicsMessageSetOriginalDestinationMethod
helicsMessageSetOriginalDestination(message::HELICS.Message, dest::String)
+

Set the original destination of a message

Arguments

  • message: The message object in question
  • dest: A string containing the new original source
source
HELICS.helicsMessageSetOriginalSourceMethod
helicsMessageSetOriginalSource(message::HELICS.Message, src::String)
+

Set the original source of a message

Arguments

  • message: The message object in question
  • src: A string containing the new original source
source
HELICS.helicsMessageSetSourceMethod
helicsMessageSetSource(message::HELICS.Message, src::String)
+

Set the source of a message

Arguments

  • message: The message object in question
  • src: A string containing the source
source
HELICS.helicsMessageSetStringMethod
helicsMessageSetString(message::HELICS.Message, str::String)
+

Set the data payload of a message as a string

Arguments

  • message: The message object in question
  • str: A string containing the message data
source
HELICS.helicsMessageSetTimeMethod
helicsMessageSetTime(message::HELICS.Message, time::Union{Float64, Int64})
+

Set the delivery time for a message

Arguments

  • message: The message object in question
  • time: The time the message should be delivered
source

Publication

HELICS.helicsPublicationGetOptionMethod
helicsPublicationGetOption(pub::HELICS.Publication, option::Union{Int64, HELICS.Lib.HelicsHandleOptions}) -> Bool
+

Get the data in the info field of an publication

Arguments

Arguments

  • a string with the info field string
source
HELICS.helicsPublicationGetTagMethod
helicsPublicationGetTag(pub::HELICS.Publication, tagName::String) -> String
+

Get the data in the tag field of a Publication

Arguments

  • pub: the Publication to query
  • tagName: the name of the tage to the get the value for

Returns

  • a string with the tag data
source
HELICS.helicsPublicationSetInfoMethod
helicsPublicationSetInfo(pub::HELICS.Publication, info::String)
+

Set the data in the info field for an publication

Arguments

  • pub: the Publication to set the info field for
  • info: the string to set
source
HELICS.helicsPublicationSetOptionMethod
helicsPublicationSetOption(pub::HELICS.Publication, option::Union{Int64, HELICS.Lib.HelicsHandleOptions}, val::Bool)
+

Set the data in the info field for an publication

Arguments

source
HELICS.helicsPublicationSetTagMethod
helicsPublicationSetTag(pub::HELICS.Publication, tagName::String, tagValue::String)
+

Set the data in the tag field for an Publication

Arguments

  • pub: the Publication to query
  • tagName: the name of the tag to set
  • tagValue: the string value to associate with a tag
source

Query

HELICS.helicsQueryBrokerExecuteMethod
helicsQueryBrokerExecute(query::HELICS.Query, broker::HELICS.Broker) -> String
+

Execute a Query directly on a broker

the call will block until the Query finishes which may require communication or other delays

Arguments

Returns

  • a string. String will remain valid until the Query is freed or executed again

the return will be nullptr if fed or Query is an invalid object, the return string will be "#invalid" if the Query itself was invalid

source
HELICS.helicsQueryBufferFillMethod
helicsQueryBufferFill(buffer::HELICS.QueryBuffer, queryResult::String)
+

Set the data for a query callback.

There are many queries that HELICS understands directly, but it is occasionally useful to have a federate be able to respond to specific queries with answers specific to a federate.

Arguments

  • buffer: the QueryBuffer to set a callback for.
  • queryResult: A callback with signature HelicsIterationRequest(void *userdata)
source
HELICS.helicsQueryCoreExecuteMethod
helicsQueryCoreExecute(query::HELICS.Query, core::HELICS.Core) -> String
+

Execute a Query directly on a core

the call will block until the Query finishes which may require communication or other delays

Arguments

  • query: the Query to use in the query
  • core: the core to send the Query to

Returns

  • a string. String will remain valid until the Query is freed or executed again

the return will be nullptr if fed or Query is an invalid object, the return string will be "#invalid" if the Query itself was invalid

source
HELICS.helicsQueryExecuteMethod
helicsQueryExecute(query::HELICS.Query, fed::HELICS.Federate) -> String
+

Execute a query

the call will block until the Query finishes which may require communication or other delays

Arguments

Returns

  • a string. String will remain valid until the Query is freed or executed again

the return will be nullptr if fed or Query is an invalid object, the return string will be "#invalid" if the Query itself was invalid

source
HELICS.helicsQueryIsCompletedMethod
helicsQueryIsCompleted(query::HELICS.Query) -> Bool
+

Check if an asynchronously executed Query has completed

this function should usually be called after a QueryExecuteAsync function has been called.

Arguments

  • query: the Query to check if completed

Returns

  • will return true if an asynchronous Query has complete or a regular Query call was made with a result and false if an asynchronous Query has not completed or is invalid
source
HELICS.helicsQuerySetOrderingMethod
helicsQuerySetOrdering(query::HELICS.Query, mode::Int32)
+

Update the ordering mode of the query, fast runs on priority channels, ordered goes on normal channels but goes in sequence

Arguments

  • query: the query object to change the order for.
  • mode: 0 for fast, 1 for ordered.
source

Others

HELICS.helicsAbortMethod
helicsAbort(errorCode::Int64, errorString::String)
+

Execute a global abort by sending an error code to all cores, brokers, and federates that were created through the current library instance.

source
HELICS.helicsBooleanToBytesMethod
helicsBooleanToBytes(value::Bool, data::HELICS.DataBuffer) -> Int32
+

convert a boolean to serialized bytes

Arguments

  • value: the boolean to convert
  • data: the DataBuffer to hold the serialized bytes

Returns

  • Int32 Bytes serialized.
source
HELICS.helicsCallbackFederateInitializeCallbackMethod
helicsCallbackFederateInitializeCallback(fed::HELICS.Federate, initialize::Ptr{Nothing}, userdata::Ptr{Nothing})
+

Set callback for initialization.

This callback will be executed when computing whether to iterate in initialization mode.

Arguments

  • fed: the Federate to set a callback for.
  • initialize: A callback with signature HelicsIterationRequest(void *userdata)
  • userdata: a point to user data that is passed to the function when executing
source
HELICS.helicsCallbackFederateNextTimeCallbackMethod
helicsCallbackFederateNextTimeCallback(fed::HELICS.Federate, timeUpdate::Ptr{Nothing}, userdata::Ptr{Nothing})
+

Set callback for the next time update.

This callback will be triggered to compute the next time update for a callback federate.

Arguments

  • fed: the Federate to set a callback for.
  • timeUpdate: A callback with signature HelicsTime(HelicsTime time, void *userdata)
  • userdata: a point to user data that is passed to the function when executing
source
HELICS.helicsCallbackFederateNextTimeIterativeCallbackMethod
helicsCallbackFederateNextTimeIterativeCallback(fed::HELICS.Federate, timeUpdate::Ptr{Nothing}, userdata::Ptr{Nothing})
+

Set callback for the next time update with iteration capability.

This callback will be triggered to compute the next time update for a callback federate.

Arguments

  • fed: the Federate to set a callback for.
  • timeUpdate: A callback with signature HelicsTime(HelicsTime time, HelicsIterationResult result, HelicsIterationRequest* iteration, void *userdata)
  • userdata: a point to user data that is passed to the function when executing
source
HELICS.helicsCharToBytesMethod
helicsCharToBytes(value::Char, data::HELICS.DataBuffer) -> Int32
+

convert a char to serialized bytes

Arguments

  • value: the char to convert
  • data: the DataBuffer to hold the serialized bytes

Returns

  • Int32 Bytes serialized.
source
HELICS.helicsCleanupLibraryMethod
helicsCleanupLibrary()
+

Function to do some housekeeping work

this runs some cleanup routines and tries to close out any residual thread that haven't been shutdown yet.

source
HELICS.helicsCloseLibraryMethod
helicsCloseLibrary()
+

Call when done using the helics library, this function will ensure the threads are closed properly if possible this should be the last call before exiting,

source
HELICS.helicsComplexToBytesMethod
helicsComplexToBytes(value::ComplexF64, data::HELICS.DataBuffer) -> Int32
+

convert a complex to serialized bytes

Arguments

  • value: the complex to convert
  • data: the DataBuffer to hold the serialized bytes

Returns

  • Int32 Bytes serialized.
source
HELICS.helicsComplexVectorToBytesMethod
helicsComplexVectorToBytes(value::Vector{ComplexF64}, data::HELICS.DataBuffer) -> Int32
+

convert a vector of complex values to serialized bytes

Arguments

  • value: the vector to convert
  • data: the DataBuffer to hold the serialized bytes

Returns

  • Int32 Bytes serialized.
source
HELICS.helicsCreateBrokerMethod
helicsCreateBroker(kind::String, name::String, initString::String) -> HELICS.Broker
+

Create a broker object

Arguments

  • type: the type of Broker to create
  • name: the name of Broker, may be a empty string to have a name automatically assigned
  • initString: an initialization string to send to the core-the format is similar to command line arguments. Typical options include a broker address –broker="XSSAF" if this is a subbroker or the number of federates or the address

Returns

  • a Broker object, will be NULL if there was an error indicated in the err object
source
HELICS.helicsCreateCallbackFederateMethod
helicsCreateCallbackFederate(fedName::String, fi::HELICS.FederateInfo) -> HELICS.CallbackFederate
+

Create a callback federate from a federate info object.

Arguments

  • fedName: A string with the name of the federate, can be NULL or an empty string to pull the default name from fi.
  • fi: fi The federate info object that contains details on the federate.

Returns

source
HELICS.helicsCreateCallbackFederateFromConfigMethod
helicsCreateCallbackFederateFromConfig(configFile::String) -> HELICS.CallbackFederate
+

Create a callback federate from a JSON file or JSON string or TOML file.

Arguments

  • configFile: A JSON file or a JSON string or TOML file that contains setup and configuration information.

Returns

source
HELICS.helicsCreateCombinationFederateMethod
helicsCreateCombinationFederate(fedName::String, fi::HELICS.FederateInfo) -> HELICS.CombinationFederate
+

Create a CombinationFederate from a FederateInfo object

CombinationFederate are both ValueFederate and MessageFederate, objects can be used in all functions that take a Federate, MessageFederate or ValueFederate object as an argument

Arguments

  • fedName: a string with the name of the Federate, can be NULL or an empty string to pull the default name from fi
  • fi: the FederateInfo object that contains details on the Federate

Returns

source
HELICS.helicsCreateCombinationFederateFromConfigMethod
helicsCreateCombinationFederateFromConfig(configFile::String) -> HELICS.CombinationFederate
+

Create a CombinationFederate from a JSON file or JSON string

CombinationFederate are both ValueFederate and MessageFederate, objects can be used in all functions that take a Federate, MessageFederate or ValueFederate object as an argument

Arguments

  • configFile: a JSON file or a JSON string or TOML file that contains setup and configuration information

Returns

source
HELICS.helicsCreateCoreMethod
helicsCreateCore(kind::String, name::String, initString::String) -> HELICS.Core
+

Create a core object

Arguments

  • type: the type of the core to create
  • name: the name of the core , may be a empty string to have a name automatically assigned
  • initString: an initialization string to send to the core-the format is similar to command line arguments. Typical options include a broker address –broker="XSSAF" or the number of federates or the address

Returns

  • a Core object if the core is invalid err will contain some indication
source
HELICS.helicsCreateQueryMethod
helicsCreateQuery(target::String, query::String) -> HELICS.Query
+

Create a Query

a Query consists of a target and query string

Arguments

  • target: the name of the target to query
  • query: the query string to make of the target
source
HELICS.helicsCreateValueFederateFromConfigMethod
helicsCreateValueFederateFromConfig(configFile::String) -> HELICS.ValueFederate
+

Create a value federate from a JSON file, JSON string, or TOML file

Federate objects can be used in all functions that take a Federate object as an argument

Arguments

  • configFile: a JSON file or a JSON string or TOML file that contains setup and configuration information

Returns

source
HELICS.helicsDataBufferConvertToTypeMethod
helicsDataBufferConvertToType(data::HELICS.DataBuffer, newDataType::Int64) -> Bool
+

change data type of DataBuffer.

Arguments

  • data: the DataBuffer

-newDataType: integer of data type you want to change data to.

Returns

  • Bool, true if successful otherwise false
source
HELICS.helicsDataBufferStringSizeMethod
helicsDataBufferStringSize(data::HELICS.DataBuffer) -> Int64
+

Get size of string data size from DataBuffer.

Arguments

  • data: the DataBuffer

Returns

  • Int
source
HELICS.helicsDataBufferToCharMethod
helicsDataBufferToChar(data::HELICS.DataBuffer) -> Char
+

Get data from DataBuffer as a single char.

Arguments

  • data: the DataBuffer

Returns

  • Char
source
HELICS.helicsDataBufferToComplexMethod
helicsDataBufferToComplex(data::HELICS.DataBuffer) -> ComplexF64
+

Get data from DataBuffer as a complex.

Arguments

  • data: the DataBuffer

Returns

  • ComplexF64
source
HELICS.helicsDataBufferToComplexVectorMethod
helicsDataBufferToComplexVector(data::HELICS.DataBuffer) -> Vector{ComplexF64}
+

Get vector of complex values from DataBuffer.

Arguments

  • data: the DataBuffer

Returns

  • Vector{ComplexF64}
source
HELICS.helicsDataBufferToDoubleMethod
helicsDataBufferToDouble(data::HELICS.DataBuffer) -> Float64
+

Get data from DataBuffer as a double.

Arguments

  • data: the DataBuffer

Returns

  • Float64
source
HELICS.helicsDataBufferToIntegerMethod
helicsDataBufferToInteger(data::HELICS.DataBuffer) -> Int64
+

Get data from DataBuffer as an integer.

Arguments

  • data: the DataBuffer

Returns

  • Int64
source
HELICS.helicsDataBufferToNamedPointMethod
helicsDataBufferToNamedPoint(data::HELICS.DataBuffer) -> Tuple{String, Float64}
+

Get a named point from DataBuffer.

Arguments

  • data: the DataBuffer

Returns

  • Tuple{String, Float64}
source
HELICS.helicsDataBufferToTimeMethod
helicsDataBufferToTime(data::HELICS.DataBuffer) -> Float64
+

Get data from DataBuffer as a HELICS.HelicsTime.

Arguments

  • data: the DataBuffer

Returns

  • Float64
source
HELICS.helicsDataBufferToVectorMethod
helicsDataBufferToVector(data::HELICS.DataBuffer) -> Vector{Float64}
+

Get vector of doubles from DataBuffer.

Arguments

  • data: the DataBuffer

Returns

  • Vector{Float64}
source
HELICS.helicsDataBufferTypeMethod
helicsDataBufferType(data::HELICS.DataBuffer) -> Int64
+

return the an integer value of the data type of a DataBuffer.

Arguments

  • data: the DataBuffer

Returns

  • Int data type integer value.
source
HELICS.helicsDataBufferVectorSizeMethod
helicsDataBufferVectorSize(data::HELICS.DataBuffer) -> Int64
+

Get size of vector data size from DataBuffer.

Arguments

  • data: the DataBuffer

Returns

  • Int
source
HELICS.helicsDoubleToBytesMethod
helicsDoubleToBytes(value::Float64, data::HELICS.DataBuffer) -> Int32
+

convert a double to serialized bytes

Arguments

  • value: the Float64 to convert
  • data: the DataBuffer to hold the serialized bytes

Returns

  • Int32 Bytes serialized.
source
HELICS.helicsGetFederateByNameMethod
helicsGetFederateByName(fedName::String) -> HELICS.CombinationFederate
+

Get an existing Federate from a core by name

the Federate must have been created by one of the other functions and at least one of the objects referencing the created federate must still be active in the process

Arguments

  • fedName: the name of the Federate to retrieve

Returns

  • NULL if no fed is available by that name otherwise a Federate with that name
source
HELICS.helicsIntegerToBytesMethod
helicsIntegerToBytes(value::Int64, data::HELICS.DataBuffer) -> Int32
+

convert an integer to serialized bytes

Arguments

  • value: the Int64 to convert
  • data: the DataBuffer to hold the serialized bytes

Returns

  • Int32 Bytes serialized.
source
HELICS.helicsIsCoreTypeAvailableMethod
helicsIsCoreTypeAvailable(kind::String) -> Bool
+

Returns true if core/broker type specified is available in current compilation.

Arguments

  • type: a string representing a core type

Returns

  • a Bool

possible options include "test","zmq","udp","ipc","interprocess","tcp","default", "mpi"

source
HELICS.helicsLoadSignalHandlerMethod
helicsLoadSignalHandler()
+

Load a signal handler that handles Ctrl-C and shuts down all HELICS brokers, cores, and federates then exits the process

source
HELICS.helicsLoadSignalHandlerCallbackMethod
helicsLoadSignalHandlerCallback(handler::Ptr{Nothing}, useSeparateThread::Bool)
+

Load a custom signal handler to execute prior to the abort signal handler. @details This function is not 100% reliable it will most likely work but uses some functions and techniques that are not 100% guaranteed to work in a signal handler and in worst case it could deadlock. That is somewhat unlikely given usage patterns but it is possible. The callback has signature HelicsBool(*handler)(int) and it will take the SIGINT as an argument and return a boolean. If the boolean return value is HELICSTRUE (or the callback is null) the default signal handler is run after the callback finishes; if it is HELICSFALSE the default callback is not run and the default signal handler is executed. If the second argument is set to HELICSTRUE the default signal handler will execute in a separate thread(this may be a bad idea).

source
HELICS.helicsLoadSignalHandlerCallbackNoExitMethod
helicsLoadSignalHandlerCallbackNoExit(handler::Ptr{Nothing}, useSeparateThread::Bool)
+

Load a custom signal handler to execute prior to the abort signal handler. The signal handler does not call exit. @details This function is not 100% reliable. It will most likely work but uses some functions and techniques that are not 100% guaranteed to work in a signal handler and in worst case it could deadlock. That is somewhat unlikely given usage patterns but it is possible. The callback has signature HelicsBool(*handler)(int) and it will take the SIGINT as an argument and return a boolean. If the boolean return value is HELICSTRUE (or the callback is null) the no exit signal handler is run after the callback finishes; if it is HELICSFALSE the default callback is not run and the default signal handler is executed. If the second argument is set to HELICSTRUE the default signal handler will execute in a separate thread (this may be a bad idea).

source
HELICS.helicsLoadThreadedSignalHandlerMethod
helicsLoadThreadedSignalHandler()
+

Load a signal handler that handles Ctrl-C and shuts down all HELICS brokers, cores, and federates then exits the process. This operation will execute in a newly created and detached thread returning control back to the calling program before completing operations.

source
HELICS.helicsNamedPointToBytesMethod
helicsNamedPointToBytes(name::String, value::Int64, data::HELICS.DataBuffer)
+

convert a named point to serialized bytes

Arguments

  • name: the name of the point of doubles to convert
  • value: the integer value of the point to convert
  • data: the DataBuffer to hold the serialized bytes

Returns

  • Int32 Bytes serialized.
source
HELICS.helicsRawStringToBytesMethod
helicsRawStringToBytes(value::String, data::HELICS.DataBuffer)
+

convert a raw string to serialized bytes

Arguments

  • value: the raw string to convert
  • data: the DataBuffer to hold the serialized bytes

Returns

  • Int32 Bytes serialized.
source
HELICS.helicsStringToBytesMethod
helicsStringToBytes(value::String, data::HELICS.DataBuffer) -> Int32
+

convert a string to serialized bytes

Arguments

  • value: the string to convert
  • data: the DataBuffer to hold the serialized bytes

Returns

  • Int32 Bytes serialized.
source
HELICS.helicsTimeToBytesMethod
helicsTimeToBytes(value::Union{Float64, Int64}, data::HELICS.DataBuffer) -> Int32
+

convert a HelicsTime to serialized bytes

Arguments

  • value: the HelicsTime to convert
  • data: the DataBuffer to hold the serialized bytes

Returns

  • Int32 Bytes serialized.
source
HELICS.helicsTranslatorAddDestinationEndpointMethod
helicsTranslatorAddDestinationEndpoint(trans::HELICS.Translator, ept::String)
+

Add a destination target endpoint to a translator.

The translator will "translate" all message sent to it. This method adds an endpoint which will receive data published to the translator.

Arguments

  • trans: the Translator to modify
  • ept: The name of the endpoint the translator sends data to.
source
HELICS.helicsTranslatorAddInputTargetMethod
helicsTranslatorAddInputTarget(trans::HELICS.Translator, input::String)
+

Add an input to send a translator output.

All messages sent to a translator endpoint get translated and published to the translators target inputs. This method adds an input to a translators which will receive translated messages.

Arguments

  • trans: the Translator to add a destination target to.
  • input: The name of the input which will be receiving translated messages
source
HELICS.helicsTranslatorAddPublicationTargetMethod
helicsTranslatorAddPublicationTarget(trans::HELICS.Translator, pub::String)
+

Add a source publication target to a translator.

When a publication publishes data the translator will receive it and convert it to a message sent to a translators destination endpoints. This method adds a publication which publishes data the translator receives and sends to its destination endpoints.

Arguments

  • trans: the Translator to modify
  • pub: The name of the publication to subscribe.
source
HELICS.helicsTranslatorAddSourceEndpointMethod
helicsTranslatorAddSourceEndpoint(trans::HELICS.Translator, ept::String)
+

Add a source endpoint target to a translator.

The translator will "translate" all message sent to it. This method adds an endpoint which can send the translator data.

Arguments

  • trans: the Translator to modify
  • ept: The name of the endpoint which will send the endpoint data
source
HELICS.helicsTranslatorGetInfoMethod
helicsTranslatorGetInfo(trans::HELICS.Translator) -> String
+

Get the data in the info field of a translator.

Arguments

Returns

  • the info field string.
source
HELICS.helicsTranslatorGetNameMethod
helicsTranslatorGetName(trans::HELICS.Translator) -> String
+

Get the name of the translator and store in the given string.

Arguments

Returns

  • a string with the name of the translator
source
HELICS.helicsTranslatorGetOptionMethod
helicsTranslatorGetOption(trans::HELICS.Translator, option::Int64) -> Int64
+

Get a handle option for the translator.

Arguments

  • trans: the Translator to set the info field for.
  • option: The option to query /ref HelicsHandleOptions.
source
HELICS.helicsTranslatorGetTagMethod
helicsTranslatorGetTag(trans::HELICS.Translator, tagName::String) -> String
+

Get the data in a specified tag of a translator.

Arguments

-tagName: The name of the tag to query.

Returns

  • the string with the tag data.
source
HELICS.helicsTranslatorSetMethod
helicsTranslatorSet(trans::HELICS.Translator, prop::String, val::Float64)
+

Set a double property on a translator.

Arguments

  • trans: the Translator to modify
  • prop: A string containing the property to set.
  • val: A numerical value for the property.
source
HELICS.helicsTranslatorSetCustomCallbackMethod
helicsTranslatorSetCustomCallback(translator::HELICS.Translator, toMessageCall::Ptr{Nothing}, toValueCall::Ptr{Nothing}, userdata::Ptr{Nothing})
+

Set a general callback for a custom translator.

Add a pair of custom callbacks for running a translator operation in the C shared library.

Arguments

  • translator: the Translator to set a callback for.
  • toMessageCall: A callback with signature void(DataBuffer, HelicsMessage, void *); The function arguments are raw Value data, the messageObject to fill out and a pointer to user data.
  • toValueCall: A callback with signature void(HelicsMessage, DataBuffer, void *);
  •             The function arguments are a message object, the data buffer to fill out and a pointer to user data.
  • userdata: a point to user data that is passed to the function when executing
source
HELICS.helicsTranslatorSetInfoMethod
helicsTranslatorSetInfo(trans::HELICS.Translator, info::String)
+

Set the data in the info field for a translator.

Arguments

  • trans: the Translator to set the info field for.
  • info: the string to set.
source
HELICS.helicsTranslatorSetOptionMethod
helicsTranslatorSetOption(trans::HELICS.Translator, option::Int64, value::Int64)
+

Set an option value for a translator.

Arguments

  • trans: the Translator to set the option for
  • option: The option to set /ref HelicsHandleOptions.
  • value: The value of the option, commonly 0 for false or 1 for true.
source
HELICS.helicsTranslatorSetStringMethod
helicsTranslatorSetString(trans::HELICS.Translator, prop::String, val::String)
+

Set a string property on a translator.

Arguments

  • trans: the Translator to modify
  • prop: A string containing the property to set.
  • val: A string value for the property.
source
HELICS.helicsTranslatorSetTagMethod
helicsTranslatorSetTag(trans::HELICS.Translator, tagName::String, tagValue::String)
+

Set the data in a specific tag for a translator.

Arguments

  • trans: the Translator to set the tag for.
  • tagName: the tag to set.
  • tagValue: the string value to assocate with the tag.
source
HELICS.helicsVectorToBytesMethod
helicsVectorToBytes(value::Vector{Float64}, data::HELICS.DataBuffer) -> Int32
+

convert a vector of doubles to serialized bytes

Arguments

  • value: the vector of doubles to convert
  • data: the DataBuffer to hold the serialized bytes

Returns

  • Int32 Bytes serialized.
source

Types

Index

diff --git a/previews/PR33/assets/documenter.js b/previews/PR33/assets/documenter.js new file mode 100644 index 0000000..6adfbbb --- /dev/null +++ b/previews/PR33/assets/documenter.js @@ -0,0 +1,331 @@ +// Generated by Documenter.jl +requirejs.config({ + paths: { + 'highlight-julia': 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.5.1/languages/julia.min', + 'headroom': 'https://cdnjs.cloudflare.com/ajax/libs/headroom/0.12.0/headroom.min', + 'jqueryui': 'https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min', + 'katex-auto-render': 'https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.24/contrib/auto-render.min', + 'jquery': 'https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min', + 'headroom-jquery': 'https://cdnjs.cloudflare.com/ajax/libs/headroom/0.12.0/jQuery.headroom.min', + 'katex': 'https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.24/katex.min', + 'highlight': 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.5.1/highlight.min', + 'highlight-julia-repl': 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.5.1/languages/julia-repl.min', + }, + shim: { + "highlight-julia": { + "deps": [ + "highlight" + ] + }, + "katex-auto-render": { + "deps": [ + "katex" + ] + }, + "headroom-jquery": { + "deps": [ + "jquery", + "headroom" + ] + }, + "highlight-julia-repl": { + "deps": [ + "highlight" + ] + } +} +}); +//////////////////////////////////////////////////////////////////////////////// +require(['jquery', 'katex', 'katex-auto-render'], function($, katex, renderMathInElement) { +$(document).ready(function() { + renderMathInElement( + document.body, + { + "delimiters": [ + { + "left": "$", + "right": "$", + "display": false + }, + { + "left": "$$", + "right": "$$", + "display": true + }, + { + "left": "\\[", + "right": "\\]", + "display": true + } + ] +} + + ); +}) + +}) +//////////////////////////////////////////////////////////////////////////////// +require(['jquery', 'highlight', 'highlight-julia', 'highlight-julia-repl'], function($) { +$(document).ready(function() { + hljs.highlightAll(); +}) + +}) +//////////////////////////////////////////////////////////////////////////////// +require([], function() { +function addCopyButtonCallbacks() { + for (const el of document.getElementsByTagName("pre")) { + const button = document.createElement("button"); + button.classList.add("copy-button", "fas", "fa-copy"); + el.appendChild(button); + + const success = function () { + button.classList.add("success", "fa-check"); + button.classList.remove("fa-copy"); + }; + + const failure = function () { + button.classList.add("error", "fa-times"); + button.classList.remove("fa-copy"); + }; + + button.addEventListener("click", function () { + copyToClipboard(el.innerText).then(success, failure); + + setTimeout(function () { + button.classList.add("fa-copy"); + button.classList.remove("success", "fa-check", "fa-times"); + }, 5000); + }); + } +} + +function copyToClipboard(text) { + // clipboard API is only available in secure contexts + if (window.navigator && window.navigator.clipboard) { + return window.navigator.clipboard.writeText(text); + } else { + return new Promise(function (resolve, reject) { + try { + const el = document.createElement("textarea"); + el.textContent = text; + el.style.position = "fixed"; + el.style.opacity = 0; + document.body.appendChild(el); + el.select(); + document.execCommand("copy"); + + resolve(); + } catch (err) { + reject(err); + } finally { + document.body.removeChild(el); + } + }); + } +} + +if (document.readyState === "loading") { + document.addEventListener("DOMContentLoaded", addCopyButtonCallbacks); +} else { + addCopyButtonCallbacks(); +} + +}) +//////////////////////////////////////////////////////////////////////////////// +require(['jquery', 'headroom', 'headroom-jquery'], function($, Headroom) { + +// Manages the top navigation bar (hides it when the user starts scrolling down on the +// mobile). +window.Headroom = Headroom; // work around buggy module loading? +$(document).ready(function() { + $('#documenter .docs-navbar').headroom({ + "tolerance": {"up": 10, "down": 10}, + }); +}) + +}) +//////////////////////////////////////////////////////////////////////////////// +require(['jquery'], function($) { + +// Modal settings dialog +$(document).ready(function() { + var settings = $('#documenter-settings'); + $('#documenter-settings-button').click(function(){ + settings.toggleClass('is-active'); + }); + // Close the dialog if X is clicked + $('#documenter-settings button.delete').click(function(){ + settings.removeClass('is-active'); + }); + // Close dialog if ESC is pressed + $(document).keyup(function(e) { + if (e.keyCode == 27) settings.removeClass('is-active'); + }); +}); + +}) +//////////////////////////////////////////////////////////////////////////////// +require(['jquery'], function($) { + +// Manages the showing and hiding of the sidebar. +$(document).ready(function() { + var sidebar = $("#documenter > .docs-sidebar"); + var sidebar_button = $("#documenter-sidebar-button") + sidebar_button.click(function(ev) { + ev.preventDefault(); + sidebar.toggleClass('visible'); + if (sidebar.hasClass('visible')) { + // Makes sure that the current menu item is visible in the sidebar. + $("#documenter .docs-menu a.is-active").focus(); + } + }); + $("#documenter > .docs-main").bind('click', function(ev) { + if ($(ev.target).is(sidebar_button)) { + return; + } + if (sidebar.hasClass('visible')) { + sidebar.removeClass('visible'); + } + }); +}) + +// Resizes the package name / sitename in the sidebar if it is too wide. +// Inspired by: https://github.com/davatron5000/FitText.js +$(document).ready(function() { + e = $("#documenter .docs-autofit"); + function resize() { + var L = parseInt(e.css('max-width'), 10); + var L0 = e.width(); + if(L0 > L) { + var h0 = parseInt(e.css('font-size'), 10); + e.css('font-size', L * h0 / L0); + // TODO: make sure it survives resizes? + } + } + // call once and then register events + resize(); + $(window).resize(resize); + $(window).on('orientationchange', resize); +}); + +// Scroll the navigation bar to the currently selected menu item +$(document).ready(function() { + var sidebar = $("#documenter .docs-menu").get(0); + var active = $("#documenter .docs-menu .is-active").get(0); + if(typeof active !== 'undefined') { + sidebar.scrollTop = active.offsetTop - sidebar.offsetTop - 15; + } +}) + +}) +//////////////////////////////////////////////////////////////////////////////// +require(['jquery'], function($) { + +function set_theme(theme) { + var active = null; + var disabled = []; + for (var i = 0; i < document.styleSheets.length; i++) { + var ss = document.styleSheets[i]; + var themename = ss.ownerNode.getAttribute("data-theme-name"); + if(themename === null) continue; // ignore non-theme stylesheets + // Find the active theme + if(themename === theme) active = ss; + else disabled.push(ss); + } + if(active !== null) { + active.disabled = false; + if(active.ownerNode.getAttribute("data-theme-primary") === null) { + document.getElementsByTagName('html')[0].className = "theme--" + theme; + } else { + document.getElementsByTagName('html')[0].className = ""; + } + disabled.forEach(function(ss){ + ss.disabled = true; + }); + } + + // Store the theme in localStorage + if(typeof(window.localStorage) !== "undefined") { + window.localStorage.setItem("documenter-theme", theme); + } else { + console.error("Browser does not support window.localStorage"); + } +} + +// Theme picker setup +$(document).ready(function() { + // onchange callback + $('#documenter-themepicker').change(function themepick_callback(ev){ + var themename = $('#documenter-themepicker option:selected').attr('value'); + set_theme(themename); + }); + + // Make sure that the themepicker displays the correct theme when the theme is retrieved + // from localStorage + if(typeof(window.localStorage) !== "undefined") { + var theme = window.localStorage.getItem("documenter-theme"); + if(theme !== null) { + $('#documenter-themepicker option').each(function(i,e) { + e.selected = (e.value === theme); + }) + } else { + $('#documenter-themepicker option').each(function(i,e) { + e.selected = $("html").hasClass(`theme--${e.value}`); + }) + } + } +}) + +}) +//////////////////////////////////////////////////////////////////////////////// +require(['jquery'], function($) { + +// update the version selector with info from the siteinfo.js and ../versions.js files +$(document).ready(function() { + // If the version selector is disabled with DOCUMENTER_VERSION_SELECTOR_DISABLED in the + // siteinfo.js file, we just return immediately and not display the version selector. + if (typeof DOCUMENTER_VERSION_SELECTOR_DISABLED === 'boolean' && DOCUMENTER_VERSION_SELECTOR_DISABLED) { + return; + } + + var version_selector = $("#documenter .docs-version-selector"); + var version_selector_select = $("#documenter .docs-version-selector select"); + + version_selector_select.change(function(x) { + target_href = version_selector_select.children("option:selected").get(0).value; + window.location.href = target_href; + }); + + // add the current version to the selector based on siteinfo.js, but only if the selector is empty + if (typeof DOCUMENTER_CURRENT_VERSION !== 'undefined' && $('#version-selector > option').length == 0) { + var option = $(""); + version_selector_select.append(option); + } + + if (typeof DOC_VERSIONS !== 'undefined') { + var existing_versions = version_selector_select.children("option"); + var existing_versions_texts = existing_versions.map(function(i,x){return x.text}); + DOC_VERSIONS.forEach(function(each) { + var version_url = documenterBaseURL + "/../" + each; + var existing_id = $.inArray(each, existing_versions_texts); + // if not already in the version selector, add it as a new option, + // otherwise update the old option with the URL and enable it + if (existing_id == -1) { + var option = $(""); + version_selector_select.append(option); + } else { + var option = existing_versions[existing_id]; + option.value = version_url; + option.disabled = false; + } + }); + } + + // only show the version selector if the selector has been populated + if (version_selector_select.children("option").length > 0) { + version_selector.toggleClass("visible"); + } +}) + +}) diff --git a/previews/PR33/assets/search.js b/previews/PR33/assets/search.js new file mode 100644 index 0000000..c133f74 --- /dev/null +++ b/previews/PR33/assets/search.js @@ -0,0 +1,267 @@ +// Generated by Documenter.jl +requirejs.config({ + paths: { + 'lunr': 'https://cdnjs.cloudflare.com/ajax/libs/lunr.js/2.3.9/lunr.min', + 'lodash': 'https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.21/lodash.min', + 'jquery': 'https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min', + } +}); +//////////////////////////////////////////////////////////////////////////////// +require(['jquery', 'lunr', 'lodash'], function($, lunr, _) { + +$(document).ready(function() { + // parseUri 1.2.2 + // (c) Steven Levithan + // MIT License + function parseUri (str) { + var o = parseUri.options, + m = o.parser[o.strictMode ? "strict" : "loose"].exec(str), + uri = {}, + i = 14; + + while (i--) uri[o.key[i]] = m[i] || ""; + + uri[o.q.name] = {}; + uri[o.key[12]].replace(o.q.parser, function ($0, $1, $2) { + if ($1) uri[o.q.name][$1] = $2; + }); + + return uri; + }; + parseUri.options = { + strictMode: false, + key: ["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"], + q: { + name: "queryKey", + parser: /(?:^|&)([^&=]*)=?([^&]*)/g + }, + parser: { + strict: /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/, + loose: /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/ + } + }; + + $("#search-form").submit(function(e) { + e.preventDefault() + }) + + // list below is the lunr 2.1.3 list minus the intersect with names(Base) + // (all, any, get, in, is, only, which) and (do, else, for, let, where, while, with) + // ideally we'd just filter the original list but it's not available as a variable + lunr.stopWordFilter = lunr.generateStopWordFilter([ + 'a', + 'able', + 'about', + 'across', + 'after', + 'almost', + 'also', + 'am', + 'among', + 'an', + 'and', + 'are', + 'as', + 'at', + 'be', + 'because', + 'been', + 'but', + 'by', + 'can', + 'cannot', + 'could', + 'dear', + 'did', + 'does', + 'either', + 'ever', + 'every', + 'from', + 'got', + 'had', + 'has', + 'have', + 'he', + 'her', + 'hers', + 'him', + 'his', + 'how', + 'however', + 'i', + 'if', + 'into', + 'it', + 'its', + 'just', + 'least', + 'like', + 'likely', + 'may', + 'me', + 'might', + 'most', + 'must', + 'my', + 'neither', + 'no', + 'nor', + 'not', + 'of', + 'off', + 'often', + 'on', + 'or', + 'other', + 'our', + 'own', + 'rather', + 'said', + 'say', + 'says', + 'she', + 'should', + 'since', + 'so', + 'some', + 'than', + 'that', + 'the', + 'their', + 'them', + 'then', + 'there', + 'these', + 'they', + 'this', + 'tis', + 'to', + 'too', + 'twas', + 'us', + 'wants', + 'was', + 'we', + 'were', + 'what', + 'when', + 'who', + 'whom', + 'why', + 'will', + 'would', + 'yet', + 'you', + 'your' + ]) + + // add . as a separator, because otherwise "title": "Documenter.Anchors.add!" + // would not find anything if searching for "add!", only for the entire qualification + lunr.tokenizer.separator = /[\s\-\.]+/ + + // custom trimmer that doesn't strip @ and !, which are used in julia macro and function names + lunr.trimmer = function (token) { + return token.update(function (s) { + return s.replace(/^[^a-zA-Z0-9@!]+/, '').replace(/[^a-zA-Z0-9@!]+$/, '') + }) + } + + lunr.Pipeline.registerFunction(lunr.stopWordFilter, 'juliaStopWordFilter') + lunr.Pipeline.registerFunction(lunr.trimmer, 'juliaTrimmer') + + var index = lunr(function () { + this.ref('location') + this.field('title',{boost: 100}) + this.field('text') + documenterSearchIndex['docs'].forEach(function(e) { + this.add(e) + }, this) + }) + var store = {} + + documenterSearchIndex['docs'].forEach(function(e) { + store[e.location] = {title: e.title, category: e.category, page: e.page} + }) + + $(function(){ + searchresults = $('#documenter-search-results'); + searchinfo = $('#documenter-search-info'); + searchbox = $('#documenter-search-query'); + searchform = $('.docs-search'); + sidebar = $('.docs-sidebar'); + function update_search(querystring) { + tokens = lunr.tokenizer(querystring) + results = index.query(function (q) { + tokens.forEach(function (t) { + q.term(t.toString(), { + fields: ["title"], + boost: 100, + usePipeline: true, + editDistance: 0, + wildcard: lunr.Query.wildcard.NONE + }) + q.term(t.toString(), { + fields: ["title"], + boost: 10, + usePipeline: true, + editDistance: 2, + wildcard: lunr.Query.wildcard.NONE + }) + q.term(t.toString(), { + fields: ["text"], + boost: 1, + usePipeline: true, + editDistance: 0, + wildcard: lunr.Query.wildcard.NONE + }) + }) + }) + searchinfo.text("Number of results: " + results.length) + searchresults.empty() + results.forEach(function(result) { + data = store[result.ref] + link = $(''+data.title+'') + link.attr('href', documenterBaseURL+'/'+result.ref) + if (data.category != "page"){ + cat = $('('+data.category+', '+data.page+')') + } else { + cat = $('('+data.category+')') + } + li = $('
  • ').append(link).append(" ").append(cat) + searchresults.append(li) + }) + } + + function update_search_box() { + querystring = searchbox.val() + update_search(querystring) + } + + searchbox.keyup(_.debounce(update_search_box, 250)) + searchbox.change(update_search_box) + + // Disable enter-key form submission for the searchbox on the search page + // and just re-run search rather than refresh the whole page. + searchform.keypress( + function(event){ + if (event.which == '13') { + if (sidebar.hasClass('visible')) { + sidebar.removeClass('visible'); + } + update_search_box(); + event.preventDefault(); + } + } + ); + + search_query_uri = parseUri(window.location).queryKey["q"] + if(search_query_uri !== undefined) { + search_query = decodeURIComponent(search_query_uri.replace(/\+/g, '%20')) + searchbox.val(search_query) + } + update_search_box(); + }) +}) + +}) diff --git a/previews/PR33/assets/themes/documenter-dark.css b/previews/PR33/assets/themes/documenter-dark.css new file mode 100644 index 0000000..c94a294 --- /dev/null +++ b/previews/PR33/assets/themes/documenter-dark.css @@ -0,0 +1,7 @@ +@keyframes spinAround{from{transform:rotate(0deg)}to{transform:rotate(359deg)}}html.theme--documenter-dark .tabs,html.theme--documenter-dark .pagination-previous,html.theme--documenter-dark .pagination-next,html.theme--documenter-dark .pagination-link,html.theme--documenter-dark .pagination-ellipsis,html.theme--documenter-dark .breadcrumb,html.theme--documenter-dark .file,html.theme--documenter-dark .button,.is-unselectable,html.theme--documenter-dark .modal-close,html.theme--documenter-dark .delete{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}html.theme--documenter-dark .navbar-link:not(.is-arrowless)::after,html.theme--documenter-dark .select:not(.is-multiple):not(.is-loading)::after{border:3px solid rgba(0,0,0,0);border-radius:2px;border-right:0;border-top:0;content:" ";display:block;height:0.625em;margin-top:-0.4375em;pointer-events:none;position:absolute;top:50%;transform:rotate(-45deg);transform-origin:center;width:0.625em}html.theme--documenter-dark .admonition:not(:last-child),html.theme--documenter-dark .tabs:not(:last-child),html.theme--documenter-dark .message:not(:last-child),html.theme--documenter-dark .list:not(:last-child),html.theme--documenter-dark .level:not(:last-child),html.theme--documenter-dark .breadcrumb:not(:last-child),html.theme--documenter-dark .highlight:not(:last-child),html.theme--documenter-dark .block:not(:last-child),html.theme--documenter-dark .title:not(:last-child),html.theme--documenter-dark .subtitle:not(:last-child),html.theme--documenter-dark .table-container:not(:last-child),html.theme--documenter-dark .table:not(:last-child),html.theme--documenter-dark .progress:not(:last-child),html.theme--documenter-dark .notification:not(:last-child),html.theme--documenter-dark .content:not(:last-child),html.theme--documenter-dark .box:not(:last-child){margin-bottom:1.5rem}html.theme--documenter-dark .modal-close,html.theme--documenter-dark .delete{-moz-appearance:none;-webkit-appearance:none;background-color:rgba(10,10,10,0.2);border:none;border-radius:290486px;cursor:pointer;pointer-events:auto;display:inline-block;flex-grow:0;flex-shrink:0;font-size:0;height:20px;max-height:20px;max-width:20px;min-height:20px;min-width:20px;outline:none;position:relative;vertical-align:top;width:20px}html.theme--documenter-dark .modal-close::before,html.theme--documenter-dark .delete::before,html.theme--documenter-dark .modal-close::after,html.theme--documenter-dark .delete::after{background-color:#fff;content:"";display:block;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) rotate(45deg);transform-origin:center center}html.theme--documenter-dark .modal-close::before,html.theme--documenter-dark .delete::before{height:2px;width:50%}html.theme--documenter-dark .modal-close::after,html.theme--documenter-dark .delete::after{height:50%;width:2px}html.theme--documenter-dark .modal-close:hover,html.theme--documenter-dark .delete:hover,html.theme--documenter-dark .modal-close:focus,html.theme--documenter-dark .delete:focus{background-color:rgba(10,10,10,0.3)}html.theme--documenter-dark .modal-close:active,html.theme--documenter-dark .delete:active{background-color:rgba(10,10,10,0.4)}html.theme--documenter-dark .is-small.modal-close,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.modal-close,html.theme--documenter-dark .is-small.delete,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.delete{height:16px;max-height:16px;max-width:16px;min-height:16px;min-width:16px;width:16px}html.theme--documenter-dark .is-medium.modal-close,html.theme--documenter-dark .is-medium.delete{height:24px;max-height:24px;max-width:24px;min-height:24px;min-width:24px;width:24px}html.theme--documenter-dark .is-large.modal-close,html.theme--documenter-dark .is-large.delete{height:32px;max-height:32px;max-width:32px;min-height:32px;min-width:32px;width:32px}html.theme--documenter-dark .control.is-loading::after,html.theme--documenter-dark .select.is-loading::after,html.theme--documenter-dark .loader,html.theme--documenter-dark .button.is-loading::after{animation:spinAround 500ms infinite linear;border:2px solid #dbdee0;border-radius:290486px;border-right-color:transparent;border-top-color:transparent;content:"";display:block;height:1em;position:relative;width:1em}html.theme--documenter-dark .hero-video,html.theme--documenter-dark .modal-background,html.theme--documenter-dark .modal,html.theme--documenter-dark .image.is-square img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-square img,html.theme--documenter-dark .image.is-square .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-square .has-ratio,html.theme--documenter-dark .image.is-1by1 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by1 img,html.theme--documenter-dark .image.is-1by1 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by1 .has-ratio,html.theme--documenter-dark .image.is-5by4 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-5by4 img,html.theme--documenter-dark .image.is-5by4 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-5by4 .has-ratio,html.theme--documenter-dark .image.is-4by3 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-4by3 img,html.theme--documenter-dark .image.is-4by3 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-4by3 .has-ratio,html.theme--documenter-dark .image.is-3by2 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by2 img,html.theme--documenter-dark .image.is-3by2 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by2 .has-ratio,html.theme--documenter-dark .image.is-5by3 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-5by3 img,html.theme--documenter-dark .image.is-5by3 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-5by3 .has-ratio,html.theme--documenter-dark .image.is-16by9 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-16by9 img,html.theme--documenter-dark .image.is-16by9 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-16by9 .has-ratio,html.theme--documenter-dark .image.is-2by1 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-2by1 img,html.theme--documenter-dark .image.is-2by1 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-2by1 .has-ratio,html.theme--documenter-dark .image.is-3by1 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by1 img,html.theme--documenter-dark .image.is-3by1 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by1 .has-ratio,html.theme--documenter-dark .image.is-4by5 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-4by5 img,html.theme--documenter-dark .image.is-4by5 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-4by5 .has-ratio,html.theme--documenter-dark .image.is-3by4 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by4 img,html.theme--documenter-dark .image.is-3by4 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by4 .has-ratio,html.theme--documenter-dark .image.is-2by3 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-2by3 img,html.theme--documenter-dark .image.is-2by3 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-2by3 .has-ratio,html.theme--documenter-dark .image.is-3by5 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by5 img,html.theme--documenter-dark .image.is-3by5 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by5 .has-ratio,html.theme--documenter-dark .image.is-9by16 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-9by16 img,html.theme--documenter-dark .image.is-9by16 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-9by16 .has-ratio,html.theme--documenter-dark .image.is-1by2 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by2 img,html.theme--documenter-dark .image.is-1by2 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by2 .has-ratio,html.theme--documenter-dark .image.is-1by3 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by3 img,html.theme--documenter-dark .image.is-1by3 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by3 .has-ratio,.is-overlay{bottom:0;left:0;position:absolute;right:0;top:0}html.theme--documenter-dark .pagination-previous,html.theme--documenter-dark .pagination-next,html.theme--documenter-dark .pagination-link,html.theme--documenter-dark .pagination-ellipsis,html.theme--documenter-dark .file-cta,html.theme--documenter-dark .file-name,html.theme--documenter-dark .select select,html.theme--documenter-dark .textarea,html.theme--documenter-dark .input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input,html.theme--documenter-dark .button{-moz-appearance:none;-webkit-appearance:none;align-items:center;border:1px solid transparent;border-radius:.4em;box-shadow:none;display:inline-flex;font-size:15px;height:2.25em;justify-content:flex-start;line-height:1.5;padding-bottom:calc(0.375em - 1px);padding-left:calc(0.625em - 1px);padding-right:calc(0.625em - 1px);padding-top:calc(0.375em - 1px);position:relative;vertical-align:top}html.theme--documenter-dark .pagination-previous:focus,html.theme--documenter-dark .pagination-next:focus,html.theme--documenter-dark .pagination-link:focus,html.theme--documenter-dark .pagination-ellipsis:focus,html.theme--documenter-dark .file-cta:focus,html.theme--documenter-dark .file-name:focus,html.theme--documenter-dark .select select:focus,html.theme--documenter-dark .textarea:focus,html.theme--documenter-dark .input:focus,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input:focus,html.theme--documenter-dark .button:focus,html.theme--documenter-dark .is-focused.pagination-previous,html.theme--documenter-dark .is-focused.pagination-next,html.theme--documenter-dark .is-focused.pagination-link,html.theme--documenter-dark .is-focused.pagination-ellipsis,html.theme--documenter-dark .is-focused.file-cta,html.theme--documenter-dark .is-focused.file-name,html.theme--documenter-dark .select select.is-focused,html.theme--documenter-dark .is-focused.textarea,html.theme--documenter-dark .is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .is-focused.button,html.theme--documenter-dark .pagination-previous:active,html.theme--documenter-dark .pagination-next:active,html.theme--documenter-dark .pagination-link:active,html.theme--documenter-dark .pagination-ellipsis:active,html.theme--documenter-dark .file-cta:active,html.theme--documenter-dark .file-name:active,html.theme--documenter-dark .select select:active,html.theme--documenter-dark .textarea:active,html.theme--documenter-dark .input:active,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input:active,html.theme--documenter-dark .button:active,html.theme--documenter-dark .is-active.pagination-previous,html.theme--documenter-dark .is-active.pagination-next,html.theme--documenter-dark .is-active.pagination-link,html.theme--documenter-dark .is-active.pagination-ellipsis,html.theme--documenter-dark .is-active.file-cta,html.theme--documenter-dark .is-active.file-name,html.theme--documenter-dark .select select.is-active,html.theme--documenter-dark .is-active.textarea,html.theme--documenter-dark .is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active,html.theme--documenter-dark .is-active.button{outline:none}html.theme--documenter-dark .pagination-previous[disabled],html.theme--documenter-dark .pagination-next[disabled],html.theme--documenter-dark .pagination-link[disabled],html.theme--documenter-dark .pagination-ellipsis[disabled],html.theme--documenter-dark .file-cta[disabled],html.theme--documenter-dark .file-name[disabled],html.theme--documenter-dark .select select[disabled],html.theme--documenter-dark .textarea[disabled],html.theme--documenter-dark .input[disabled],html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input[disabled],html.theme--documenter-dark .button[disabled],fieldset[disabled] html.theme--documenter-dark .pagination-previous,html.theme--documenter-dark fieldset[disabled] .pagination-previous,fieldset[disabled] html.theme--documenter-dark .pagination-next,html.theme--documenter-dark fieldset[disabled] .pagination-next,fieldset[disabled] html.theme--documenter-dark .pagination-link,html.theme--documenter-dark fieldset[disabled] .pagination-link,fieldset[disabled] html.theme--documenter-dark .pagination-ellipsis,html.theme--documenter-dark fieldset[disabled] .pagination-ellipsis,fieldset[disabled] html.theme--documenter-dark .file-cta,html.theme--documenter-dark fieldset[disabled] .file-cta,fieldset[disabled] html.theme--documenter-dark .file-name,html.theme--documenter-dark fieldset[disabled] .file-name,fieldset[disabled] html.theme--documenter-dark .select select,fieldset[disabled] html.theme--documenter-dark .textarea,fieldset[disabled] html.theme--documenter-dark .input,fieldset[disabled] html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input,html.theme--documenter-dark fieldset[disabled] .select select,html.theme--documenter-dark .select fieldset[disabled] select,html.theme--documenter-dark fieldset[disabled] .textarea,html.theme--documenter-dark fieldset[disabled] .input,html.theme--documenter-dark fieldset[disabled] #documenter .docs-sidebar form.docs-search>input,html.theme--documenter-dark #documenter .docs-sidebar fieldset[disabled] form.docs-search>input,fieldset[disabled] html.theme--documenter-dark .button,html.theme--documenter-dark fieldset[disabled] .button{cursor:not-allowed}/*! minireset.css v0.0.4 | MIT License | github.com/jgthms/minireset.css */html,body,p,ol,ul,li,dl,dt,dd,blockquote,figure,fieldset,legend,textarea,pre,iframe,hr,h1,h2,h3,h4,h5,h6{margin:0;padding:0}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal}ul{list-style:none}button,input,select,textarea{margin:0}html{box-sizing:border-box}*,*::before,*::after{box-sizing:inherit}img,embed,iframe,object,video{height:auto;max-width:100%}audio{max-width:100%}iframe{border:0}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}td:not([align]),th:not([align]){text-align:left}.is-clearfix::after{clear:both;content:" ";display:table}.is-pulled-left{float:left !important}.is-pulled-right{float:right !important}.is-clipped{overflow:hidden !important}.is-size-1{font-size:3rem !important}.is-size-2{font-size:2.5rem !important}.is-size-3{font-size:2rem !important}.is-size-4{font-size:1.5rem !important}.is-size-5{font-size:1.25rem !important}.is-size-6{font-size:15px !important}.is-size-7,html.theme--documenter-dark .docstring>section>a.docs-sourcelink{font-size:.85em !important}@media screen and (max-width: 768px){.is-size-1-mobile{font-size:3rem !important}.is-size-2-mobile{font-size:2.5rem !important}.is-size-3-mobile{font-size:2rem !important}.is-size-4-mobile{font-size:1.5rem !important}.is-size-5-mobile{font-size:1.25rem !important}.is-size-6-mobile{font-size:15px !important}.is-size-7-mobile{font-size:.85em !important}}@media screen and (min-width: 769px),print{.is-size-1-tablet{font-size:3rem !important}.is-size-2-tablet{font-size:2.5rem !important}.is-size-3-tablet{font-size:2rem !important}.is-size-4-tablet{font-size:1.5rem !important}.is-size-5-tablet{font-size:1.25rem !important}.is-size-6-tablet{font-size:15px !important}.is-size-7-tablet{font-size:.85em !important}}@media screen and (max-width: 1055px){.is-size-1-touch{font-size:3rem !important}.is-size-2-touch{font-size:2.5rem !important}.is-size-3-touch{font-size:2rem !important}.is-size-4-touch{font-size:1.5rem !important}.is-size-5-touch{font-size:1.25rem !important}.is-size-6-touch{font-size:15px !important}.is-size-7-touch{font-size:.85em !important}}@media screen and (min-width: 1056px){.is-size-1-desktop{font-size:3rem !important}.is-size-2-desktop{font-size:2.5rem !important}.is-size-3-desktop{font-size:2rem !important}.is-size-4-desktop{font-size:1.5rem !important}.is-size-5-desktop{font-size:1.25rem !important}.is-size-6-desktop{font-size:15px !important}.is-size-7-desktop{font-size:.85em !important}}@media screen and (min-width: 1216px){.is-size-1-widescreen{font-size:3rem !important}.is-size-2-widescreen{font-size:2.5rem !important}.is-size-3-widescreen{font-size:2rem !important}.is-size-4-widescreen{font-size:1.5rem !important}.is-size-5-widescreen{font-size:1.25rem !important}.is-size-6-widescreen{font-size:15px !important}.is-size-7-widescreen{font-size:.85em !important}}@media screen and (min-width: 1408px){.is-size-1-fullhd{font-size:3rem !important}.is-size-2-fullhd{font-size:2.5rem !important}.is-size-3-fullhd{font-size:2rem !important}.is-size-4-fullhd{font-size:1.5rem !important}.is-size-5-fullhd{font-size:1.25rem !important}.is-size-6-fullhd{font-size:15px !important}.is-size-7-fullhd{font-size:.85em !important}}.has-text-centered{text-align:center !important}.has-text-justified{text-align:justify !important}.has-text-left{text-align:left !important}.has-text-right{text-align:right !important}@media screen and (max-width: 768px){.has-text-centered-mobile{text-align:center !important}}@media screen and (min-width: 769px),print{.has-text-centered-tablet{text-align:center !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-centered-tablet-only{text-align:center !important}}@media screen and (max-width: 1055px){.has-text-centered-touch{text-align:center !important}}@media screen and (min-width: 1056px){.has-text-centered-desktop{text-align:center !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-centered-desktop-only{text-align:center !important}}@media screen and (min-width: 1216px){.has-text-centered-widescreen{text-align:center !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-centered-widescreen-only{text-align:center !important}}@media screen and (min-width: 1408px){.has-text-centered-fullhd{text-align:center !important}}@media screen and (max-width: 768px){.has-text-justified-mobile{text-align:justify !important}}@media screen and (min-width: 769px),print{.has-text-justified-tablet{text-align:justify !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-justified-tablet-only{text-align:justify !important}}@media screen and (max-width: 1055px){.has-text-justified-touch{text-align:justify !important}}@media screen and (min-width: 1056px){.has-text-justified-desktop{text-align:justify !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-justified-desktop-only{text-align:justify !important}}@media screen and (min-width: 1216px){.has-text-justified-widescreen{text-align:justify !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-justified-widescreen-only{text-align:justify !important}}@media screen and (min-width: 1408px){.has-text-justified-fullhd{text-align:justify !important}}@media screen and (max-width: 768px){.has-text-left-mobile{text-align:left !important}}@media screen and (min-width: 769px),print{.has-text-left-tablet{text-align:left !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-left-tablet-only{text-align:left !important}}@media screen and (max-width: 1055px){.has-text-left-touch{text-align:left !important}}@media screen and (min-width: 1056px){.has-text-left-desktop{text-align:left !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-left-desktop-only{text-align:left !important}}@media screen and (min-width: 1216px){.has-text-left-widescreen{text-align:left !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-left-widescreen-only{text-align:left !important}}@media screen and (min-width: 1408px){.has-text-left-fullhd{text-align:left !important}}@media screen and (max-width: 768px){.has-text-right-mobile{text-align:right !important}}@media screen and (min-width: 769px),print{.has-text-right-tablet{text-align:right !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-right-tablet-only{text-align:right !important}}@media screen and (max-width: 1055px){.has-text-right-touch{text-align:right !important}}@media screen and (min-width: 1056px){.has-text-right-desktop{text-align:right !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-right-desktop-only{text-align:right !important}}@media screen and (min-width: 1216px){.has-text-right-widescreen{text-align:right !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-right-widescreen-only{text-align:right !important}}@media screen and (min-width: 1408px){.has-text-right-fullhd{text-align:right !important}}.is-capitalized{text-transform:capitalize !important}.is-lowercase{text-transform:lowercase !important}.is-uppercase{text-transform:uppercase !important}.is-italic{font-style:italic !important}.has-text-white{color:#fff !important}a.has-text-white:hover,a.has-text-white:focus{color:#e6e6e6 !important}.has-background-white{background-color:#fff !important}.has-text-black{color:#0a0a0a !important}a.has-text-black:hover,a.has-text-black:focus{color:#000 !important}.has-background-black{background-color:#0a0a0a !important}.has-text-light{color:#ecf0f1 !important}a.has-text-light:hover,a.has-text-light:focus{color:#cfd9db !important}.has-background-light{background-color:#ecf0f1 !important}.has-text-dark{color:#282f2f !important}a.has-text-dark:hover,a.has-text-dark:focus{color:#111414 !important}.has-background-dark{background-color:#282f2f !important}.has-text-primary{color:#375a7f !important}a.has-text-primary:hover,a.has-text-primary:focus{color:#28415b !important}.has-background-primary{background-color:#375a7f !important}.has-text-link{color:#1abc9c !important}a.has-text-link:hover,a.has-text-link:focus{color:#148f77 !important}.has-background-link{background-color:#1abc9c !important}.has-text-info{color:#024c7d !important}a.has-text-info:hover,a.has-text-info:focus{color:#012d4b !important}.has-background-info{background-color:#024c7d !important}.has-text-success{color:#008438 !important}a.has-text-success:hover,a.has-text-success:focus{color:#005122 !important}.has-background-success{background-color:#008438 !important}.has-text-warning{color:#ad8100 !important}a.has-text-warning:hover,a.has-text-warning:focus{color:#7a5b00 !important}.has-background-warning{background-color:#ad8100 !important}.has-text-danger{color:#9e1b0d !important}a.has-text-danger:hover,a.has-text-danger:focus{color:#6f1309 !important}.has-background-danger{background-color:#9e1b0d !important}.has-text-black-bis{color:#121212 !important}.has-background-black-bis{background-color:#121212 !important}.has-text-black-ter{color:#242424 !important}.has-background-black-ter{background-color:#242424 !important}.has-text-grey-darker{color:#282f2f !important}.has-background-grey-darker{background-color:#282f2f !important}.has-text-grey-dark{color:#343c3d !important}.has-background-grey-dark{background-color:#343c3d !important}.has-text-grey{color:#5e6d6f !important}.has-background-grey{background-color:#5e6d6f !important}.has-text-grey-light{color:#8c9b9d !important}.has-background-grey-light{background-color:#8c9b9d !important}.has-text-grey-lighter{color:#dbdee0 !important}.has-background-grey-lighter{background-color:#dbdee0 !important}.has-text-white-ter{color:#ecf0f1 !important}.has-background-white-ter{background-color:#ecf0f1 !important}.has-text-white-bis{color:#fafafa !important}.has-background-white-bis{background-color:#fafafa !important}.has-text-weight-light{font-weight:300 !important}.has-text-weight-normal{font-weight:400 !important}.has-text-weight-medium{font-weight:500 !important}.has-text-weight-semibold{font-weight:600 !important}.has-text-weight-bold{font-weight:700 !important}.is-family-primary{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif !important}.is-family-secondary{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif !important}.is-family-sans-serif{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif !important}.is-family-monospace{font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace !important}.is-family-code{font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace !important}.is-block{display:block !important}@media screen and (max-width: 768px){.is-block-mobile{display:block !important}}@media screen and (min-width: 769px),print{.is-block-tablet{display:block !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-block-tablet-only{display:block !important}}@media screen and (max-width: 1055px){.is-block-touch{display:block !important}}@media screen and (min-width: 1056px){.is-block-desktop{display:block !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-block-desktop-only{display:block !important}}@media screen and (min-width: 1216px){.is-block-widescreen{display:block !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-block-widescreen-only{display:block !important}}@media screen and (min-width: 1408px){.is-block-fullhd{display:block !important}}.is-flex{display:flex !important}@media screen and (max-width: 768px){.is-flex-mobile{display:flex !important}}@media screen and (min-width: 769px),print{.is-flex-tablet{display:flex !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-flex-tablet-only{display:flex !important}}@media screen and (max-width: 1055px){.is-flex-touch{display:flex !important}}@media screen and (min-width: 1056px){.is-flex-desktop{display:flex !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-flex-desktop-only{display:flex !important}}@media screen and (min-width: 1216px){.is-flex-widescreen{display:flex !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-flex-widescreen-only{display:flex !important}}@media screen and (min-width: 1408px){.is-flex-fullhd{display:flex !important}}.is-inline{display:inline !important}@media screen and (max-width: 768px){.is-inline-mobile{display:inline !important}}@media screen and (min-width: 769px),print{.is-inline-tablet{display:inline !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-inline-tablet-only{display:inline !important}}@media screen and (max-width: 1055px){.is-inline-touch{display:inline !important}}@media screen and (min-width: 1056px){.is-inline-desktop{display:inline !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-inline-desktop-only{display:inline !important}}@media screen and (min-width: 1216px){.is-inline-widescreen{display:inline !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-inline-widescreen-only{display:inline !important}}@media screen and (min-width: 1408px){.is-inline-fullhd{display:inline !important}}.is-inline-block{display:inline-block !important}@media screen and (max-width: 768px){.is-inline-block-mobile{display:inline-block !important}}@media screen and (min-width: 769px),print{.is-inline-block-tablet{display:inline-block !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-inline-block-tablet-only{display:inline-block !important}}@media screen and (max-width: 1055px){.is-inline-block-touch{display:inline-block !important}}@media screen and (min-width: 1056px){.is-inline-block-desktop{display:inline-block !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-inline-block-desktop-only{display:inline-block !important}}@media screen and (min-width: 1216px){.is-inline-block-widescreen{display:inline-block !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-inline-block-widescreen-only{display:inline-block !important}}@media screen and (min-width: 1408px){.is-inline-block-fullhd{display:inline-block !important}}.is-inline-flex{display:inline-flex !important}@media screen and (max-width: 768px){.is-inline-flex-mobile{display:inline-flex !important}}@media screen and (min-width: 769px),print{.is-inline-flex-tablet{display:inline-flex !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-inline-flex-tablet-only{display:inline-flex !important}}@media screen and (max-width: 1055px){.is-inline-flex-touch{display:inline-flex !important}}@media screen and (min-width: 1056px){.is-inline-flex-desktop{display:inline-flex !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-inline-flex-desktop-only{display:inline-flex !important}}@media screen and (min-width: 1216px){.is-inline-flex-widescreen{display:inline-flex !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-inline-flex-widescreen-only{display:inline-flex !important}}@media screen and (min-width: 1408px){.is-inline-flex-fullhd{display:inline-flex !important}}.is-hidden{display:none !important}.is-sr-only{border:none !important;clip:rect(0, 0, 0, 0) !important;height:0.01em !important;overflow:hidden !important;padding:0 !important;position:absolute !important;white-space:nowrap !important;width:0.01em !important}@media screen and (max-width: 768px){.is-hidden-mobile{display:none !important}}@media screen and (min-width: 769px),print{.is-hidden-tablet{display:none !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-hidden-tablet-only{display:none !important}}@media screen and (max-width: 1055px){.is-hidden-touch{display:none !important}}@media screen and (min-width: 1056px){.is-hidden-desktop{display:none !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-hidden-desktop-only{display:none !important}}@media screen and (min-width: 1216px){.is-hidden-widescreen{display:none !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-hidden-widescreen-only{display:none !important}}@media screen and (min-width: 1408px){.is-hidden-fullhd{display:none !important}}.is-invisible{visibility:hidden !important}@media screen and (max-width: 768px){.is-invisible-mobile{visibility:hidden !important}}@media screen and (min-width: 769px),print{.is-invisible-tablet{visibility:hidden !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-invisible-tablet-only{visibility:hidden !important}}@media screen and (max-width: 1055px){.is-invisible-touch{visibility:hidden !important}}@media screen and (min-width: 1056px){.is-invisible-desktop{visibility:hidden !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-invisible-desktop-only{visibility:hidden !important}}@media screen and (min-width: 1216px){.is-invisible-widescreen{visibility:hidden !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-invisible-widescreen-only{visibility:hidden !important}}@media screen and (min-width: 1408px){.is-invisible-fullhd{visibility:hidden !important}}.is-marginless{margin:0 !important}.is-paddingless{padding:0 !important}.is-radiusless{border-radius:0 !important}.is-shadowless{box-shadow:none !important}.is-relative{position:relative !important}html.theme--documenter-dark{/*! + Theme: a11y-dark + Author: @ericwbailey + Maintainer: @ericwbailey + + Based on the Tomorrow Night Eighties theme: https://github.com/isagalaev/highlight.js/blob/master/src/styles/tomorrow-night-eighties.css +*/}html.theme--documenter-dark html{background-color:#1f2424;font-size:16px;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;min-width:300px;overflow-x:auto;overflow-y:scroll;text-rendering:optimizeLegibility;text-size-adjust:100%}html.theme--documenter-dark article,html.theme--documenter-dark aside,html.theme--documenter-dark figure,html.theme--documenter-dark footer,html.theme--documenter-dark header,html.theme--documenter-dark hgroup,html.theme--documenter-dark section{display:block}html.theme--documenter-dark body,html.theme--documenter-dark button,html.theme--documenter-dark input,html.theme--documenter-dark select,html.theme--documenter-dark textarea{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif}html.theme--documenter-dark code,html.theme--documenter-dark pre{-moz-osx-font-smoothing:auto;-webkit-font-smoothing:auto;font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace}html.theme--documenter-dark body{color:#fff;font-size:1em;font-weight:400;line-height:1.5}html.theme--documenter-dark a{color:#1abc9c;cursor:pointer;text-decoration:none}html.theme--documenter-dark a strong{color:currentColor}html.theme--documenter-dark a:hover{color:#1dd2af}html.theme--documenter-dark code{background-color:rgba(255,255,255,0.05);color:#ececec;font-size:.875em;font-weight:normal;padding:.1em}html.theme--documenter-dark hr{background-color:#282f2f;border:none;display:block;height:2px;margin:1.5rem 0}html.theme--documenter-dark img{height:auto;max-width:100%}html.theme--documenter-dark input[type="checkbox"],html.theme--documenter-dark input[type="radio"]{vertical-align:baseline}html.theme--documenter-dark small{font-size:.875em}html.theme--documenter-dark span{font-style:inherit;font-weight:inherit}html.theme--documenter-dark strong{color:#f2f2f2;font-weight:700}html.theme--documenter-dark fieldset{border:none}html.theme--documenter-dark pre{-webkit-overflow-scrolling:touch;background-color:#282f2f;color:#fff;font-size:.875em;overflow-x:auto;padding:1.25rem 1.5rem;white-space:pre;word-wrap:normal}html.theme--documenter-dark pre code{background-color:transparent;color:currentColor;font-size:1em;padding:0}html.theme--documenter-dark table td,html.theme--documenter-dark table th{vertical-align:top}html.theme--documenter-dark table td:not([align]),html.theme--documenter-dark table th:not([align]){text-align:left}html.theme--documenter-dark table th{color:#f2f2f2}html.theme--documenter-dark .box{background-color:#343c3d;border-radius:8px;box-shadow:none;color:#fff;display:block;padding:1.25rem}html.theme--documenter-dark a.box:hover,html.theme--documenter-dark a.box:focus{box-shadow:0 2px 3px rgba(10,10,10,0.1),0 0 0 1px #1abc9c}html.theme--documenter-dark a.box:active{box-shadow:inset 0 1px 2px rgba(10,10,10,0.2),0 0 0 1px #1abc9c}html.theme--documenter-dark .button{background-color:#282f2f;border-color:#4c5759;border-width:1px;color:#375a7f;cursor:pointer;justify-content:center;padding-bottom:calc(0.375em - 1px);padding-left:.75em;padding-right:.75em;padding-top:calc(0.375em - 1px);text-align:center;white-space:nowrap}html.theme--documenter-dark .button strong{color:inherit}html.theme--documenter-dark .button .icon,html.theme--documenter-dark .button .icon.is-small,html.theme--documenter-dark .button #documenter .docs-sidebar form.docs-search>input.icon,html.theme--documenter-dark #documenter .docs-sidebar .button form.docs-search>input.icon,html.theme--documenter-dark .button .icon.is-medium,html.theme--documenter-dark .button .icon.is-large{height:1.5em;width:1.5em}html.theme--documenter-dark .button .icon:first-child:not(:last-child){margin-left:calc(-0.375em - 1px);margin-right:0.1875em}html.theme--documenter-dark .button .icon:last-child:not(:first-child){margin-left:0.1875em;margin-right:calc(-0.375em - 1px)}html.theme--documenter-dark .button .icon:first-child:last-child{margin-left:calc(-0.375em - 1px);margin-right:calc(-0.375em - 1px)}html.theme--documenter-dark .button:hover,html.theme--documenter-dark .button.is-hovered{border-color:#8c9b9d;color:#f2f2f2}html.theme--documenter-dark .button:focus,html.theme--documenter-dark .button.is-focused{border-color:#8c9b9d;color:#17a689}html.theme--documenter-dark .button:focus:not(:active),html.theme--documenter-dark .button.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(26,188,156,0.25)}html.theme--documenter-dark .button:active,html.theme--documenter-dark .button.is-active{border-color:#343c3d;color:#f2f2f2}html.theme--documenter-dark .button.is-text{background-color:transparent;border-color:transparent;color:#fff;text-decoration:underline}html.theme--documenter-dark .button.is-text:hover,html.theme--documenter-dark .button.is-text.is-hovered,html.theme--documenter-dark .button.is-text:focus,html.theme--documenter-dark .button.is-text.is-focused{background-color:#282f2f;color:#f2f2f2}html.theme--documenter-dark .button.is-text:active,html.theme--documenter-dark .button.is-text.is-active{background-color:#1d2122;color:#f2f2f2}html.theme--documenter-dark .button.is-text[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-text{background-color:transparent;border-color:transparent;box-shadow:none}html.theme--documenter-dark .button.is-white{background-color:#fff;border-color:transparent;color:#0a0a0a}html.theme--documenter-dark .button.is-white:hover,html.theme--documenter-dark .button.is-white.is-hovered{background-color:#f9f9f9;border-color:transparent;color:#0a0a0a}html.theme--documenter-dark .button.is-white:focus,html.theme--documenter-dark .button.is-white.is-focused{border-color:transparent;color:#0a0a0a}html.theme--documenter-dark .button.is-white:focus:not(:active),html.theme--documenter-dark .button.is-white.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(255,255,255,0.25)}html.theme--documenter-dark .button.is-white:active,html.theme--documenter-dark .button.is-white.is-active{background-color:#f2f2f2;border-color:transparent;color:#0a0a0a}html.theme--documenter-dark .button.is-white[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-white{background-color:#fff;border-color:transparent;box-shadow:none}html.theme--documenter-dark .button.is-white.is-inverted{background-color:#0a0a0a;color:#fff}html.theme--documenter-dark .button.is-white.is-inverted:hover,html.theme--documenter-dark .button.is-white.is-inverted.is-hovered{background-color:#000}html.theme--documenter-dark .button.is-white.is-inverted[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-white.is-inverted{background-color:#0a0a0a;border-color:transparent;box-shadow:none;color:#fff}html.theme--documenter-dark .button.is-white.is-loading::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}html.theme--documenter-dark .button.is-white.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--documenter-dark .button.is-white.is-outlined:hover,html.theme--documenter-dark .button.is-white.is-outlined.is-hovered,html.theme--documenter-dark .button.is-white.is-outlined:focus,html.theme--documenter-dark .button.is-white.is-outlined.is-focused{background-color:#fff;border-color:#fff;color:#0a0a0a}html.theme--documenter-dark .button.is-white.is-outlined.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-white.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-white.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-white.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-white.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}html.theme--documenter-dark .button.is-white.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-white.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--documenter-dark .button.is-white.is-inverted.is-outlined{background-color:transparent;border-color:#0a0a0a;color:#0a0a0a}html.theme--documenter-dark .button.is-white.is-inverted.is-outlined:hover,html.theme--documenter-dark .button.is-white.is-inverted.is-outlined.is-hovered,html.theme--documenter-dark .button.is-white.is-inverted.is-outlined:focus,html.theme--documenter-dark .button.is-white.is-inverted.is-outlined.is-focused{background-color:#0a0a0a;color:#fff}html.theme--documenter-dark .button.is-white.is-inverted.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-white.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-white.is-inverted.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-white.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-white.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-white.is-inverted.is-outlined{background-color:transparent;border-color:#0a0a0a;box-shadow:none;color:#0a0a0a}html.theme--documenter-dark .button.is-black{background-color:#0a0a0a;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-black:hover,html.theme--documenter-dark .button.is-black.is-hovered{background-color:#040404;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-black:focus,html.theme--documenter-dark .button.is-black.is-focused{border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-black:focus:not(:active),html.theme--documenter-dark .button.is-black.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(10,10,10,0.25)}html.theme--documenter-dark .button.is-black:active,html.theme--documenter-dark .button.is-black.is-active{background-color:#000;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-black[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-black{background-color:#0a0a0a;border-color:transparent;box-shadow:none}html.theme--documenter-dark .button.is-black.is-inverted{background-color:#fff;color:#0a0a0a}html.theme--documenter-dark .button.is-black.is-inverted:hover,html.theme--documenter-dark .button.is-black.is-inverted.is-hovered{background-color:#f2f2f2}html.theme--documenter-dark .button.is-black.is-inverted[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-black.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#0a0a0a}html.theme--documenter-dark .button.is-black.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-black.is-outlined{background-color:transparent;border-color:#0a0a0a;color:#0a0a0a}html.theme--documenter-dark .button.is-black.is-outlined:hover,html.theme--documenter-dark .button.is-black.is-outlined.is-hovered,html.theme--documenter-dark .button.is-black.is-outlined:focus,html.theme--documenter-dark .button.is-black.is-outlined.is-focused{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}html.theme--documenter-dark .button.is-black.is-outlined.is-loading::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}html.theme--documenter-dark .button.is-black.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-black.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-black.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-black.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-black.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-black.is-outlined{background-color:transparent;border-color:#0a0a0a;box-shadow:none;color:#0a0a0a}html.theme--documenter-dark .button.is-black.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--documenter-dark .button.is-black.is-inverted.is-outlined:hover,html.theme--documenter-dark .button.is-black.is-inverted.is-outlined.is-hovered,html.theme--documenter-dark .button.is-black.is-inverted.is-outlined:focus,html.theme--documenter-dark .button.is-black.is-inverted.is-outlined.is-focused{background-color:#fff;color:#0a0a0a}html.theme--documenter-dark .button.is-black.is-inverted.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-black.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-black.is-inverted.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-black.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}html.theme--documenter-dark .button.is-black.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-black.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--documenter-dark .button.is-light{background-color:#ecf0f1;border-color:transparent;color:#282f2f}html.theme--documenter-dark .button.is-light:hover,html.theme--documenter-dark .button.is-light.is-hovered{background-color:#e5eaec;border-color:transparent;color:#282f2f}html.theme--documenter-dark .button.is-light:focus,html.theme--documenter-dark .button.is-light.is-focused{border-color:transparent;color:#282f2f}html.theme--documenter-dark .button.is-light:focus:not(:active),html.theme--documenter-dark .button.is-light.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(236,240,241,0.25)}html.theme--documenter-dark .button.is-light:active,html.theme--documenter-dark .button.is-light.is-active{background-color:#dde4e6;border-color:transparent;color:#282f2f}html.theme--documenter-dark .button.is-light[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-light{background-color:#ecf0f1;border-color:transparent;box-shadow:none}html.theme--documenter-dark .button.is-light.is-inverted{background-color:#282f2f;color:#ecf0f1}html.theme--documenter-dark .button.is-light.is-inverted:hover,html.theme--documenter-dark .button.is-light.is-inverted.is-hovered{background-color:#1d2122}html.theme--documenter-dark .button.is-light.is-inverted[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-light.is-inverted{background-color:#282f2f;border-color:transparent;box-shadow:none;color:#ecf0f1}html.theme--documenter-dark .button.is-light.is-loading::after{border-color:transparent transparent #282f2f #282f2f !important}html.theme--documenter-dark .button.is-light.is-outlined{background-color:transparent;border-color:#ecf0f1;color:#ecf0f1}html.theme--documenter-dark .button.is-light.is-outlined:hover,html.theme--documenter-dark .button.is-light.is-outlined.is-hovered,html.theme--documenter-dark .button.is-light.is-outlined:focus,html.theme--documenter-dark .button.is-light.is-outlined.is-focused{background-color:#ecf0f1;border-color:#ecf0f1;color:#282f2f}html.theme--documenter-dark .button.is-light.is-outlined.is-loading::after{border-color:transparent transparent #ecf0f1 #ecf0f1 !important}html.theme--documenter-dark .button.is-light.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-light.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-light.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-light.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #282f2f #282f2f !important}html.theme--documenter-dark .button.is-light.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-light.is-outlined{background-color:transparent;border-color:#ecf0f1;box-shadow:none;color:#ecf0f1}html.theme--documenter-dark .button.is-light.is-inverted.is-outlined{background-color:transparent;border-color:#282f2f;color:#282f2f}html.theme--documenter-dark .button.is-light.is-inverted.is-outlined:hover,html.theme--documenter-dark .button.is-light.is-inverted.is-outlined.is-hovered,html.theme--documenter-dark .button.is-light.is-inverted.is-outlined:focus,html.theme--documenter-dark .button.is-light.is-inverted.is-outlined.is-focused{background-color:#282f2f;color:#ecf0f1}html.theme--documenter-dark .button.is-light.is-inverted.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-light.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-light.is-inverted.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-light.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #ecf0f1 #ecf0f1 !important}html.theme--documenter-dark .button.is-light.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-light.is-inverted.is-outlined{background-color:transparent;border-color:#282f2f;box-shadow:none;color:#282f2f}html.theme--documenter-dark .button.is-dark,html.theme--documenter-dark .content kbd.button{background-color:#282f2f;border-color:transparent;color:#ecf0f1}html.theme--documenter-dark .button.is-dark:hover,html.theme--documenter-dark .content kbd.button:hover,html.theme--documenter-dark .button.is-dark.is-hovered,html.theme--documenter-dark .content kbd.button.is-hovered{background-color:#232829;border-color:transparent;color:#ecf0f1}html.theme--documenter-dark .button.is-dark:focus,html.theme--documenter-dark .content kbd.button:focus,html.theme--documenter-dark .button.is-dark.is-focused,html.theme--documenter-dark .content kbd.button.is-focused{border-color:transparent;color:#ecf0f1}html.theme--documenter-dark .button.is-dark:focus:not(:active),html.theme--documenter-dark .content kbd.button:focus:not(:active),html.theme--documenter-dark .button.is-dark.is-focused:not(:active),html.theme--documenter-dark .content kbd.button.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(40,47,47,0.25)}html.theme--documenter-dark .button.is-dark:active,html.theme--documenter-dark .content kbd.button:active,html.theme--documenter-dark .button.is-dark.is-active,html.theme--documenter-dark .content kbd.button.is-active{background-color:#1d2122;border-color:transparent;color:#ecf0f1}html.theme--documenter-dark .button.is-dark[disabled],html.theme--documenter-dark .content kbd.button[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-dark,fieldset[disabled] html.theme--documenter-dark .content kbd.button{background-color:#282f2f;border-color:transparent;box-shadow:none}html.theme--documenter-dark .button.is-dark.is-inverted,html.theme--documenter-dark .content kbd.button.is-inverted{background-color:#ecf0f1;color:#282f2f}html.theme--documenter-dark .button.is-dark.is-inverted:hover,html.theme--documenter-dark .content kbd.button.is-inverted:hover,html.theme--documenter-dark .button.is-dark.is-inverted.is-hovered,html.theme--documenter-dark .content kbd.button.is-inverted.is-hovered{background-color:#dde4e6}html.theme--documenter-dark .button.is-dark.is-inverted[disabled],html.theme--documenter-dark .content kbd.button.is-inverted[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-dark.is-inverted,fieldset[disabled] html.theme--documenter-dark .content kbd.button.is-inverted{background-color:#ecf0f1;border-color:transparent;box-shadow:none;color:#282f2f}html.theme--documenter-dark .button.is-dark.is-loading::after,html.theme--documenter-dark .content kbd.button.is-loading::after{border-color:transparent transparent #ecf0f1 #ecf0f1 !important}html.theme--documenter-dark .button.is-dark.is-outlined,html.theme--documenter-dark .content kbd.button.is-outlined{background-color:transparent;border-color:#282f2f;color:#282f2f}html.theme--documenter-dark .button.is-dark.is-outlined:hover,html.theme--documenter-dark .content kbd.button.is-outlined:hover,html.theme--documenter-dark .button.is-dark.is-outlined.is-hovered,html.theme--documenter-dark .content kbd.button.is-outlined.is-hovered,html.theme--documenter-dark .button.is-dark.is-outlined:focus,html.theme--documenter-dark .content kbd.button.is-outlined:focus,html.theme--documenter-dark .button.is-dark.is-outlined.is-focused,html.theme--documenter-dark .content kbd.button.is-outlined.is-focused{background-color:#282f2f;border-color:#282f2f;color:#ecf0f1}html.theme--documenter-dark .button.is-dark.is-outlined.is-loading::after,html.theme--documenter-dark .content kbd.button.is-outlined.is-loading::after{border-color:transparent transparent #282f2f #282f2f !important}html.theme--documenter-dark .button.is-dark.is-outlined.is-loading:hover::after,html.theme--documenter-dark .content kbd.button.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-dark.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .content kbd.button.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-dark.is-outlined.is-loading:focus::after,html.theme--documenter-dark .content kbd.button.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-dark.is-outlined.is-loading.is-focused::after,html.theme--documenter-dark .content kbd.button.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #ecf0f1 #ecf0f1 !important}html.theme--documenter-dark .button.is-dark.is-outlined[disabled],html.theme--documenter-dark .content kbd.button.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-dark.is-outlined,fieldset[disabled] html.theme--documenter-dark .content kbd.button.is-outlined{background-color:transparent;border-color:#282f2f;box-shadow:none;color:#282f2f}html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined,html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined{background-color:transparent;border-color:#ecf0f1;color:#ecf0f1}html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined:hover,html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined:hover,html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined.is-hovered,html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined.is-hovered,html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined:focus,html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined:focus,html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined.is-focused,html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined.is-focused{background-color:#ecf0f1;color:#282f2f}html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined.is-loading:hover::after,html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined.is-loading:focus::after,html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined.is-loading.is-focused::after,html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #282f2f #282f2f !important}html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined[disabled],html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined,fieldset[disabled] html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined{background-color:transparent;border-color:#ecf0f1;box-shadow:none;color:#ecf0f1}html.theme--documenter-dark .button.is-primary,html.theme--documenter-dark .docstring>section>a.button.docs-sourcelink{background-color:#375a7f;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-primary:hover,html.theme--documenter-dark .docstring>section>a.button.docs-sourcelink:hover,html.theme--documenter-dark .button.is-primary.is-hovered,html.theme--documenter-dark .docstring>section>a.button.is-hovered.docs-sourcelink{background-color:#335476;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-primary:focus,html.theme--documenter-dark .docstring>section>a.button.docs-sourcelink:focus,html.theme--documenter-dark .button.is-primary.is-focused,html.theme--documenter-dark .docstring>section>a.button.is-focused.docs-sourcelink{border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-primary:focus:not(:active),html.theme--documenter-dark .docstring>section>a.button.docs-sourcelink:focus:not(:active),html.theme--documenter-dark .button.is-primary.is-focused:not(:active),html.theme--documenter-dark .docstring>section>a.button.is-focused.docs-sourcelink:not(:active){box-shadow:0 0 0 0.125em rgba(55,90,127,0.25)}html.theme--documenter-dark .button.is-primary:active,html.theme--documenter-dark .docstring>section>a.button.docs-sourcelink:active,html.theme--documenter-dark .button.is-primary.is-active,html.theme--documenter-dark .docstring>section>a.button.is-active.docs-sourcelink{background-color:#2f4d6d;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-primary[disabled],html.theme--documenter-dark .docstring>section>a.button.docs-sourcelink[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-primary,fieldset[disabled] html.theme--documenter-dark .docstring>section>a.button.docs-sourcelink{background-color:#375a7f;border-color:transparent;box-shadow:none}html.theme--documenter-dark .button.is-primary.is-inverted,html.theme--documenter-dark .docstring>section>a.button.is-inverted.docs-sourcelink{background-color:#fff;color:#375a7f}html.theme--documenter-dark .button.is-primary.is-inverted:hover,html.theme--documenter-dark .docstring>section>a.button.is-inverted.docs-sourcelink:hover,html.theme--documenter-dark .button.is-primary.is-inverted.is-hovered,html.theme--documenter-dark .docstring>section>a.button.is-inverted.is-hovered.docs-sourcelink{background-color:#f2f2f2}html.theme--documenter-dark .button.is-primary.is-inverted[disabled],html.theme--documenter-dark .docstring>section>a.button.is-inverted.docs-sourcelink[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-primary.is-inverted,fieldset[disabled] html.theme--documenter-dark .docstring>section>a.button.is-inverted.docs-sourcelink{background-color:#fff;border-color:transparent;box-shadow:none;color:#375a7f}html.theme--documenter-dark .button.is-primary.is-loading::after,html.theme--documenter-dark .docstring>section>a.button.is-loading.docs-sourcelink::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-primary.is-outlined,html.theme--documenter-dark .docstring>section>a.button.is-outlined.docs-sourcelink{background-color:transparent;border-color:#375a7f;color:#375a7f}html.theme--documenter-dark .button.is-primary.is-outlined:hover,html.theme--documenter-dark .docstring>section>a.button.is-outlined.docs-sourcelink:hover,html.theme--documenter-dark .button.is-primary.is-outlined.is-hovered,html.theme--documenter-dark .docstring>section>a.button.is-outlined.is-hovered.docs-sourcelink,html.theme--documenter-dark .button.is-primary.is-outlined:focus,html.theme--documenter-dark .docstring>section>a.button.is-outlined.docs-sourcelink:focus,html.theme--documenter-dark .button.is-primary.is-outlined.is-focused,html.theme--documenter-dark .docstring>section>a.button.is-outlined.is-focused.docs-sourcelink{background-color:#375a7f;border-color:#375a7f;color:#fff}html.theme--documenter-dark .button.is-primary.is-outlined.is-loading::after,html.theme--documenter-dark .docstring>section>a.button.is-outlined.is-loading.docs-sourcelink::after{border-color:transparent transparent #375a7f #375a7f !important}html.theme--documenter-dark .button.is-primary.is-outlined.is-loading:hover::after,html.theme--documenter-dark .docstring>section>a.button.is-outlined.is-loading.docs-sourcelink:hover::after,html.theme--documenter-dark .button.is-primary.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .docstring>section>a.button.is-outlined.is-loading.is-hovered.docs-sourcelink::after,html.theme--documenter-dark .button.is-primary.is-outlined.is-loading:focus::after,html.theme--documenter-dark .docstring>section>a.button.is-outlined.is-loading.docs-sourcelink:focus::after,html.theme--documenter-dark .button.is-primary.is-outlined.is-loading.is-focused::after,html.theme--documenter-dark .docstring>section>a.button.is-outlined.is-loading.is-focused.docs-sourcelink::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-primary.is-outlined[disabled],html.theme--documenter-dark .docstring>section>a.button.is-outlined.docs-sourcelink[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-primary.is-outlined,fieldset[disabled] html.theme--documenter-dark .docstring>section>a.button.is-outlined.docs-sourcelink{background-color:transparent;border-color:#375a7f;box-shadow:none;color:#375a7f}html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined,html.theme--documenter-dark .docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink{background-color:transparent;border-color:#fff;color:#fff}html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined:hover,html.theme--documenter-dark .docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink:hover,html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined.is-hovered,html.theme--documenter-dark .docstring>section>a.button.is-inverted.is-outlined.is-hovered.docs-sourcelink,html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined:focus,html.theme--documenter-dark .docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink:focus,html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined.is-focused,html.theme--documenter-dark .docstring>section>a.button.is-inverted.is-outlined.is-focused.docs-sourcelink{background-color:#fff;color:#375a7f}html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined.is-loading:hover::after,html.theme--documenter-dark .docstring>section>a.button.is-inverted.is-outlined.is-loading.docs-sourcelink:hover::after,html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .docstring>section>a.button.is-inverted.is-outlined.is-loading.is-hovered.docs-sourcelink::after,html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined.is-loading:focus::after,html.theme--documenter-dark .docstring>section>a.button.is-inverted.is-outlined.is-loading.docs-sourcelink:focus::after,html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined.is-loading.is-focused::after,html.theme--documenter-dark .docstring>section>a.button.is-inverted.is-outlined.is-loading.is-focused.docs-sourcelink::after{border-color:transparent transparent #375a7f #375a7f !important}html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined[disabled],html.theme--documenter-dark .docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined,fieldset[disabled] html.theme--documenter-dark .docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--documenter-dark .button.is-link{background-color:#1abc9c;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-link:hover,html.theme--documenter-dark .button.is-link.is-hovered{background-color:#18b193;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-link:focus,html.theme--documenter-dark .button.is-link.is-focused{border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-link:focus:not(:active),html.theme--documenter-dark .button.is-link.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(26,188,156,0.25)}html.theme--documenter-dark .button.is-link:active,html.theme--documenter-dark .button.is-link.is-active{background-color:#17a689;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-link[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-link{background-color:#1abc9c;border-color:transparent;box-shadow:none}html.theme--documenter-dark .button.is-link.is-inverted{background-color:#fff;color:#1abc9c}html.theme--documenter-dark .button.is-link.is-inverted:hover,html.theme--documenter-dark .button.is-link.is-inverted.is-hovered{background-color:#f2f2f2}html.theme--documenter-dark .button.is-link.is-inverted[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-link.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#1abc9c}html.theme--documenter-dark .button.is-link.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-link.is-outlined{background-color:transparent;border-color:#1abc9c;color:#1abc9c}html.theme--documenter-dark .button.is-link.is-outlined:hover,html.theme--documenter-dark .button.is-link.is-outlined.is-hovered,html.theme--documenter-dark .button.is-link.is-outlined:focus,html.theme--documenter-dark .button.is-link.is-outlined.is-focused{background-color:#1abc9c;border-color:#1abc9c;color:#fff}html.theme--documenter-dark .button.is-link.is-outlined.is-loading::after{border-color:transparent transparent #1abc9c #1abc9c !important}html.theme--documenter-dark .button.is-link.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-link.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-link.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-link.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-link.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-link.is-outlined{background-color:transparent;border-color:#1abc9c;box-shadow:none;color:#1abc9c}html.theme--documenter-dark .button.is-link.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--documenter-dark .button.is-link.is-inverted.is-outlined:hover,html.theme--documenter-dark .button.is-link.is-inverted.is-outlined.is-hovered,html.theme--documenter-dark .button.is-link.is-inverted.is-outlined:focus,html.theme--documenter-dark .button.is-link.is-inverted.is-outlined.is-focused{background-color:#fff;color:#1abc9c}html.theme--documenter-dark .button.is-link.is-inverted.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-link.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-link.is-inverted.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-link.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #1abc9c #1abc9c !important}html.theme--documenter-dark .button.is-link.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-link.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--documenter-dark .button.is-info{background-color:#024c7d;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-info:hover,html.theme--documenter-dark .button.is-info.is-hovered{background-color:#024470;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-info:focus,html.theme--documenter-dark .button.is-info.is-focused{border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-info:focus:not(:active),html.theme--documenter-dark .button.is-info.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(2,76,125,0.25)}html.theme--documenter-dark .button.is-info:active,html.theme--documenter-dark .button.is-info.is-active{background-color:#023d64;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-info[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-info{background-color:#024c7d;border-color:transparent;box-shadow:none}html.theme--documenter-dark .button.is-info.is-inverted{background-color:#fff;color:#024c7d}html.theme--documenter-dark .button.is-info.is-inverted:hover,html.theme--documenter-dark .button.is-info.is-inverted.is-hovered{background-color:#f2f2f2}html.theme--documenter-dark .button.is-info.is-inverted[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-info.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#024c7d}html.theme--documenter-dark .button.is-info.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-info.is-outlined{background-color:transparent;border-color:#024c7d;color:#024c7d}html.theme--documenter-dark .button.is-info.is-outlined:hover,html.theme--documenter-dark .button.is-info.is-outlined.is-hovered,html.theme--documenter-dark .button.is-info.is-outlined:focus,html.theme--documenter-dark .button.is-info.is-outlined.is-focused{background-color:#024c7d;border-color:#024c7d;color:#fff}html.theme--documenter-dark .button.is-info.is-outlined.is-loading::after{border-color:transparent transparent #024c7d #024c7d !important}html.theme--documenter-dark .button.is-info.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-info.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-info.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-info.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-info.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-info.is-outlined{background-color:transparent;border-color:#024c7d;box-shadow:none;color:#024c7d}html.theme--documenter-dark .button.is-info.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--documenter-dark .button.is-info.is-inverted.is-outlined:hover,html.theme--documenter-dark .button.is-info.is-inverted.is-outlined.is-hovered,html.theme--documenter-dark .button.is-info.is-inverted.is-outlined:focus,html.theme--documenter-dark .button.is-info.is-inverted.is-outlined.is-focused{background-color:#fff;color:#024c7d}html.theme--documenter-dark .button.is-info.is-inverted.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-info.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-info.is-inverted.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-info.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #024c7d #024c7d !important}html.theme--documenter-dark .button.is-info.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-info.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--documenter-dark .button.is-success{background-color:#008438;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-success:hover,html.theme--documenter-dark .button.is-success.is-hovered{background-color:#073;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-success:focus,html.theme--documenter-dark .button.is-success.is-focused{border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-success:focus:not(:active),html.theme--documenter-dark .button.is-success.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(0,132,56,0.25)}html.theme--documenter-dark .button.is-success:active,html.theme--documenter-dark .button.is-success.is-active{background-color:#006b2d;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-success[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-success{background-color:#008438;border-color:transparent;box-shadow:none}html.theme--documenter-dark .button.is-success.is-inverted{background-color:#fff;color:#008438}html.theme--documenter-dark .button.is-success.is-inverted:hover,html.theme--documenter-dark .button.is-success.is-inverted.is-hovered{background-color:#f2f2f2}html.theme--documenter-dark .button.is-success.is-inverted[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-success.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#008438}html.theme--documenter-dark .button.is-success.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-success.is-outlined{background-color:transparent;border-color:#008438;color:#008438}html.theme--documenter-dark .button.is-success.is-outlined:hover,html.theme--documenter-dark .button.is-success.is-outlined.is-hovered,html.theme--documenter-dark .button.is-success.is-outlined:focus,html.theme--documenter-dark .button.is-success.is-outlined.is-focused{background-color:#008438;border-color:#008438;color:#fff}html.theme--documenter-dark .button.is-success.is-outlined.is-loading::after{border-color:transparent transparent #008438 #008438 !important}html.theme--documenter-dark .button.is-success.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-success.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-success.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-success.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-success.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-success.is-outlined{background-color:transparent;border-color:#008438;box-shadow:none;color:#008438}html.theme--documenter-dark .button.is-success.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--documenter-dark .button.is-success.is-inverted.is-outlined:hover,html.theme--documenter-dark .button.is-success.is-inverted.is-outlined.is-hovered,html.theme--documenter-dark .button.is-success.is-inverted.is-outlined:focus,html.theme--documenter-dark .button.is-success.is-inverted.is-outlined.is-focused{background-color:#fff;color:#008438}html.theme--documenter-dark .button.is-success.is-inverted.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-success.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-success.is-inverted.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-success.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #008438 #008438 !important}html.theme--documenter-dark .button.is-success.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-success.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--documenter-dark .button.is-warning{background-color:#ad8100;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-warning:hover,html.theme--documenter-dark .button.is-warning.is-hovered{background-color:#a07700;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-warning:focus,html.theme--documenter-dark .button.is-warning.is-focused{border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-warning:focus:not(:active),html.theme--documenter-dark .button.is-warning.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(173,129,0,0.25)}html.theme--documenter-dark .button.is-warning:active,html.theme--documenter-dark .button.is-warning.is-active{background-color:#946e00;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-warning[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-warning{background-color:#ad8100;border-color:transparent;box-shadow:none}html.theme--documenter-dark .button.is-warning.is-inverted{background-color:#fff;color:#ad8100}html.theme--documenter-dark .button.is-warning.is-inverted:hover,html.theme--documenter-dark .button.is-warning.is-inverted.is-hovered{background-color:#f2f2f2}html.theme--documenter-dark .button.is-warning.is-inverted[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-warning.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#ad8100}html.theme--documenter-dark .button.is-warning.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-warning.is-outlined{background-color:transparent;border-color:#ad8100;color:#ad8100}html.theme--documenter-dark .button.is-warning.is-outlined:hover,html.theme--documenter-dark .button.is-warning.is-outlined.is-hovered,html.theme--documenter-dark .button.is-warning.is-outlined:focus,html.theme--documenter-dark .button.is-warning.is-outlined.is-focused{background-color:#ad8100;border-color:#ad8100;color:#fff}html.theme--documenter-dark .button.is-warning.is-outlined.is-loading::after{border-color:transparent transparent #ad8100 #ad8100 !important}html.theme--documenter-dark .button.is-warning.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-warning.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-warning.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-warning.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-warning.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-warning.is-outlined{background-color:transparent;border-color:#ad8100;box-shadow:none;color:#ad8100}html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined:hover,html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined.is-hovered,html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined:focus,html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined.is-focused{background-color:#fff;color:#ad8100}html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #ad8100 #ad8100 !important}html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--documenter-dark .button.is-danger{background-color:#9e1b0d;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-danger:hover,html.theme--documenter-dark .button.is-danger.is-hovered{background-color:#92190c;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-danger:focus,html.theme--documenter-dark .button.is-danger.is-focused{border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-danger:focus:not(:active),html.theme--documenter-dark .button.is-danger.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(158,27,13,0.25)}html.theme--documenter-dark .button.is-danger:active,html.theme--documenter-dark .button.is-danger.is-active{background-color:#86170b;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-danger[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-danger{background-color:#9e1b0d;border-color:transparent;box-shadow:none}html.theme--documenter-dark .button.is-danger.is-inverted{background-color:#fff;color:#9e1b0d}html.theme--documenter-dark .button.is-danger.is-inverted:hover,html.theme--documenter-dark .button.is-danger.is-inverted.is-hovered{background-color:#f2f2f2}html.theme--documenter-dark .button.is-danger.is-inverted[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-danger.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#9e1b0d}html.theme--documenter-dark .button.is-danger.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-danger.is-outlined{background-color:transparent;border-color:#9e1b0d;color:#9e1b0d}html.theme--documenter-dark .button.is-danger.is-outlined:hover,html.theme--documenter-dark .button.is-danger.is-outlined.is-hovered,html.theme--documenter-dark .button.is-danger.is-outlined:focus,html.theme--documenter-dark .button.is-danger.is-outlined.is-focused{background-color:#9e1b0d;border-color:#9e1b0d;color:#fff}html.theme--documenter-dark .button.is-danger.is-outlined.is-loading::after{border-color:transparent transparent #9e1b0d #9e1b0d !important}html.theme--documenter-dark .button.is-danger.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-danger.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-danger.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-danger.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-danger.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-danger.is-outlined{background-color:transparent;border-color:#9e1b0d;box-shadow:none;color:#9e1b0d}html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined:hover,html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined.is-hovered,html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined:focus,html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined.is-focused{background-color:#fff;color:#9e1b0d}html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #9e1b0d #9e1b0d !important}html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--documenter-dark .button.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.button{border-radius:3px;font-size:.85em}html.theme--documenter-dark .button.is-normal{font-size:15px}html.theme--documenter-dark .button.is-medium{font-size:1.25rem}html.theme--documenter-dark .button.is-large{font-size:1.5rem}html.theme--documenter-dark .button[disabled],fieldset[disabled] html.theme--documenter-dark .button{background-color:#8c9b9d;border-color:#dbdee0;box-shadow:none;opacity:.5}html.theme--documenter-dark .button.is-fullwidth{display:flex;width:100%}html.theme--documenter-dark .button.is-loading{color:transparent !important;pointer-events:none}html.theme--documenter-dark .button.is-loading::after{position:absolute;left:calc(50% - (1em / 2));top:calc(50% - (1em / 2));position:absolute !important}html.theme--documenter-dark .button.is-static{background-color:#282f2f;border-color:#5e6d6f;color:#dbdee0;box-shadow:none;pointer-events:none}html.theme--documenter-dark .button.is-rounded,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.button{border-radius:290486px;padding-left:1em;padding-right:1em}html.theme--documenter-dark .buttons{align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-start}html.theme--documenter-dark .buttons .button{margin-bottom:0.5rem}html.theme--documenter-dark .buttons .button:not(:last-child):not(.is-fullwidth){margin-right:0.5rem}html.theme--documenter-dark .buttons:last-child{margin-bottom:-0.5rem}html.theme--documenter-dark .buttons:not(:last-child){margin-bottom:1rem}html.theme--documenter-dark .buttons.are-small .button:not(.is-normal):not(.is-medium):not(.is-large){border-radius:3px;font-size:.85em}html.theme--documenter-dark .buttons.are-medium .button:not(.is-small):not(.is-normal):not(.is-large){font-size:1.25rem}html.theme--documenter-dark .buttons.are-large .button:not(.is-small):not(.is-normal):not(.is-medium){font-size:1.5rem}html.theme--documenter-dark .buttons.has-addons .button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}html.theme--documenter-dark .buttons.has-addons .button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0;margin-right:-1px}html.theme--documenter-dark .buttons.has-addons .button:last-child{margin-right:0}html.theme--documenter-dark .buttons.has-addons .button:hover,html.theme--documenter-dark .buttons.has-addons .button.is-hovered{z-index:2}html.theme--documenter-dark .buttons.has-addons .button:focus,html.theme--documenter-dark .buttons.has-addons .button.is-focused,html.theme--documenter-dark .buttons.has-addons .button:active,html.theme--documenter-dark .buttons.has-addons .button.is-active,html.theme--documenter-dark .buttons.has-addons .button.is-selected{z-index:3}html.theme--documenter-dark .buttons.has-addons .button:focus:hover,html.theme--documenter-dark .buttons.has-addons .button.is-focused:hover,html.theme--documenter-dark .buttons.has-addons .button:active:hover,html.theme--documenter-dark .buttons.has-addons .button.is-active:hover,html.theme--documenter-dark .buttons.has-addons .button.is-selected:hover{z-index:4}html.theme--documenter-dark .buttons.has-addons .button.is-expanded{flex-grow:1;flex-shrink:1}html.theme--documenter-dark .buttons.is-centered{justify-content:center}html.theme--documenter-dark .buttons.is-centered:not(.has-addons) .button:not(.is-fullwidth){margin-left:0.25rem;margin-right:0.25rem}html.theme--documenter-dark .buttons.is-right{justify-content:flex-end}html.theme--documenter-dark .buttons.is-right:not(.has-addons) .button:not(.is-fullwidth){margin-left:0.25rem;margin-right:0.25rem}html.theme--documenter-dark .container{flex-grow:1;margin:0 auto;position:relative;width:auto}@media screen and (min-width: 1056px){html.theme--documenter-dark .container{max-width:992px}html.theme--documenter-dark .container.is-fluid{margin-left:32px;margin-right:32px;max-width:none}}@media screen and (max-width: 1215px){html.theme--documenter-dark .container.is-widescreen{max-width:1152px}}@media screen and (max-width: 1407px){html.theme--documenter-dark .container.is-fullhd{max-width:1344px}}@media screen and (min-width: 1216px){html.theme--documenter-dark .container{max-width:1152px}}@media screen and (min-width: 1408px){html.theme--documenter-dark .container{max-width:1344px}}html.theme--documenter-dark .content li+li{margin-top:0.25em}html.theme--documenter-dark .content p:not(:last-child),html.theme--documenter-dark .content dl:not(:last-child),html.theme--documenter-dark .content ol:not(:last-child),html.theme--documenter-dark .content ul:not(:last-child),html.theme--documenter-dark .content blockquote:not(:last-child),html.theme--documenter-dark .content pre:not(:last-child),html.theme--documenter-dark .content table:not(:last-child){margin-bottom:1em}html.theme--documenter-dark .content h1,html.theme--documenter-dark .content h2,html.theme--documenter-dark .content h3,html.theme--documenter-dark .content h4,html.theme--documenter-dark .content h5,html.theme--documenter-dark .content h6{color:#f2f2f2;font-weight:600;line-height:1.125}html.theme--documenter-dark .content h1{font-size:2em;margin-bottom:0.5em}html.theme--documenter-dark .content h1:not(:first-child){margin-top:1em}html.theme--documenter-dark .content h2{font-size:1.75em;margin-bottom:0.5714em}html.theme--documenter-dark .content h2:not(:first-child){margin-top:1.1428em}html.theme--documenter-dark .content h3{font-size:1.5em;margin-bottom:0.6666em}html.theme--documenter-dark .content h3:not(:first-child){margin-top:1.3333em}html.theme--documenter-dark .content h4{font-size:1.25em;margin-bottom:0.8em}html.theme--documenter-dark .content h5{font-size:1.125em;margin-bottom:0.8888em}html.theme--documenter-dark .content h6{font-size:1em;margin-bottom:1em}html.theme--documenter-dark .content blockquote{background-color:#282f2f;border-left:5px solid #5e6d6f;padding:1.25em 1.5em}html.theme--documenter-dark .content ol{list-style-position:outside;margin-left:2em;margin-top:1em}html.theme--documenter-dark .content ol:not([type]){list-style-type:decimal}html.theme--documenter-dark .content ol.is-lower-alpha:not([type]){list-style-type:lower-alpha}html.theme--documenter-dark .content ol.is-lower-roman:not([type]){list-style-type:lower-roman}html.theme--documenter-dark .content ol.is-upper-alpha:not([type]){list-style-type:upper-alpha}html.theme--documenter-dark .content ol.is-upper-roman:not([type]){list-style-type:upper-roman}html.theme--documenter-dark .content ul{list-style:disc outside;margin-left:2em;margin-top:1em}html.theme--documenter-dark .content ul ul{list-style-type:circle;margin-top:0.5em}html.theme--documenter-dark .content ul ul ul{list-style-type:square}html.theme--documenter-dark .content dd{margin-left:2em}html.theme--documenter-dark .content figure{margin-left:2em;margin-right:2em;text-align:center}html.theme--documenter-dark .content figure:not(:first-child){margin-top:2em}html.theme--documenter-dark .content figure:not(:last-child){margin-bottom:2em}html.theme--documenter-dark .content figure img{display:inline-block}html.theme--documenter-dark .content figure figcaption{font-style:italic}html.theme--documenter-dark .content pre{-webkit-overflow-scrolling:touch;overflow-x:auto;padding:0;white-space:pre;word-wrap:normal}html.theme--documenter-dark .content sup,html.theme--documenter-dark .content sub{font-size:75%}html.theme--documenter-dark .content table{width:100%}html.theme--documenter-dark .content table td,html.theme--documenter-dark .content table th{border:1px solid #5e6d6f;border-width:0 0 1px;padding:0.5em 0.75em;vertical-align:top}html.theme--documenter-dark .content table th{color:#f2f2f2}html.theme--documenter-dark .content table th:not([align]){text-align:left}html.theme--documenter-dark .content table thead td,html.theme--documenter-dark .content table thead th{border-width:0 0 2px;color:#f2f2f2}html.theme--documenter-dark .content table tfoot td,html.theme--documenter-dark .content table tfoot th{border-width:2px 0 0;color:#f2f2f2}html.theme--documenter-dark .content table tbody tr:last-child td,html.theme--documenter-dark .content table tbody tr:last-child th{border-bottom-width:0}html.theme--documenter-dark .content .tabs li+li{margin-top:0}html.theme--documenter-dark .content.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.content{font-size:.85em}html.theme--documenter-dark .content.is-medium{font-size:1.25rem}html.theme--documenter-dark .content.is-large{font-size:1.5rem}html.theme--documenter-dark .icon{align-items:center;display:inline-flex;justify-content:center;height:1.5rem;width:1.5rem}html.theme--documenter-dark .icon.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.icon{height:1rem;width:1rem}html.theme--documenter-dark .icon.is-medium{height:2rem;width:2rem}html.theme--documenter-dark .icon.is-large{height:3rem;width:3rem}html.theme--documenter-dark .image,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img{display:block;position:relative}html.theme--documenter-dark .image img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img img{display:block;height:auto;width:100%}html.theme--documenter-dark .image img.is-rounded,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img img.is-rounded{border-radius:290486px}html.theme--documenter-dark .image.is-square img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-square img,html.theme--documenter-dark .image.is-square .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-square .has-ratio,html.theme--documenter-dark .image.is-1by1 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by1 img,html.theme--documenter-dark .image.is-1by1 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by1 .has-ratio,html.theme--documenter-dark .image.is-5by4 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-5by4 img,html.theme--documenter-dark .image.is-5by4 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-5by4 .has-ratio,html.theme--documenter-dark .image.is-4by3 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-4by3 img,html.theme--documenter-dark .image.is-4by3 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-4by3 .has-ratio,html.theme--documenter-dark .image.is-3by2 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by2 img,html.theme--documenter-dark .image.is-3by2 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by2 .has-ratio,html.theme--documenter-dark .image.is-5by3 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-5by3 img,html.theme--documenter-dark .image.is-5by3 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-5by3 .has-ratio,html.theme--documenter-dark .image.is-16by9 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-16by9 img,html.theme--documenter-dark .image.is-16by9 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-16by9 .has-ratio,html.theme--documenter-dark .image.is-2by1 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-2by1 img,html.theme--documenter-dark .image.is-2by1 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-2by1 .has-ratio,html.theme--documenter-dark .image.is-3by1 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by1 img,html.theme--documenter-dark .image.is-3by1 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by1 .has-ratio,html.theme--documenter-dark .image.is-4by5 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-4by5 img,html.theme--documenter-dark .image.is-4by5 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-4by5 .has-ratio,html.theme--documenter-dark .image.is-3by4 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by4 img,html.theme--documenter-dark .image.is-3by4 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by4 .has-ratio,html.theme--documenter-dark .image.is-2by3 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-2by3 img,html.theme--documenter-dark .image.is-2by3 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-2by3 .has-ratio,html.theme--documenter-dark .image.is-3by5 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by5 img,html.theme--documenter-dark .image.is-3by5 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by5 .has-ratio,html.theme--documenter-dark .image.is-9by16 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-9by16 img,html.theme--documenter-dark .image.is-9by16 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-9by16 .has-ratio,html.theme--documenter-dark .image.is-1by2 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by2 img,html.theme--documenter-dark .image.is-1by2 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by2 .has-ratio,html.theme--documenter-dark .image.is-1by3 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by3 img,html.theme--documenter-dark .image.is-1by3 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by3 .has-ratio{height:100%;width:100%}html.theme--documenter-dark .image.is-square,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-square,html.theme--documenter-dark .image.is-1by1,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by1{padding-top:100%}html.theme--documenter-dark .image.is-5by4,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-5by4{padding-top:80%}html.theme--documenter-dark .image.is-4by3,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-4by3{padding-top:75%}html.theme--documenter-dark .image.is-3by2,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by2{padding-top:66.6666%}html.theme--documenter-dark .image.is-5by3,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-5by3{padding-top:60%}html.theme--documenter-dark .image.is-16by9,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-16by9{padding-top:56.25%}html.theme--documenter-dark .image.is-2by1,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-2by1{padding-top:50%}html.theme--documenter-dark .image.is-3by1,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by1{padding-top:33.3333%}html.theme--documenter-dark .image.is-4by5,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-4by5{padding-top:125%}html.theme--documenter-dark .image.is-3by4,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by4{padding-top:133.3333%}html.theme--documenter-dark .image.is-2by3,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-2by3{padding-top:150%}html.theme--documenter-dark .image.is-3by5,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by5{padding-top:166.6666%}html.theme--documenter-dark .image.is-9by16,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-9by16{padding-top:177.7777%}html.theme--documenter-dark .image.is-1by2,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by2{padding-top:200%}html.theme--documenter-dark .image.is-1by3,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by3{padding-top:300%}html.theme--documenter-dark .image.is-16x16,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-16x16{height:16px;width:16px}html.theme--documenter-dark .image.is-24x24,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-24x24{height:24px;width:24px}html.theme--documenter-dark .image.is-32x32,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-32x32{height:32px;width:32px}html.theme--documenter-dark .image.is-48x48,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-48x48{height:48px;width:48px}html.theme--documenter-dark .image.is-64x64,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-64x64{height:64px;width:64px}html.theme--documenter-dark .image.is-96x96,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-96x96{height:96px;width:96px}html.theme--documenter-dark .image.is-128x128,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-128x128{height:128px;width:128px}html.theme--documenter-dark .notification{background-color:#282f2f;border-radius:.4em;padding:1.25rem 2.5rem 1.25rem 1.5rem;position:relative}html.theme--documenter-dark .notification a:not(.button):not(.dropdown-item){color:currentColor;text-decoration:underline}html.theme--documenter-dark .notification strong{color:currentColor}html.theme--documenter-dark .notification code,html.theme--documenter-dark .notification pre{background:#fff}html.theme--documenter-dark .notification pre code{background:transparent}html.theme--documenter-dark .notification>.delete{position:absolute;right:0.5rem;top:0.5rem}html.theme--documenter-dark .notification .title,html.theme--documenter-dark .notification .subtitle,html.theme--documenter-dark .notification .content{color:currentColor}html.theme--documenter-dark .notification.is-white{background-color:#fff;color:#0a0a0a}html.theme--documenter-dark .notification.is-black{background-color:#0a0a0a;color:#fff}html.theme--documenter-dark .notification.is-light{background-color:#ecf0f1;color:#282f2f}html.theme--documenter-dark .notification.is-dark,html.theme--documenter-dark .content kbd.notification{background-color:#282f2f;color:#ecf0f1}html.theme--documenter-dark .notification.is-primary,html.theme--documenter-dark .docstring>section>a.notification.docs-sourcelink{background-color:#375a7f;color:#fff}html.theme--documenter-dark .notification.is-link{background-color:#1abc9c;color:#fff}html.theme--documenter-dark .notification.is-info{background-color:#024c7d;color:#fff}html.theme--documenter-dark .notification.is-success{background-color:#008438;color:#fff}html.theme--documenter-dark .notification.is-warning{background-color:#ad8100;color:#fff}html.theme--documenter-dark .notification.is-danger{background-color:#9e1b0d;color:#fff}html.theme--documenter-dark .progress{-moz-appearance:none;-webkit-appearance:none;border:none;border-radius:290486px;display:block;height:15px;overflow:hidden;padding:0;width:100%}html.theme--documenter-dark .progress::-webkit-progress-bar{background-color:#5e6d6f}html.theme--documenter-dark .progress::-webkit-progress-value{background-color:#dbdee0}html.theme--documenter-dark .progress::-moz-progress-bar{background-color:#dbdee0}html.theme--documenter-dark .progress::-ms-fill{background-color:#dbdee0;border:none}html.theme--documenter-dark .progress.is-white::-webkit-progress-value{background-color:#fff}html.theme--documenter-dark .progress.is-white::-moz-progress-bar{background-color:#fff}html.theme--documenter-dark .progress.is-white::-ms-fill{background-color:#fff}html.theme--documenter-dark .progress.is-white:indeterminate{background-image:linear-gradient(to right, #fff 30%, #5e6d6f 30%)}html.theme--documenter-dark .progress.is-black::-webkit-progress-value{background-color:#0a0a0a}html.theme--documenter-dark .progress.is-black::-moz-progress-bar{background-color:#0a0a0a}html.theme--documenter-dark .progress.is-black::-ms-fill{background-color:#0a0a0a}html.theme--documenter-dark .progress.is-black:indeterminate{background-image:linear-gradient(to right, #0a0a0a 30%, #5e6d6f 30%)}html.theme--documenter-dark .progress.is-light::-webkit-progress-value{background-color:#ecf0f1}html.theme--documenter-dark .progress.is-light::-moz-progress-bar{background-color:#ecf0f1}html.theme--documenter-dark .progress.is-light::-ms-fill{background-color:#ecf0f1}html.theme--documenter-dark .progress.is-light:indeterminate{background-image:linear-gradient(to right, #ecf0f1 30%, #5e6d6f 30%)}html.theme--documenter-dark .progress.is-dark::-webkit-progress-value,html.theme--documenter-dark .content kbd.progress::-webkit-progress-value{background-color:#282f2f}html.theme--documenter-dark .progress.is-dark::-moz-progress-bar,html.theme--documenter-dark .content kbd.progress::-moz-progress-bar{background-color:#282f2f}html.theme--documenter-dark .progress.is-dark::-ms-fill,html.theme--documenter-dark .content kbd.progress::-ms-fill{background-color:#282f2f}html.theme--documenter-dark .progress.is-dark:indeterminate,html.theme--documenter-dark .content kbd.progress:indeterminate{background-image:linear-gradient(to right, #282f2f 30%, #5e6d6f 30%)}html.theme--documenter-dark .progress.is-primary::-webkit-progress-value,html.theme--documenter-dark .docstring>section>a.progress.docs-sourcelink::-webkit-progress-value{background-color:#375a7f}html.theme--documenter-dark .progress.is-primary::-moz-progress-bar,html.theme--documenter-dark .docstring>section>a.progress.docs-sourcelink::-moz-progress-bar{background-color:#375a7f}html.theme--documenter-dark .progress.is-primary::-ms-fill,html.theme--documenter-dark .docstring>section>a.progress.docs-sourcelink::-ms-fill{background-color:#375a7f}html.theme--documenter-dark .progress.is-primary:indeterminate,html.theme--documenter-dark .docstring>section>a.progress.docs-sourcelink:indeterminate{background-image:linear-gradient(to right, #375a7f 30%, #5e6d6f 30%)}html.theme--documenter-dark .progress.is-link::-webkit-progress-value{background-color:#1abc9c}html.theme--documenter-dark .progress.is-link::-moz-progress-bar{background-color:#1abc9c}html.theme--documenter-dark .progress.is-link::-ms-fill{background-color:#1abc9c}html.theme--documenter-dark .progress.is-link:indeterminate{background-image:linear-gradient(to right, #1abc9c 30%, #5e6d6f 30%)}html.theme--documenter-dark .progress.is-info::-webkit-progress-value{background-color:#024c7d}html.theme--documenter-dark .progress.is-info::-moz-progress-bar{background-color:#024c7d}html.theme--documenter-dark .progress.is-info::-ms-fill{background-color:#024c7d}html.theme--documenter-dark .progress.is-info:indeterminate{background-image:linear-gradient(to right, #024c7d 30%, #5e6d6f 30%)}html.theme--documenter-dark .progress.is-success::-webkit-progress-value{background-color:#008438}html.theme--documenter-dark .progress.is-success::-moz-progress-bar{background-color:#008438}html.theme--documenter-dark .progress.is-success::-ms-fill{background-color:#008438}html.theme--documenter-dark .progress.is-success:indeterminate{background-image:linear-gradient(to right, #008438 30%, #5e6d6f 30%)}html.theme--documenter-dark .progress.is-warning::-webkit-progress-value{background-color:#ad8100}html.theme--documenter-dark .progress.is-warning::-moz-progress-bar{background-color:#ad8100}html.theme--documenter-dark .progress.is-warning::-ms-fill{background-color:#ad8100}html.theme--documenter-dark .progress.is-warning:indeterminate{background-image:linear-gradient(to right, #ad8100 30%, #5e6d6f 30%)}html.theme--documenter-dark .progress.is-danger::-webkit-progress-value{background-color:#9e1b0d}html.theme--documenter-dark .progress.is-danger::-moz-progress-bar{background-color:#9e1b0d}html.theme--documenter-dark .progress.is-danger::-ms-fill{background-color:#9e1b0d}html.theme--documenter-dark .progress.is-danger:indeterminate{background-image:linear-gradient(to right, #9e1b0d 30%, #5e6d6f 30%)}html.theme--documenter-dark .progress:indeterminate{animation-duration:1.5s;animation-iteration-count:infinite;animation-name:moveIndeterminate;animation-timing-function:linear;background-color:#5e6d6f;background-image:linear-gradient(to right, #fff 30%, #5e6d6f 30%);background-position:top left;background-repeat:no-repeat;background-size:150% 150%}html.theme--documenter-dark .progress:indeterminate::-webkit-progress-bar{background-color:transparent}html.theme--documenter-dark .progress:indeterminate::-moz-progress-bar{background-color:transparent}html.theme--documenter-dark .progress.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.progress{height:.85em}html.theme--documenter-dark .progress.is-medium{height:1.25rem}html.theme--documenter-dark .progress.is-large{height:1.5rem}@keyframes moveIndeterminate{from{background-position:200% 0}to{background-position:-200% 0}}html.theme--documenter-dark .table{background-color:#343c3d;color:#fff}html.theme--documenter-dark .table td,html.theme--documenter-dark .table th{border:1px solid #5e6d6f;border-width:0 0 1px;padding:0.5em 0.75em;vertical-align:top}html.theme--documenter-dark .table td.is-white,html.theme--documenter-dark .table th.is-white{background-color:#fff;border-color:#fff;color:#0a0a0a}html.theme--documenter-dark .table td.is-black,html.theme--documenter-dark .table th.is-black{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}html.theme--documenter-dark .table td.is-light,html.theme--documenter-dark .table th.is-light{background-color:#ecf0f1;border-color:#ecf0f1;color:#282f2f}html.theme--documenter-dark .table td.is-dark,html.theme--documenter-dark .table th.is-dark{background-color:#282f2f;border-color:#282f2f;color:#ecf0f1}html.theme--documenter-dark .table td.is-primary,html.theme--documenter-dark .table th.is-primary{background-color:#375a7f;border-color:#375a7f;color:#fff}html.theme--documenter-dark .table td.is-link,html.theme--documenter-dark .table th.is-link{background-color:#1abc9c;border-color:#1abc9c;color:#fff}html.theme--documenter-dark .table td.is-info,html.theme--documenter-dark .table th.is-info{background-color:#024c7d;border-color:#024c7d;color:#fff}html.theme--documenter-dark .table td.is-success,html.theme--documenter-dark .table th.is-success{background-color:#008438;border-color:#008438;color:#fff}html.theme--documenter-dark .table td.is-warning,html.theme--documenter-dark .table th.is-warning{background-color:#ad8100;border-color:#ad8100;color:#fff}html.theme--documenter-dark .table td.is-danger,html.theme--documenter-dark .table th.is-danger{background-color:#9e1b0d;border-color:#9e1b0d;color:#fff}html.theme--documenter-dark .table td.is-narrow,html.theme--documenter-dark .table th.is-narrow{white-space:nowrap;width:1%}html.theme--documenter-dark .table td.is-selected,html.theme--documenter-dark .table th.is-selected{background-color:#375a7f;color:#fff}html.theme--documenter-dark .table td.is-selected a,html.theme--documenter-dark .table td.is-selected strong,html.theme--documenter-dark .table th.is-selected a,html.theme--documenter-dark .table th.is-selected strong{color:currentColor}html.theme--documenter-dark .table th{color:#f2f2f2}html.theme--documenter-dark .table th:not([align]){text-align:left}html.theme--documenter-dark .table tr.is-selected{background-color:#375a7f;color:#fff}html.theme--documenter-dark .table tr.is-selected a,html.theme--documenter-dark .table tr.is-selected strong{color:currentColor}html.theme--documenter-dark .table tr.is-selected td,html.theme--documenter-dark .table tr.is-selected th{border-color:#fff;color:currentColor}html.theme--documenter-dark .table thead{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .table thead td,html.theme--documenter-dark .table thead th{border-width:0 0 2px;color:#f2f2f2}html.theme--documenter-dark .table tfoot{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .table tfoot td,html.theme--documenter-dark .table tfoot th{border-width:2px 0 0;color:#f2f2f2}html.theme--documenter-dark .table tbody{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .table tbody tr:last-child td,html.theme--documenter-dark .table tbody tr:last-child th{border-bottom-width:0}html.theme--documenter-dark .table.is-bordered td,html.theme--documenter-dark .table.is-bordered th{border-width:1px}html.theme--documenter-dark .table.is-bordered tr:last-child td,html.theme--documenter-dark .table.is-bordered tr:last-child th{border-bottom-width:1px}html.theme--documenter-dark .table.is-fullwidth{width:100%}html.theme--documenter-dark .table.is-hoverable tbody tr:not(.is-selected):hover{background-color:#282f2f}html.theme--documenter-dark .table.is-hoverable.is-striped tbody tr:not(.is-selected):hover{background-color:#282f2f}html.theme--documenter-dark .table.is-hoverable.is-striped tbody tr:not(.is-selected):hover:nth-child(even){background-color:#2d3435}html.theme--documenter-dark .table.is-narrow td,html.theme--documenter-dark .table.is-narrow th{padding:0.25em 0.5em}html.theme--documenter-dark .table.is-striped tbody tr:not(.is-selected):nth-child(even){background-color:#282f2f}html.theme--documenter-dark .table-container{-webkit-overflow-scrolling:touch;overflow:auto;overflow-y:hidden;max-width:100%}html.theme--documenter-dark .tags{align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-start}html.theme--documenter-dark .tags .tag,html.theme--documenter-dark .tags .content kbd,html.theme--documenter-dark .content .tags kbd,html.theme--documenter-dark .tags .docstring>section>a.docs-sourcelink{margin-bottom:0.5rem}html.theme--documenter-dark .tags .tag:not(:last-child),html.theme--documenter-dark .tags .content kbd:not(:last-child),html.theme--documenter-dark .content .tags kbd:not(:last-child),html.theme--documenter-dark .tags .docstring>section>a.docs-sourcelink:not(:last-child){margin-right:0.5rem}html.theme--documenter-dark .tags:last-child{margin-bottom:-0.5rem}html.theme--documenter-dark .tags:not(:last-child){margin-bottom:1rem}html.theme--documenter-dark .tags.are-medium .tag:not(.is-normal):not(.is-large),html.theme--documenter-dark .tags.are-medium .content kbd:not(.is-normal):not(.is-large),html.theme--documenter-dark .content .tags.are-medium kbd:not(.is-normal):not(.is-large),html.theme--documenter-dark .tags.are-medium .docstring>section>a.docs-sourcelink:not(.is-normal):not(.is-large){font-size:15px}html.theme--documenter-dark .tags.are-large .tag:not(.is-normal):not(.is-medium),html.theme--documenter-dark .tags.are-large .content kbd:not(.is-normal):not(.is-medium),html.theme--documenter-dark .content .tags.are-large kbd:not(.is-normal):not(.is-medium),html.theme--documenter-dark .tags.are-large .docstring>section>a.docs-sourcelink:not(.is-normal):not(.is-medium){font-size:1.25rem}html.theme--documenter-dark .tags.is-centered{justify-content:center}html.theme--documenter-dark .tags.is-centered .tag,html.theme--documenter-dark .tags.is-centered .content kbd,html.theme--documenter-dark .content .tags.is-centered kbd,html.theme--documenter-dark .tags.is-centered .docstring>section>a.docs-sourcelink{margin-right:0.25rem;margin-left:0.25rem}html.theme--documenter-dark .tags.is-right{justify-content:flex-end}html.theme--documenter-dark .tags.is-right .tag:not(:first-child),html.theme--documenter-dark .tags.is-right .content kbd:not(:first-child),html.theme--documenter-dark .content .tags.is-right kbd:not(:first-child),html.theme--documenter-dark .tags.is-right .docstring>section>a.docs-sourcelink:not(:first-child){margin-left:0.5rem}html.theme--documenter-dark .tags.is-right .tag:not(:last-child),html.theme--documenter-dark .tags.is-right .content kbd:not(:last-child),html.theme--documenter-dark .content .tags.is-right kbd:not(:last-child),html.theme--documenter-dark .tags.is-right .docstring>section>a.docs-sourcelink:not(:last-child){margin-right:0}html.theme--documenter-dark .tags.has-addons .tag,html.theme--documenter-dark .tags.has-addons .content kbd,html.theme--documenter-dark .content .tags.has-addons kbd,html.theme--documenter-dark .tags.has-addons .docstring>section>a.docs-sourcelink{margin-right:0}html.theme--documenter-dark .tags.has-addons .tag:not(:first-child),html.theme--documenter-dark .tags.has-addons .content kbd:not(:first-child),html.theme--documenter-dark .content .tags.has-addons kbd:not(:first-child),html.theme--documenter-dark .tags.has-addons .docstring>section>a.docs-sourcelink:not(:first-child){margin-left:0;border-bottom-left-radius:0;border-top-left-radius:0}html.theme--documenter-dark .tags.has-addons .tag:not(:last-child),html.theme--documenter-dark .tags.has-addons .content kbd:not(:last-child),html.theme--documenter-dark .content .tags.has-addons kbd:not(:last-child),html.theme--documenter-dark .tags.has-addons .docstring>section>a.docs-sourcelink:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}html.theme--documenter-dark .tag:not(body),html.theme--documenter-dark .content kbd:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink:not(body){align-items:center;background-color:#282f2f;border-radius:.4em;color:#fff;display:inline-flex;font-size:.85em;height:2em;justify-content:center;line-height:1.5;padding-left:0.75em;padding-right:0.75em;white-space:nowrap}html.theme--documenter-dark .tag:not(body) .delete,html.theme--documenter-dark .content kbd:not(body) .delete,html.theme--documenter-dark .docstring>section>a.docs-sourcelink:not(body) .delete{margin-left:0.25rem;margin-right:-0.375rem}html.theme--documenter-dark .tag.is-white:not(body),html.theme--documenter-dark .content kbd.is-white:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-white:not(body){background-color:#fff;color:#0a0a0a}html.theme--documenter-dark .tag.is-black:not(body),html.theme--documenter-dark .content kbd.is-black:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-black:not(body){background-color:#0a0a0a;color:#fff}html.theme--documenter-dark .tag.is-light:not(body),html.theme--documenter-dark .content kbd.is-light:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-light:not(body){background-color:#ecf0f1;color:#282f2f}html.theme--documenter-dark .tag.is-dark:not(body),html.theme--documenter-dark .content kbd:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-dark:not(body),html.theme--documenter-dark .content .docstring>section>kbd:not(body){background-color:#282f2f;color:#ecf0f1}html.theme--documenter-dark .tag.is-primary:not(body),html.theme--documenter-dark .content kbd.is-primary:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink:not(body){background-color:#375a7f;color:#fff}html.theme--documenter-dark .tag.is-link:not(body),html.theme--documenter-dark .content kbd.is-link:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-link:not(body){background-color:#1abc9c;color:#fff}html.theme--documenter-dark .tag.is-info:not(body),html.theme--documenter-dark .content kbd.is-info:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-info:not(body){background-color:#024c7d;color:#fff}html.theme--documenter-dark .tag.is-success:not(body),html.theme--documenter-dark .content kbd.is-success:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-success:not(body){background-color:#008438;color:#fff}html.theme--documenter-dark .tag.is-warning:not(body),html.theme--documenter-dark .content kbd.is-warning:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-warning:not(body){background-color:#ad8100;color:#fff}html.theme--documenter-dark .tag.is-danger:not(body),html.theme--documenter-dark .content kbd.is-danger:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-danger:not(body){background-color:#9e1b0d;color:#fff}html.theme--documenter-dark .tag.is-normal:not(body),html.theme--documenter-dark .content kbd.is-normal:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-normal:not(body){font-size:.85em}html.theme--documenter-dark .tag.is-medium:not(body),html.theme--documenter-dark .content kbd.is-medium:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-medium:not(body){font-size:15px}html.theme--documenter-dark .tag.is-large:not(body),html.theme--documenter-dark .content kbd.is-large:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-large:not(body){font-size:1.25rem}html.theme--documenter-dark .tag:not(body) .icon:first-child:not(:last-child),html.theme--documenter-dark .content kbd:not(body) .icon:first-child:not(:last-child),html.theme--documenter-dark .docstring>section>a.docs-sourcelink:not(body) .icon:first-child:not(:last-child){margin-left:-0.375em;margin-right:0.1875em}html.theme--documenter-dark .tag:not(body) .icon:last-child:not(:first-child),html.theme--documenter-dark .content kbd:not(body) .icon:last-child:not(:first-child),html.theme--documenter-dark .docstring>section>a.docs-sourcelink:not(body) .icon:last-child:not(:first-child){margin-left:0.1875em;margin-right:-0.375em}html.theme--documenter-dark .tag:not(body) .icon:first-child:last-child,html.theme--documenter-dark .content kbd:not(body) .icon:first-child:last-child,html.theme--documenter-dark .docstring>section>a.docs-sourcelink:not(body) .icon:first-child:last-child{margin-left:-0.375em;margin-right:-0.375em}html.theme--documenter-dark .tag.is-delete:not(body),html.theme--documenter-dark .content kbd.is-delete:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-delete:not(body){margin-left:1px;padding:0;position:relative;width:2em}html.theme--documenter-dark .tag.is-delete:not(body)::before,html.theme--documenter-dark .content kbd.is-delete:not(body)::before,html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-delete:not(body)::before,html.theme--documenter-dark .tag.is-delete:not(body)::after,html.theme--documenter-dark .content kbd.is-delete:not(body)::after,html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-delete:not(body)::after{background-color:currentColor;content:"";display:block;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) rotate(45deg);transform-origin:center center}html.theme--documenter-dark .tag.is-delete:not(body)::before,html.theme--documenter-dark .content kbd.is-delete:not(body)::before,html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-delete:not(body)::before{height:1px;width:50%}html.theme--documenter-dark .tag.is-delete:not(body)::after,html.theme--documenter-dark .content kbd.is-delete:not(body)::after,html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-delete:not(body)::after{height:50%;width:1px}html.theme--documenter-dark .tag.is-delete:not(body):hover,html.theme--documenter-dark .content kbd.is-delete:not(body):hover,html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-delete:not(body):hover,html.theme--documenter-dark .tag.is-delete:not(body):focus,html.theme--documenter-dark .content kbd.is-delete:not(body):focus,html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-delete:not(body):focus{background-color:#1d2122}html.theme--documenter-dark .tag.is-delete:not(body):active,html.theme--documenter-dark .content kbd.is-delete:not(body):active,html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-delete:not(body):active{background-color:#111414}html.theme--documenter-dark .tag.is-rounded:not(body),html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input:not(body),html.theme--documenter-dark .content kbd.is-rounded:not(body),html.theme--documenter-dark #documenter .docs-sidebar .content form.docs-search>input:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-rounded:not(body){border-radius:290486px}html.theme--documenter-dark a.tag:hover,html.theme--documenter-dark .docstring>section>a.docs-sourcelink:hover{text-decoration:underline}html.theme--documenter-dark .title,html.theme--documenter-dark .subtitle{word-break:break-word}html.theme--documenter-dark .title em,html.theme--documenter-dark .title span,html.theme--documenter-dark .subtitle em,html.theme--documenter-dark .subtitle span{font-weight:inherit}html.theme--documenter-dark .title sub,html.theme--documenter-dark .subtitle sub{font-size:.75em}html.theme--documenter-dark .title sup,html.theme--documenter-dark .subtitle sup{font-size:.75em}html.theme--documenter-dark .title .tag,html.theme--documenter-dark .title .content kbd,html.theme--documenter-dark .content .title kbd,html.theme--documenter-dark .title .docstring>section>a.docs-sourcelink,html.theme--documenter-dark .subtitle .tag,html.theme--documenter-dark .subtitle .content kbd,html.theme--documenter-dark .content .subtitle kbd,html.theme--documenter-dark .subtitle .docstring>section>a.docs-sourcelink{vertical-align:middle}html.theme--documenter-dark .title{color:#fff;font-size:2rem;font-weight:500;line-height:1.125}html.theme--documenter-dark .title strong{color:inherit;font-weight:inherit}html.theme--documenter-dark .title+.highlight{margin-top:-0.75rem}html.theme--documenter-dark .title:not(.is-spaced)+.subtitle{margin-top:-1.25rem}html.theme--documenter-dark .title.is-1{font-size:3rem}html.theme--documenter-dark .title.is-2{font-size:2.5rem}html.theme--documenter-dark .title.is-3{font-size:2rem}html.theme--documenter-dark .title.is-4{font-size:1.5rem}html.theme--documenter-dark .title.is-5{font-size:1.25rem}html.theme--documenter-dark .title.is-6{font-size:15px}html.theme--documenter-dark .title.is-7{font-size:.85em}html.theme--documenter-dark .subtitle{color:#8c9b9d;font-size:1.25rem;font-weight:400;line-height:1.25}html.theme--documenter-dark .subtitle strong{color:#8c9b9d;font-weight:600}html.theme--documenter-dark .subtitle:not(.is-spaced)+.title{margin-top:-1.25rem}html.theme--documenter-dark .subtitle.is-1{font-size:3rem}html.theme--documenter-dark .subtitle.is-2{font-size:2.5rem}html.theme--documenter-dark .subtitle.is-3{font-size:2rem}html.theme--documenter-dark .subtitle.is-4{font-size:1.5rem}html.theme--documenter-dark .subtitle.is-5{font-size:1.25rem}html.theme--documenter-dark .subtitle.is-6{font-size:15px}html.theme--documenter-dark .subtitle.is-7{font-size:.85em}html.theme--documenter-dark .heading{display:block;font-size:11px;letter-spacing:1px;margin-bottom:5px;text-transform:uppercase}html.theme--documenter-dark .highlight{font-weight:400;max-width:100%;overflow:hidden;padding:0}html.theme--documenter-dark .highlight pre{overflow:auto;max-width:100%}html.theme--documenter-dark .number{align-items:center;background-color:#282f2f;border-radius:290486px;display:inline-flex;font-size:1.25rem;height:2em;justify-content:center;margin-right:1.5rem;min-width:2.5em;padding:0.25rem 0.5rem;text-align:center;vertical-align:top}html.theme--documenter-dark .select select,html.theme--documenter-dark .textarea,html.theme--documenter-dark .input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input{background-color:#1f2424;border-color:#5e6d6f;border-radius:.4em;color:#dbdee0}html.theme--documenter-dark .select select::-moz-placeholder,html.theme--documenter-dark .textarea::-moz-placeholder,html.theme--documenter-dark .input::-moz-placeholder,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input::-moz-placeholder{color:rgba(219,222,224,0.3)}html.theme--documenter-dark .select select::-webkit-input-placeholder,html.theme--documenter-dark .textarea::-webkit-input-placeholder,html.theme--documenter-dark .input::-webkit-input-placeholder,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input::-webkit-input-placeholder{color:rgba(219,222,224,0.3)}html.theme--documenter-dark .select select:-moz-placeholder,html.theme--documenter-dark .textarea:-moz-placeholder,html.theme--documenter-dark .input:-moz-placeholder,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input:-moz-placeholder{color:rgba(219,222,224,0.3)}html.theme--documenter-dark .select select:-ms-input-placeholder,html.theme--documenter-dark .textarea:-ms-input-placeholder,html.theme--documenter-dark .input:-ms-input-placeholder,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input:-ms-input-placeholder{color:rgba(219,222,224,0.3)}html.theme--documenter-dark .select select:hover,html.theme--documenter-dark .textarea:hover,html.theme--documenter-dark .input:hover,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input:hover,html.theme--documenter-dark .select select.is-hovered,html.theme--documenter-dark .is-hovered.textarea,html.theme--documenter-dark .is-hovered.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-hovered{border-color:#8c9b9d}html.theme--documenter-dark .select select:focus,html.theme--documenter-dark .textarea:focus,html.theme--documenter-dark .input:focus,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input:focus,html.theme--documenter-dark .select select.is-focused,html.theme--documenter-dark .is-focused.textarea,html.theme--documenter-dark .is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .select select:active,html.theme--documenter-dark .textarea:active,html.theme--documenter-dark .input:active,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input:active,html.theme--documenter-dark .select select.is-active,html.theme--documenter-dark .is-active.textarea,html.theme--documenter-dark .is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active{border-color:#1abc9c;box-shadow:0 0 0 0.125em rgba(26,188,156,0.25)}html.theme--documenter-dark .select select[disabled],html.theme--documenter-dark .textarea[disabled],html.theme--documenter-dark .input[disabled],html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input[disabled],fieldset[disabled] html.theme--documenter-dark .select select,fieldset[disabled] html.theme--documenter-dark .textarea,fieldset[disabled] html.theme--documenter-dark .input,fieldset[disabled] html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input{background-color:#8c9b9d;border-color:#282f2f;box-shadow:none;color:#fff}html.theme--documenter-dark .select select[disabled]::-moz-placeholder,html.theme--documenter-dark .textarea[disabled]::-moz-placeholder,html.theme--documenter-dark .input[disabled]::-moz-placeholder,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input[disabled]::-moz-placeholder,fieldset[disabled] html.theme--documenter-dark .select select::-moz-placeholder,fieldset[disabled] html.theme--documenter-dark .textarea::-moz-placeholder,fieldset[disabled] html.theme--documenter-dark .input::-moz-placeholder,fieldset[disabled] html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input::-moz-placeholder{color:rgba(255,255,255,0.3)}html.theme--documenter-dark .select select[disabled]::-webkit-input-placeholder,html.theme--documenter-dark .textarea[disabled]::-webkit-input-placeholder,html.theme--documenter-dark .input[disabled]::-webkit-input-placeholder,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input[disabled]::-webkit-input-placeholder,fieldset[disabled] html.theme--documenter-dark .select select::-webkit-input-placeholder,fieldset[disabled] html.theme--documenter-dark .textarea::-webkit-input-placeholder,fieldset[disabled] html.theme--documenter-dark .input::-webkit-input-placeholder,fieldset[disabled] html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input::-webkit-input-placeholder{color:rgba(255,255,255,0.3)}html.theme--documenter-dark .select select[disabled]:-moz-placeholder,html.theme--documenter-dark .textarea[disabled]:-moz-placeholder,html.theme--documenter-dark .input[disabled]:-moz-placeholder,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input[disabled]:-moz-placeholder,fieldset[disabled] html.theme--documenter-dark .select select:-moz-placeholder,fieldset[disabled] html.theme--documenter-dark .textarea:-moz-placeholder,fieldset[disabled] html.theme--documenter-dark .input:-moz-placeholder,fieldset[disabled] html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input:-moz-placeholder{color:rgba(255,255,255,0.3)}html.theme--documenter-dark .select select[disabled]:-ms-input-placeholder,html.theme--documenter-dark .textarea[disabled]:-ms-input-placeholder,html.theme--documenter-dark .input[disabled]:-ms-input-placeholder,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input[disabled]:-ms-input-placeholder,fieldset[disabled] html.theme--documenter-dark .select select:-ms-input-placeholder,fieldset[disabled] html.theme--documenter-dark .textarea:-ms-input-placeholder,fieldset[disabled] html.theme--documenter-dark .input:-ms-input-placeholder,fieldset[disabled] html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input:-ms-input-placeholder{color:rgba(255,255,255,0.3)}html.theme--documenter-dark .textarea,html.theme--documenter-dark .input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input{box-shadow:inset 0 1px 2px rgba(10,10,10,0.1);max-width:100%;width:100%}html.theme--documenter-dark .textarea[readonly],html.theme--documenter-dark .input[readonly],html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input[readonly]{box-shadow:none}html.theme--documenter-dark .is-white.textarea,html.theme--documenter-dark .is-white.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-white{border-color:#fff}html.theme--documenter-dark .is-white.textarea:focus,html.theme--documenter-dark .is-white.input:focus,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-white:focus,html.theme--documenter-dark .is-white.is-focused.textarea,html.theme--documenter-dark .is-white.is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .is-white.textarea:active,html.theme--documenter-dark .is-white.input:active,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-white:active,html.theme--documenter-dark .is-white.is-active.textarea,html.theme--documenter-dark .is-white.is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(255,255,255,0.25)}html.theme--documenter-dark .is-black.textarea,html.theme--documenter-dark .is-black.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-black{border-color:#0a0a0a}html.theme--documenter-dark .is-black.textarea:focus,html.theme--documenter-dark .is-black.input:focus,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-black:focus,html.theme--documenter-dark .is-black.is-focused.textarea,html.theme--documenter-dark .is-black.is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .is-black.textarea:active,html.theme--documenter-dark .is-black.input:active,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-black:active,html.theme--documenter-dark .is-black.is-active.textarea,html.theme--documenter-dark .is-black.is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(10,10,10,0.25)}html.theme--documenter-dark .is-light.textarea,html.theme--documenter-dark .is-light.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-light{border-color:#ecf0f1}html.theme--documenter-dark .is-light.textarea:focus,html.theme--documenter-dark .is-light.input:focus,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-light:focus,html.theme--documenter-dark .is-light.is-focused.textarea,html.theme--documenter-dark .is-light.is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .is-light.textarea:active,html.theme--documenter-dark .is-light.input:active,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-light:active,html.theme--documenter-dark .is-light.is-active.textarea,html.theme--documenter-dark .is-light.is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(236,240,241,0.25)}html.theme--documenter-dark .is-dark.textarea,html.theme--documenter-dark .content kbd.textarea,html.theme--documenter-dark .is-dark.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-dark,html.theme--documenter-dark .content kbd.input{border-color:#282f2f}html.theme--documenter-dark .is-dark.textarea:focus,html.theme--documenter-dark .content kbd.textarea:focus,html.theme--documenter-dark .is-dark.input:focus,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-dark:focus,html.theme--documenter-dark .content kbd.input:focus,html.theme--documenter-dark .is-dark.is-focused.textarea,html.theme--documenter-dark .content kbd.is-focused.textarea,html.theme--documenter-dark .is-dark.is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .content kbd.is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar .content form.docs-search>input.is-focused,html.theme--documenter-dark .is-dark.textarea:active,html.theme--documenter-dark .content kbd.textarea:active,html.theme--documenter-dark .is-dark.input:active,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-dark:active,html.theme--documenter-dark .content kbd.input:active,html.theme--documenter-dark .is-dark.is-active.textarea,html.theme--documenter-dark .content kbd.is-active.textarea,html.theme--documenter-dark .is-dark.is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active,html.theme--documenter-dark .content kbd.is-active.input,html.theme--documenter-dark #documenter .docs-sidebar .content form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(40,47,47,0.25)}html.theme--documenter-dark .is-primary.textarea,html.theme--documenter-dark .docstring>section>a.textarea.docs-sourcelink,html.theme--documenter-dark .is-primary.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-primary,html.theme--documenter-dark .docstring>section>a.input.docs-sourcelink{border-color:#375a7f}html.theme--documenter-dark .is-primary.textarea:focus,html.theme--documenter-dark .docstring>section>a.textarea.docs-sourcelink:focus,html.theme--documenter-dark .is-primary.input:focus,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-primary:focus,html.theme--documenter-dark .docstring>section>a.input.docs-sourcelink:focus,html.theme--documenter-dark .is-primary.is-focused.textarea,html.theme--documenter-dark .docstring>section>a.is-focused.textarea.docs-sourcelink,html.theme--documenter-dark .is-primary.is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .docstring>section>a.is-focused.input.docs-sourcelink,html.theme--documenter-dark .is-primary.textarea:active,html.theme--documenter-dark .docstring>section>a.textarea.docs-sourcelink:active,html.theme--documenter-dark .is-primary.input:active,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-primary:active,html.theme--documenter-dark .docstring>section>a.input.docs-sourcelink:active,html.theme--documenter-dark .is-primary.is-active.textarea,html.theme--documenter-dark .docstring>section>a.is-active.textarea.docs-sourcelink,html.theme--documenter-dark .is-primary.is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active,html.theme--documenter-dark .docstring>section>a.is-active.input.docs-sourcelink{box-shadow:0 0 0 0.125em rgba(55,90,127,0.25)}html.theme--documenter-dark .is-link.textarea,html.theme--documenter-dark .is-link.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-link{border-color:#1abc9c}html.theme--documenter-dark .is-link.textarea:focus,html.theme--documenter-dark .is-link.input:focus,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-link:focus,html.theme--documenter-dark .is-link.is-focused.textarea,html.theme--documenter-dark .is-link.is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .is-link.textarea:active,html.theme--documenter-dark .is-link.input:active,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-link:active,html.theme--documenter-dark .is-link.is-active.textarea,html.theme--documenter-dark .is-link.is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(26,188,156,0.25)}html.theme--documenter-dark .is-info.textarea,html.theme--documenter-dark .is-info.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-info{border-color:#024c7d}html.theme--documenter-dark .is-info.textarea:focus,html.theme--documenter-dark .is-info.input:focus,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-info:focus,html.theme--documenter-dark .is-info.is-focused.textarea,html.theme--documenter-dark .is-info.is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .is-info.textarea:active,html.theme--documenter-dark .is-info.input:active,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-info:active,html.theme--documenter-dark .is-info.is-active.textarea,html.theme--documenter-dark .is-info.is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(2,76,125,0.25)}html.theme--documenter-dark .is-success.textarea,html.theme--documenter-dark .is-success.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-success{border-color:#008438}html.theme--documenter-dark .is-success.textarea:focus,html.theme--documenter-dark .is-success.input:focus,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-success:focus,html.theme--documenter-dark .is-success.is-focused.textarea,html.theme--documenter-dark .is-success.is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .is-success.textarea:active,html.theme--documenter-dark .is-success.input:active,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-success:active,html.theme--documenter-dark .is-success.is-active.textarea,html.theme--documenter-dark .is-success.is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(0,132,56,0.25)}html.theme--documenter-dark .is-warning.textarea,html.theme--documenter-dark .is-warning.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-warning{border-color:#ad8100}html.theme--documenter-dark .is-warning.textarea:focus,html.theme--documenter-dark .is-warning.input:focus,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-warning:focus,html.theme--documenter-dark .is-warning.is-focused.textarea,html.theme--documenter-dark .is-warning.is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .is-warning.textarea:active,html.theme--documenter-dark .is-warning.input:active,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-warning:active,html.theme--documenter-dark .is-warning.is-active.textarea,html.theme--documenter-dark .is-warning.is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(173,129,0,0.25)}html.theme--documenter-dark .is-danger.textarea,html.theme--documenter-dark .is-danger.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-danger{border-color:#9e1b0d}html.theme--documenter-dark .is-danger.textarea:focus,html.theme--documenter-dark .is-danger.input:focus,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-danger:focus,html.theme--documenter-dark .is-danger.is-focused.textarea,html.theme--documenter-dark .is-danger.is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .is-danger.textarea:active,html.theme--documenter-dark .is-danger.input:active,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-danger:active,html.theme--documenter-dark .is-danger.is-active.textarea,html.theme--documenter-dark .is-danger.is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(158,27,13,0.25)}html.theme--documenter-dark .is-small.textarea,html.theme--documenter-dark .is-small.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input{border-radius:3px;font-size:.85em}html.theme--documenter-dark .is-medium.textarea,html.theme--documenter-dark .is-medium.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-medium{font-size:1.25rem}html.theme--documenter-dark .is-large.textarea,html.theme--documenter-dark .is-large.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-large{font-size:1.5rem}html.theme--documenter-dark .is-fullwidth.textarea,html.theme--documenter-dark .is-fullwidth.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-fullwidth{display:block;width:100%}html.theme--documenter-dark .is-inline.textarea,html.theme--documenter-dark .is-inline.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-inline{display:inline;width:auto}html.theme--documenter-dark .input.is-rounded,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input{border-radius:290486px;padding-left:1em;padding-right:1em}html.theme--documenter-dark .input.is-static,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-static{background-color:transparent;border-color:transparent;box-shadow:none;padding-left:0;padding-right:0}html.theme--documenter-dark .textarea{display:block;max-width:100%;min-width:100%;padding:0.625em;resize:vertical}html.theme--documenter-dark .textarea:not([rows]){max-height:600px;min-height:120px}html.theme--documenter-dark .textarea[rows]{height:initial}html.theme--documenter-dark .textarea.has-fixed-size{resize:none}html.theme--documenter-dark .radio,html.theme--documenter-dark .checkbox{cursor:pointer;display:inline-block;line-height:1.25;position:relative}html.theme--documenter-dark .radio input,html.theme--documenter-dark .checkbox input{cursor:pointer}html.theme--documenter-dark .radio:hover,html.theme--documenter-dark .checkbox:hover{color:#8c9b9d}html.theme--documenter-dark .radio[disabled],html.theme--documenter-dark .checkbox[disabled],fieldset[disabled] html.theme--documenter-dark .radio,fieldset[disabled] html.theme--documenter-dark .checkbox{color:#fff;cursor:not-allowed}html.theme--documenter-dark .radio+.radio{margin-left:0.5em}html.theme--documenter-dark .select{display:inline-block;max-width:100%;position:relative;vertical-align:top}html.theme--documenter-dark .select:not(.is-multiple){height:2.25em}html.theme--documenter-dark .select:not(.is-multiple):not(.is-loading)::after{border-color:#1abc9c;right:1.125em;z-index:4}html.theme--documenter-dark .select.is-rounded select,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.select select{border-radius:290486px;padding-left:1em}html.theme--documenter-dark .select select{cursor:pointer;display:block;font-size:1em;max-width:100%;outline:none}html.theme--documenter-dark .select select::-ms-expand{display:none}html.theme--documenter-dark .select select[disabled]:hover,fieldset[disabled] html.theme--documenter-dark .select select:hover{border-color:#282f2f}html.theme--documenter-dark .select select:not([multiple]){padding-right:2.5em}html.theme--documenter-dark .select select[multiple]{height:auto;padding:0}html.theme--documenter-dark .select select[multiple] option{padding:0.5em 1em}html.theme--documenter-dark .select:not(.is-multiple):not(.is-loading):hover::after{border-color:#8c9b9d}html.theme--documenter-dark .select.is-white:not(:hover)::after{border-color:#fff}html.theme--documenter-dark .select.is-white select{border-color:#fff}html.theme--documenter-dark .select.is-white select:hover,html.theme--documenter-dark .select.is-white select.is-hovered{border-color:#f2f2f2}html.theme--documenter-dark .select.is-white select:focus,html.theme--documenter-dark .select.is-white select.is-focused,html.theme--documenter-dark .select.is-white select:active,html.theme--documenter-dark .select.is-white select.is-active{box-shadow:0 0 0 0.125em rgba(255,255,255,0.25)}html.theme--documenter-dark .select.is-black:not(:hover)::after{border-color:#0a0a0a}html.theme--documenter-dark .select.is-black select{border-color:#0a0a0a}html.theme--documenter-dark .select.is-black select:hover,html.theme--documenter-dark .select.is-black select.is-hovered{border-color:#000}html.theme--documenter-dark .select.is-black select:focus,html.theme--documenter-dark .select.is-black select.is-focused,html.theme--documenter-dark .select.is-black select:active,html.theme--documenter-dark .select.is-black select.is-active{box-shadow:0 0 0 0.125em rgba(10,10,10,0.25)}html.theme--documenter-dark .select.is-light:not(:hover)::after{border-color:#ecf0f1}html.theme--documenter-dark .select.is-light select{border-color:#ecf0f1}html.theme--documenter-dark .select.is-light select:hover,html.theme--documenter-dark .select.is-light select.is-hovered{border-color:#dde4e6}html.theme--documenter-dark .select.is-light select:focus,html.theme--documenter-dark .select.is-light select.is-focused,html.theme--documenter-dark .select.is-light select:active,html.theme--documenter-dark .select.is-light select.is-active{box-shadow:0 0 0 0.125em rgba(236,240,241,0.25)}html.theme--documenter-dark .select.is-dark:not(:hover)::after,html.theme--documenter-dark .content kbd.select:not(:hover)::after{border-color:#282f2f}html.theme--documenter-dark .select.is-dark select,html.theme--documenter-dark .content kbd.select select{border-color:#282f2f}html.theme--documenter-dark .select.is-dark select:hover,html.theme--documenter-dark .content kbd.select select:hover,html.theme--documenter-dark .select.is-dark select.is-hovered,html.theme--documenter-dark .content kbd.select select.is-hovered{border-color:#1d2122}html.theme--documenter-dark .select.is-dark select:focus,html.theme--documenter-dark .content kbd.select select:focus,html.theme--documenter-dark .select.is-dark select.is-focused,html.theme--documenter-dark .content kbd.select select.is-focused,html.theme--documenter-dark .select.is-dark select:active,html.theme--documenter-dark .content kbd.select select:active,html.theme--documenter-dark .select.is-dark select.is-active,html.theme--documenter-dark .content kbd.select select.is-active{box-shadow:0 0 0 0.125em rgba(40,47,47,0.25)}html.theme--documenter-dark .select.is-primary:not(:hover)::after,html.theme--documenter-dark .docstring>section>a.select.docs-sourcelink:not(:hover)::after{border-color:#375a7f}html.theme--documenter-dark .select.is-primary select,html.theme--documenter-dark .docstring>section>a.select.docs-sourcelink select{border-color:#375a7f}html.theme--documenter-dark .select.is-primary select:hover,html.theme--documenter-dark .docstring>section>a.select.docs-sourcelink select:hover,html.theme--documenter-dark .select.is-primary select.is-hovered,html.theme--documenter-dark .docstring>section>a.select.docs-sourcelink select.is-hovered{border-color:#2f4d6d}html.theme--documenter-dark .select.is-primary select:focus,html.theme--documenter-dark .docstring>section>a.select.docs-sourcelink select:focus,html.theme--documenter-dark .select.is-primary select.is-focused,html.theme--documenter-dark .docstring>section>a.select.docs-sourcelink select.is-focused,html.theme--documenter-dark .select.is-primary select:active,html.theme--documenter-dark .docstring>section>a.select.docs-sourcelink select:active,html.theme--documenter-dark .select.is-primary select.is-active,html.theme--documenter-dark .docstring>section>a.select.docs-sourcelink select.is-active{box-shadow:0 0 0 0.125em rgba(55,90,127,0.25)}html.theme--documenter-dark .select.is-link:not(:hover)::after{border-color:#1abc9c}html.theme--documenter-dark .select.is-link select{border-color:#1abc9c}html.theme--documenter-dark .select.is-link select:hover,html.theme--documenter-dark .select.is-link select.is-hovered{border-color:#17a689}html.theme--documenter-dark .select.is-link select:focus,html.theme--documenter-dark .select.is-link select.is-focused,html.theme--documenter-dark .select.is-link select:active,html.theme--documenter-dark .select.is-link select.is-active{box-shadow:0 0 0 0.125em rgba(26,188,156,0.25)}html.theme--documenter-dark .select.is-info:not(:hover)::after{border-color:#024c7d}html.theme--documenter-dark .select.is-info select{border-color:#024c7d}html.theme--documenter-dark .select.is-info select:hover,html.theme--documenter-dark .select.is-info select.is-hovered{border-color:#023d64}html.theme--documenter-dark .select.is-info select:focus,html.theme--documenter-dark .select.is-info select.is-focused,html.theme--documenter-dark .select.is-info select:active,html.theme--documenter-dark .select.is-info select.is-active{box-shadow:0 0 0 0.125em rgba(2,76,125,0.25)}html.theme--documenter-dark .select.is-success:not(:hover)::after{border-color:#008438}html.theme--documenter-dark .select.is-success select{border-color:#008438}html.theme--documenter-dark .select.is-success select:hover,html.theme--documenter-dark .select.is-success select.is-hovered{border-color:#006b2d}html.theme--documenter-dark .select.is-success select:focus,html.theme--documenter-dark .select.is-success select.is-focused,html.theme--documenter-dark .select.is-success select:active,html.theme--documenter-dark .select.is-success select.is-active{box-shadow:0 0 0 0.125em rgba(0,132,56,0.25)}html.theme--documenter-dark .select.is-warning:not(:hover)::after{border-color:#ad8100}html.theme--documenter-dark .select.is-warning select{border-color:#ad8100}html.theme--documenter-dark .select.is-warning select:hover,html.theme--documenter-dark .select.is-warning select.is-hovered{border-color:#946e00}html.theme--documenter-dark .select.is-warning select:focus,html.theme--documenter-dark .select.is-warning select.is-focused,html.theme--documenter-dark .select.is-warning select:active,html.theme--documenter-dark .select.is-warning select.is-active{box-shadow:0 0 0 0.125em rgba(173,129,0,0.25)}html.theme--documenter-dark .select.is-danger:not(:hover)::after{border-color:#9e1b0d}html.theme--documenter-dark .select.is-danger select{border-color:#9e1b0d}html.theme--documenter-dark .select.is-danger select:hover,html.theme--documenter-dark .select.is-danger select.is-hovered{border-color:#86170b}html.theme--documenter-dark .select.is-danger select:focus,html.theme--documenter-dark .select.is-danger select.is-focused,html.theme--documenter-dark .select.is-danger select:active,html.theme--documenter-dark .select.is-danger select.is-active{box-shadow:0 0 0 0.125em rgba(158,27,13,0.25)}html.theme--documenter-dark .select.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.select{border-radius:3px;font-size:.85em}html.theme--documenter-dark .select.is-medium{font-size:1.25rem}html.theme--documenter-dark .select.is-large{font-size:1.5rem}html.theme--documenter-dark .select.is-disabled::after{border-color:#fff}html.theme--documenter-dark .select.is-fullwidth{width:100%}html.theme--documenter-dark .select.is-fullwidth select{width:100%}html.theme--documenter-dark .select.is-loading::after{margin-top:0;position:absolute;right:0.625em;top:0.625em;transform:none}html.theme--documenter-dark .select.is-loading.is-small:after,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-loading:after{font-size:.85em}html.theme--documenter-dark .select.is-loading.is-medium:after{font-size:1.25rem}html.theme--documenter-dark .select.is-loading.is-large:after{font-size:1.5rem}html.theme--documenter-dark .file{align-items:stretch;display:flex;justify-content:flex-start;position:relative}html.theme--documenter-dark .file.is-white .file-cta{background-color:#fff;border-color:transparent;color:#0a0a0a}html.theme--documenter-dark .file.is-white:hover .file-cta,html.theme--documenter-dark .file.is-white.is-hovered .file-cta{background-color:#f9f9f9;border-color:transparent;color:#0a0a0a}html.theme--documenter-dark .file.is-white:focus .file-cta,html.theme--documenter-dark .file.is-white.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(255,255,255,0.25);color:#0a0a0a}html.theme--documenter-dark .file.is-white:active .file-cta,html.theme--documenter-dark .file.is-white.is-active .file-cta{background-color:#f2f2f2;border-color:transparent;color:#0a0a0a}html.theme--documenter-dark .file.is-black .file-cta{background-color:#0a0a0a;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-black:hover .file-cta,html.theme--documenter-dark .file.is-black.is-hovered .file-cta{background-color:#040404;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-black:focus .file-cta,html.theme--documenter-dark .file.is-black.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(10,10,10,0.25);color:#fff}html.theme--documenter-dark .file.is-black:active .file-cta,html.theme--documenter-dark .file.is-black.is-active .file-cta{background-color:#000;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-light .file-cta{background-color:#ecf0f1;border-color:transparent;color:#282f2f}html.theme--documenter-dark .file.is-light:hover .file-cta,html.theme--documenter-dark .file.is-light.is-hovered .file-cta{background-color:#e5eaec;border-color:transparent;color:#282f2f}html.theme--documenter-dark .file.is-light:focus .file-cta,html.theme--documenter-dark .file.is-light.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(236,240,241,0.25);color:#282f2f}html.theme--documenter-dark .file.is-light:active .file-cta,html.theme--documenter-dark .file.is-light.is-active .file-cta{background-color:#dde4e6;border-color:transparent;color:#282f2f}html.theme--documenter-dark .file.is-dark .file-cta,html.theme--documenter-dark .content kbd.file .file-cta{background-color:#282f2f;border-color:transparent;color:#ecf0f1}html.theme--documenter-dark .file.is-dark:hover .file-cta,html.theme--documenter-dark .content kbd.file:hover .file-cta,html.theme--documenter-dark .file.is-dark.is-hovered .file-cta,html.theme--documenter-dark .content kbd.file.is-hovered .file-cta{background-color:#232829;border-color:transparent;color:#ecf0f1}html.theme--documenter-dark .file.is-dark:focus .file-cta,html.theme--documenter-dark .content kbd.file:focus .file-cta,html.theme--documenter-dark .file.is-dark.is-focused .file-cta,html.theme--documenter-dark .content kbd.file.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(40,47,47,0.25);color:#ecf0f1}html.theme--documenter-dark .file.is-dark:active .file-cta,html.theme--documenter-dark .content kbd.file:active .file-cta,html.theme--documenter-dark .file.is-dark.is-active .file-cta,html.theme--documenter-dark .content kbd.file.is-active .file-cta{background-color:#1d2122;border-color:transparent;color:#ecf0f1}html.theme--documenter-dark .file.is-primary .file-cta,html.theme--documenter-dark .docstring>section>a.file.docs-sourcelink .file-cta{background-color:#375a7f;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-primary:hover .file-cta,html.theme--documenter-dark .docstring>section>a.file.docs-sourcelink:hover .file-cta,html.theme--documenter-dark .file.is-primary.is-hovered .file-cta,html.theme--documenter-dark .docstring>section>a.file.is-hovered.docs-sourcelink .file-cta{background-color:#335476;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-primary:focus .file-cta,html.theme--documenter-dark .docstring>section>a.file.docs-sourcelink:focus .file-cta,html.theme--documenter-dark .file.is-primary.is-focused .file-cta,html.theme--documenter-dark .docstring>section>a.file.is-focused.docs-sourcelink .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(55,90,127,0.25);color:#fff}html.theme--documenter-dark .file.is-primary:active .file-cta,html.theme--documenter-dark .docstring>section>a.file.docs-sourcelink:active .file-cta,html.theme--documenter-dark .file.is-primary.is-active .file-cta,html.theme--documenter-dark .docstring>section>a.file.is-active.docs-sourcelink .file-cta{background-color:#2f4d6d;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-link .file-cta{background-color:#1abc9c;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-link:hover .file-cta,html.theme--documenter-dark .file.is-link.is-hovered .file-cta{background-color:#18b193;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-link:focus .file-cta,html.theme--documenter-dark .file.is-link.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(26,188,156,0.25);color:#fff}html.theme--documenter-dark .file.is-link:active .file-cta,html.theme--documenter-dark .file.is-link.is-active .file-cta{background-color:#17a689;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-info .file-cta{background-color:#024c7d;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-info:hover .file-cta,html.theme--documenter-dark .file.is-info.is-hovered .file-cta{background-color:#024470;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-info:focus .file-cta,html.theme--documenter-dark .file.is-info.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(2,76,125,0.25);color:#fff}html.theme--documenter-dark .file.is-info:active .file-cta,html.theme--documenter-dark .file.is-info.is-active .file-cta{background-color:#023d64;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-success .file-cta{background-color:#008438;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-success:hover .file-cta,html.theme--documenter-dark .file.is-success.is-hovered .file-cta{background-color:#073;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-success:focus .file-cta,html.theme--documenter-dark .file.is-success.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(0,132,56,0.25);color:#fff}html.theme--documenter-dark .file.is-success:active .file-cta,html.theme--documenter-dark .file.is-success.is-active .file-cta{background-color:#006b2d;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-warning .file-cta{background-color:#ad8100;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-warning:hover .file-cta,html.theme--documenter-dark .file.is-warning.is-hovered .file-cta{background-color:#a07700;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-warning:focus .file-cta,html.theme--documenter-dark .file.is-warning.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(173,129,0,0.25);color:#fff}html.theme--documenter-dark .file.is-warning:active .file-cta,html.theme--documenter-dark .file.is-warning.is-active .file-cta{background-color:#946e00;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-danger .file-cta{background-color:#9e1b0d;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-danger:hover .file-cta,html.theme--documenter-dark .file.is-danger.is-hovered .file-cta{background-color:#92190c;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-danger:focus .file-cta,html.theme--documenter-dark .file.is-danger.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(158,27,13,0.25);color:#fff}html.theme--documenter-dark .file.is-danger:active .file-cta,html.theme--documenter-dark .file.is-danger.is-active .file-cta{background-color:#86170b;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.file{font-size:.85em}html.theme--documenter-dark .file.is-medium{font-size:1.25rem}html.theme--documenter-dark .file.is-medium .file-icon .fa{font-size:21px}html.theme--documenter-dark .file.is-large{font-size:1.5rem}html.theme--documenter-dark .file.is-large .file-icon .fa{font-size:28px}html.theme--documenter-dark .file.has-name .file-cta{border-bottom-right-radius:0;border-top-right-radius:0}html.theme--documenter-dark .file.has-name .file-name{border-bottom-left-radius:0;border-top-left-radius:0}html.theme--documenter-dark .file.has-name.is-empty .file-cta{border-radius:.4em}html.theme--documenter-dark .file.has-name.is-empty .file-name{display:none}html.theme--documenter-dark .file.is-boxed .file-label{flex-direction:column}html.theme--documenter-dark .file.is-boxed .file-cta{flex-direction:column;height:auto;padding:1em 3em}html.theme--documenter-dark .file.is-boxed .file-name{border-width:0 1px 1px}html.theme--documenter-dark .file.is-boxed .file-icon{height:1.5em;width:1.5em}html.theme--documenter-dark .file.is-boxed .file-icon .fa{font-size:21px}html.theme--documenter-dark .file.is-boxed.is-small .file-icon .fa,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-boxed .file-icon .fa{font-size:14px}html.theme--documenter-dark .file.is-boxed.is-medium .file-icon .fa{font-size:28px}html.theme--documenter-dark .file.is-boxed.is-large .file-icon .fa{font-size:35px}html.theme--documenter-dark .file.is-boxed.has-name .file-cta{border-radius:.4em .4em 0 0}html.theme--documenter-dark .file.is-boxed.has-name .file-name{border-radius:0 0 .4em .4em;border-width:0 1px 1px}html.theme--documenter-dark .file.is-centered{justify-content:center}html.theme--documenter-dark .file.is-fullwidth .file-label{width:100%}html.theme--documenter-dark .file.is-fullwidth .file-name{flex-grow:1;max-width:none}html.theme--documenter-dark .file.is-right{justify-content:flex-end}html.theme--documenter-dark .file.is-right .file-cta{border-radius:0 .4em .4em 0}html.theme--documenter-dark .file.is-right .file-name{border-radius:.4em 0 0 .4em;border-width:1px 0 1px 1px;order:-1}html.theme--documenter-dark .file-label{align-items:stretch;display:flex;cursor:pointer;justify-content:flex-start;overflow:hidden;position:relative}html.theme--documenter-dark .file-label:hover .file-cta{background-color:#e5eaec;color:#282f2f}html.theme--documenter-dark .file-label:hover .file-name{border-color:#596668}html.theme--documenter-dark .file-label:active .file-cta{background-color:#dde4e6;color:#282f2f}html.theme--documenter-dark .file-label:active .file-name{border-color:#535f61}html.theme--documenter-dark .file-input{height:100%;left:0;opacity:0;outline:none;position:absolute;top:0;width:100%}html.theme--documenter-dark .file-cta,html.theme--documenter-dark .file-name{border-color:#5e6d6f;border-radius:.4em;font-size:1em;padding-left:1em;padding-right:1em;white-space:nowrap}html.theme--documenter-dark .file-cta{background-color:#ecf0f1;color:#343c3d}html.theme--documenter-dark .file-name{border-color:#5e6d6f;border-style:solid;border-width:1px 1px 1px 0;display:block;max-width:16em;overflow:hidden;text-align:left;text-overflow:ellipsis}html.theme--documenter-dark .file-icon{align-items:center;display:flex;height:1em;justify-content:center;margin-right:0.5em;width:1em}html.theme--documenter-dark .file-icon .fa{font-size:14px}html.theme--documenter-dark .label{color:#282f2f;display:block;font-size:15px;font-weight:700}html.theme--documenter-dark .label:not(:last-child){margin-bottom:0.5em}html.theme--documenter-dark .label.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.label{font-size:.85em}html.theme--documenter-dark .label.is-medium{font-size:1.25rem}html.theme--documenter-dark .label.is-large{font-size:1.5rem}html.theme--documenter-dark .help{display:block;font-size:.85em;margin-top:0.25rem}html.theme--documenter-dark .help.is-white{color:#fff}html.theme--documenter-dark .help.is-black{color:#0a0a0a}html.theme--documenter-dark .help.is-light{color:#ecf0f1}html.theme--documenter-dark .help.is-dark,html.theme--documenter-dark .content kbd.help{color:#282f2f}html.theme--documenter-dark .help.is-primary,html.theme--documenter-dark .docstring>section>a.help.docs-sourcelink{color:#375a7f}html.theme--documenter-dark .help.is-link{color:#1abc9c}html.theme--documenter-dark .help.is-info{color:#024c7d}html.theme--documenter-dark .help.is-success{color:#008438}html.theme--documenter-dark .help.is-warning{color:#ad8100}html.theme--documenter-dark .help.is-danger{color:#9e1b0d}html.theme--documenter-dark .field:not(:last-child){margin-bottom:0.75rem}html.theme--documenter-dark .field.has-addons{display:flex;justify-content:flex-start}html.theme--documenter-dark .field.has-addons .control:not(:last-child){margin-right:-1px}html.theme--documenter-dark .field.has-addons .control:not(:first-child):not(:last-child) .button,html.theme--documenter-dark .field.has-addons .control:not(:first-child):not(:last-child) .input,html.theme--documenter-dark .field.has-addons .control:not(:first-child):not(:last-child) #documenter .docs-sidebar form.docs-search>input,html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control:not(:first-child):not(:last-child) form.docs-search>input,html.theme--documenter-dark .field.has-addons .control:not(:first-child):not(:last-child) .select select{border-radius:0}html.theme--documenter-dark .field.has-addons .control:first-child:not(:only-child) .button,html.theme--documenter-dark .field.has-addons .control:first-child:not(:only-child) .input,html.theme--documenter-dark .field.has-addons .control:first-child:not(:only-child) #documenter .docs-sidebar form.docs-search>input,html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control:first-child:not(:only-child) form.docs-search>input,html.theme--documenter-dark .field.has-addons .control:first-child:not(:only-child) .select select{border-bottom-right-radius:0;border-top-right-radius:0}html.theme--documenter-dark .field.has-addons .control:last-child:not(:only-child) .button,html.theme--documenter-dark .field.has-addons .control:last-child:not(:only-child) .input,html.theme--documenter-dark .field.has-addons .control:last-child:not(:only-child) #documenter .docs-sidebar form.docs-search>input,html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control:last-child:not(:only-child) form.docs-search>input,html.theme--documenter-dark .field.has-addons .control:last-child:not(:only-child) .select select{border-bottom-left-radius:0;border-top-left-radius:0}html.theme--documenter-dark .field.has-addons .control .button:not([disabled]):hover,html.theme--documenter-dark .field.has-addons .control .button.is-hovered:not([disabled]),html.theme--documenter-dark .field.has-addons .control .input:not([disabled]):hover,html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):hover,html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):hover,html.theme--documenter-dark .field.has-addons .control .input.is-hovered:not([disabled]),html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-hovered:not([disabled]),html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-hovered:not([disabled]),html.theme--documenter-dark .field.has-addons .control .select select:not([disabled]):hover,html.theme--documenter-dark .field.has-addons .control .select select.is-hovered:not([disabled]){z-index:2}html.theme--documenter-dark .field.has-addons .control .button:not([disabled]):focus,html.theme--documenter-dark .field.has-addons .control .button.is-focused:not([disabled]),html.theme--documenter-dark .field.has-addons .control .button:not([disabled]):active,html.theme--documenter-dark .field.has-addons .control .button.is-active:not([disabled]),html.theme--documenter-dark .field.has-addons .control .input:not([disabled]):focus,html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):focus,html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):focus,html.theme--documenter-dark .field.has-addons .control .input.is-focused:not([disabled]),html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-focused:not([disabled]),html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-focused:not([disabled]),html.theme--documenter-dark .field.has-addons .control .input:not([disabled]):active,html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):active,html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):active,html.theme--documenter-dark .field.has-addons .control .input.is-active:not([disabled]),html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-active:not([disabled]),html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-active:not([disabled]),html.theme--documenter-dark .field.has-addons .control .select select:not([disabled]):focus,html.theme--documenter-dark .field.has-addons .control .select select.is-focused:not([disabled]),html.theme--documenter-dark .field.has-addons .control .select select:not([disabled]):active,html.theme--documenter-dark .field.has-addons .control .select select.is-active:not([disabled]){z-index:3}html.theme--documenter-dark .field.has-addons .control .button:not([disabled]):focus:hover,html.theme--documenter-dark .field.has-addons .control .button.is-focused:not([disabled]):hover,html.theme--documenter-dark .field.has-addons .control .button:not([disabled]):active:hover,html.theme--documenter-dark .field.has-addons .control .button.is-active:not([disabled]):hover,html.theme--documenter-dark .field.has-addons .control .input:not([disabled]):focus:hover,html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):focus:hover,html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):focus:hover,html.theme--documenter-dark .field.has-addons .control .input.is-focused:not([disabled]):hover,html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-focused:not([disabled]):hover,html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-focused:not([disabled]):hover,html.theme--documenter-dark .field.has-addons .control .input:not([disabled]):active:hover,html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):active:hover,html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):active:hover,html.theme--documenter-dark .field.has-addons .control .input.is-active:not([disabled]):hover,html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-active:not([disabled]):hover,html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-active:not([disabled]):hover,html.theme--documenter-dark .field.has-addons .control .select select:not([disabled]):focus:hover,html.theme--documenter-dark .field.has-addons .control .select select.is-focused:not([disabled]):hover,html.theme--documenter-dark .field.has-addons .control .select select:not([disabled]):active:hover,html.theme--documenter-dark .field.has-addons .control .select select.is-active:not([disabled]):hover{z-index:4}html.theme--documenter-dark .field.has-addons .control.is-expanded{flex-grow:1;flex-shrink:1}html.theme--documenter-dark .field.has-addons.has-addons-centered{justify-content:center}html.theme--documenter-dark .field.has-addons.has-addons-right{justify-content:flex-end}html.theme--documenter-dark .field.has-addons.has-addons-fullwidth .control{flex-grow:1;flex-shrink:0}html.theme--documenter-dark .field.is-grouped{display:flex;justify-content:flex-start}html.theme--documenter-dark .field.is-grouped>.control{flex-shrink:0}html.theme--documenter-dark .field.is-grouped>.control:not(:last-child){margin-bottom:0;margin-right:0.75rem}html.theme--documenter-dark .field.is-grouped>.control.is-expanded{flex-grow:1;flex-shrink:1}html.theme--documenter-dark .field.is-grouped.is-grouped-centered{justify-content:center}html.theme--documenter-dark .field.is-grouped.is-grouped-right{justify-content:flex-end}html.theme--documenter-dark .field.is-grouped.is-grouped-multiline{flex-wrap:wrap}html.theme--documenter-dark .field.is-grouped.is-grouped-multiline>.control:last-child,html.theme--documenter-dark .field.is-grouped.is-grouped-multiline>.control:not(:last-child){margin-bottom:0.75rem}html.theme--documenter-dark .field.is-grouped.is-grouped-multiline:last-child{margin-bottom:-0.75rem}html.theme--documenter-dark .field.is-grouped.is-grouped-multiline:not(:last-child){margin-bottom:0}@media screen and (min-width: 769px),print{html.theme--documenter-dark .field.is-horizontal{display:flex}}html.theme--documenter-dark .field-label .label{font-size:inherit}@media screen and (max-width: 768px){html.theme--documenter-dark .field-label{margin-bottom:0.5rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .field-label{flex-basis:0;flex-grow:1;flex-shrink:0;margin-right:1.5rem;text-align:right}html.theme--documenter-dark .field-label.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.field-label{font-size:.85em;padding-top:0.375em}html.theme--documenter-dark .field-label.is-normal{padding-top:0.375em}html.theme--documenter-dark .field-label.is-medium{font-size:1.25rem;padding-top:0.375em}html.theme--documenter-dark .field-label.is-large{font-size:1.5rem;padding-top:0.375em}}html.theme--documenter-dark .field-body .field .field{margin-bottom:0}@media screen and (min-width: 769px),print{html.theme--documenter-dark .field-body{display:flex;flex-basis:0;flex-grow:5;flex-shrink:1}html.theme--documenter-dark .field-body .field{margin-bottom:0}html.theme--documenter-dark .field-body>.field{flex-shrink:1}html.theme--documenter-dark .field-body>.field:not(.is-narrow){flex-grow:1}html.theme--documenter-dark .field-body>.field:not(:last-child){margin-right:0.75rem}}html.theme--documenter-dark .control{box-sizing:border-box;clear:both;font-size:15px;position:relative;text-align:left}html.theme--documenter-dark .control.has-icons-left .input:focus~.icon,html.theme--documenter-dark .control.has-icons-left #documenter .docs-sidebar form.docs-search>input:focus~.icon,html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-left form.docs-search>input:focus~.icon,html.theme--documenter-dark .control.has-icons-left .select:focus~.icon,html.theme--documenter-dark .control.has-icons-right .input:focus~.icon,html.theme--documenter-dark .control.has-icons-right #documenter .docs-sidebar form.docs-search>input:focus~.icon,html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-right form.docs-search>input:focus~.icon,html.theme--documenter-dark .control.has-icons-right .select:focus~.icon{color:#5e6d6f}html.theme--documenter-dark .control.has-icons-left .input.is-small~.icon,html.theme--documenter-dark .control.has-icons-left #documenter .docs-sidebar form.docs-search>input~.icon,html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-left form.docs-search>input~.icon,html.theme--documenter-dark .control.has-icons-left .select.is-small~.icon,html.theme--documenter-dark .control.has-icons-right .input.is-small~.icon,html.theme--documenter-dark .control.has-icons-right #documenter .docs-sidebar form.docs-search>input~.icon,html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-right form.docs-search>input~.icon,html.theme--documenter-dark .control.has-icons-right .select.is-small~.icon{font-size:.85em}html.theme--documenter-dark .control.has-icons-left .input.is-medium~.icon,html.theme--documenter-dark .control.has-icons-left #documenter .docs-sidebar form.docs-search>input.is-medium~.icon,html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-left form.docs-search>input.is-medium~.icon,html.theme--documenter-dark .control.has-icons-left .select.is-medium~.icon,html.theme--documenter-dark .control.has-icons-right .input.is-medium~.icon,html.theme--documenter-dark .control.has-icons-right #documenter .docs-sidebar form.docs-search>input.is-medium~.icon,html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-right form.docs-search>input.is-medium~.icon,html.theme--documenter-dark .control.has-icons-right .select.is-medium~.icon{font-size:1.25rem}html.theme--documenter-dark .control.has-icons-left .input.is-large~.icon,html.theme--documenter-dark .control.has-icons-left #documenter .docs-sidebar form.docs-search>input.is-large~.icon,html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-left form.docs-search>input.is-large~.icon,html.theme--documenter-dark .control.has-icons-left .select.is-large~.icon,html.theme--documenter-dark .control.has-icons-right .input.is-large~.icon,html.theme--documenter-dark .control.has-icons-right #documenter .docs-sidebar form.docs-search>input.is-large~.icon,html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-right form.docs-search>input.is-large~.icon,html.theme--documenter-dark .control.has-icons-right .select.is-large~.icon{font-size:1.5rem}html.theme--documenter-dark .control.has-icons-left .icon,html.theme--documenter-dark .control.has-icons-right .icon{color:#dbdee0;height:2.25em;pointer-events:none;position:absolute;top:0;width:2.25em;z-index:4}html.theme--documenter-dark .control.has-icons-left .input,html.theme--documenter-dark .control.has-icons-left #documenter .docs-sidebar form.docs-search>input,html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-left form.docs-search>input,html.theme--documenter-dark .control.has-icons-left .select select{padding-left:2.25em}html.theme--documenter-dark .control.has-icons-left .icon.is-left{left:0}html.theme--documenter-dark .control.has-icons-right .input,html.theme--documenter-dark .control.has-icons-right #documenter .docs-sidebar form.docs-search>input,html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-right form.docs-search>input,html.theme--documenter-dark .control.has-icons-right .select select{padding-right:2.25em}html.theme--documenter-dark .control.has-icons-right .icon.is-right{right:0}html.theme--documenter-dark .control.is-loading::after{position:absolute !important;right:0.625em;top:0.625em;z-index:4}html.theme--documenter-dark .control.is-loading.is-small:after,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-loading:after{font-size:.85em}html.theme--documenter-dark .control.is-loading.is-medium:after{font-size:1.25rem}html.theme--documenter-dark .control.is-loading.is-large:after{font-size:1.5rem}html.theme--documenter-dark .breadcrumb{font-size:15px;white-space:nowrap}html.theme--documenter-dark .breadcrumb a{align-items:center;color:#1abc9c;display:flex;justify-content:center;padding:0 .75em}html.theme--documenter-dark .breadcrumb a:hover{color:#1dd2af}html.theme--documenter-dark .breadcrumb li{align-items:center;display:flex}html.theme--documenter-dark .breadcrumb li:first-child a{padding-left:0}html.theme--documenter-dark .breadcrumb li.is-active a{color:#f2f2f2;cursor:default;pointer-events:none}html.theme--documenter-dark .breadcrumb li+li::before{color:#8c9b9d;content:"\0002f"}html.theme--documenter-dark .breadcrumb ul,html.theme--documenter-dark .breadcrumb ol{align-items:flex-start;display:flex;flex-wrap:wrap;justify-content:flex-start}html.theme--documenter-dark .breadcrumb .icon:first-child{margin-right:0.5em}html.theme--documenter-dark .breadcrumb .icon:last-child{margin-left:0.5em}html.theme--documenter-dark .breadcrumb.is-centered ol,html.theme--documenter-dark .breadcrumb.is-centered ul{justify-content:center}html.theme--documenter-dark .breadcrumb.is-right ol,html.theme--documenter-dark .breadcrumb.is-right ul{justify-content:flex-end}html.theme--documenter-dark .breadcrumb.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.breadcrumb{font-size:.85em}html.theme--documenter-dark .breadcrumb.is-medium{font-size:1.25rem}html.theme--documenter-dark .breadcrumb.is-large{font-size:1.5rem}html.theme--documenter-dark .breadcrumb.has-arrow-separator li+li::before{content:"\02192"}html.theme--documenter-dark .breadcrumb.has-bullet-separator li+li::before{content:"\02022"}html.theme--documenter-dark .breadcrumb.has-dot-separator li+li::before{content:"\000b7"}html.theme--documenter-dark .breadcrumb.has-succeeds-separator li+li::before{content:"\0227B"}html.theme--documenter-dark .card{background-color:#fff;box-shadow:0 2px 3px rgba(10,10,10,0.1),0 0 0 1px rgba(10,10,10,0.1);color:#fff;max-width:100%;position:relative}html.theme--documenter-dark .card-header{background-color:rgba(0,0,0,0);align-items:stretch;box-shadow:0 1px 2px rgba(10,10,10,0.1);display:flex}html.theme--documenter-dark .card-header-title{align-items:center;color:#f2f2f2;display:flex;flex-grow:1;font-weight:700;padding:.75rem}html.theme--documenter-dark .card-header-title.is-centered{justify-content:center}html.theme--documenter-dark .card-header-icon{align-items:center;cursor:pointer;display:flex;justify-content:center;padding:.75rem}html.theme--documenter-dark .card-image{display:block;position:relative}html.theme--documenter-dark .card-content{background-color:rgba(0,0,0,0);padding:1.5rem}html.theme--documenter-dark .card-footer{background-color:rgba(0,0,0,0);border-top:1px solid #5e6d6f;align-items:stretch;display:flex}html.theme--documenter-dark .card-footer-item{align-items:center;display:flex;flex-basis:0;flex-grow:1;flex-shrink:0;justify-content:center;padding:.75rem}html.theme--documenter-dark .card-footer-item:not(:last-child){border-right:1px solid #5e6d6f}html.theme--documenter-dark .card .media:not(:last-child){margin-bottom:1.5rem}html.theme--documenter-dark .dropdown{display:inline-flex;position:relative;vertical-align:top}html.theme--documenter-dark .dropdown.is-active .dropdown-menu,html.theme--documenter-dark .dropdown.is-hoverable:hover .dropdown-menu{display:block}html.theme--documenter-dark .dropdown.is-right .dropdown-menu{left:auto;right:0}html.theme--documenter-dark .dropdown.is-up .dropdown-menu{bottom:100%;padding-bottom:4px;padding-top:initial;top:auto}html.theme--documenter-dark .dropdown-menu{display:none;left:0;min-width:12rem;padding-top:4px;position:absolute;top:100%;z-index:20}html.theme--documenter-dark .dropdown-content{background-color:#282f2f;border-radius:.4em;box-shadow:0 2px 3px rgba(10,10,10,0.1),0 0 0 1px rgba(10,10,10,0.1);padding-bottom:.5rem;padding-top:.5rem}html.theme--documenter-dark .dropdown-item{color:#fff;display:block;font-size:0.875rem;line-height:1.5;padding:0.375rem 1rem;position:relative}html.theme--documenter-dark a.dropdown-item,html.theme--documenter-dark button.dropdown-item{padding-right:3rem;text-align:left;white-space:nowrap;width:100%}html.theme--documenter-dark a.dropdown-item:hover,html.theme--documenter-dark button.dropdown-item:hover{background-color:#282f2f;color:#0a0a0a}html.theme--documenter-dark a.dropdown-item.is-active,html.theme--documenter-dark button.dropdown-item.is-active{background-color:#1abc9c;color:#fff}html.theme--documenter-dark .dropdown-divider{background-color:#5e6d6f;border:none;display:block;height:1px;margin:0.5rem 0}html.theme--documenter-dark .level{align-items:center;justify-content:space-between}html.theme--documenter-dark .level code{border-radius:.4em}html.theme--documenter-dark .level img{display:inline-block;vertical-align:top}html.theme--documenter-dark .level.is-mobile{display:flex}html.theme--documenter-dark .level.is-mobile .level-left,html.theme--documenter-dark .level.is-mobile .level-right{display:flex}html.theme--documenter-dark .level.is-mobile .level-left+.level-right{margin-top:0}html.theme--documenter-dark .level.is-mobile .level-item:not(:last-child){margin-bottom:0;margin-right:.75rem}html.theme--documenter-dark .level.is-mobile .level-item:not(.is-narrow){flex-grow:1}@media screen and (min-width: 769px),print{html.theme--documenter-dark .level{display:flex}html.theme--documenter-dark .level>.level-item:not(.is-narrow){flex-grow:1}}html.theme--documenter-dark .level-item{align-items:center;display:flex;flex-basis:auto;flex-grow:0;flex-shrink:0;justify-content:center}html.theme--documenter-dark .level-item .title,html.theme--documenter-dark .level-item .subtitle{margin-bottom:0}@media screen and (max-width: 768px){html.theme--documenter-dark .level-item:not(:last-child){margin-bottom:.75rem}}html.theme--documenter-dark .level-left,html.theme--documenter-dark .level-right{flex-basis:auto;flex-grow:0;flex-shrink:0}html.theme--documenter-dark .level-left .level-item.is-flexible,html.theme--documenter-dark .level-right .level-item.is-flexible{flex-grow:1}@media screen and (min-width: 769px),print{html.theme--documenter-dark .level-left .level-item:not(:last-child),html.theme--documenter-dark .level-right .level-item:not(:last-child){margin-right:.75rem}}html.theme--documenter-dark .level-left{align-items:center;justify-content:flex-start}@media screen and (max-width: 768px){html.theme--documenter-dark .level-left+.level-right{margin-top:1.5rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .level-left{display:flex}}html.theme--documenter-dark .level-right{align-items:center;justify-content:flex-end}@media screen and (min-width: 769px),print{html.theme--documenter-dark .level-right{display:flex}}html.theme--documenter-dark .list{background-color:#fff;border-radius:.4em;box-shadow:0 2px 3px rgba(10,10,10,0.1),0 0 0 1px rgba(10,10,10,0.1)}html.theme--documenter-dark .list-item{display:block;padding:0.5em 1em}html.theme--documenter-dark .list-item:not(a){color:#fff}html.theme--documenter-dark .list-item:first-child{border-top-left-radius:.4em;border-top-right-radius:.4em}html.theme--documenter-dark .list-item:last-child{border-bottom-left-radius:.4em;border-bottom-right-radius:.4em}html.theme--documenter-dark .list-item:not(:last-child){border-bottom:1px solid #5e6d6f}html.theme--documenter-dark .list-item.is-active{background-color:#1abc9c;color:#fff}html.theme--documenter-dark a.list-item{background-color:#282f2f;cursor:pointer}html.theme--documenter-dark .media{align-items:flex-start;display:flex;text-align:left}html.theme--documenter-dark .media .content:not(:last-child){margin-bottom:0.75rem}html.theme--documenter-dark .media .media{border-top:1px solid rgba(94,109,111,0.5);display:flex;padding-top:0.75rem}html.theme--documenter-dark .media .media .content:not(:last-child),html.theme--documenter-dark .media .media .control:not(:last-child){margin-bottom:0.5rem}html.theme--documenter-dark .media .media .media{padding-top:0.5rem}html.theme--documenter-dark .media .media .media+.media{margin-top:0.5rem}html.theme--documenter-dark .media+.media{border-top:1px solid rgba(94,109,111,0.5);margin-top:1rem;padding-top:1rem}html.theme--documenter-dark .media.is-large+.media{margin-top:1.5rem;padding-top:1.5rem}html.theme--documenter-dark .media-left,html.theme--documenter-dark .media-right{flex-basis:auto;flex-grow:0;flex-shrink:0}html.theme--documenter-dark .media-left{margin-right:1rem}html.theme--documenter-dark .media-right{margin-left:1rem}html.theme--documenter-dark .media-content{flex-basis:auto;flex-grow:1;flex-shrink:1;text-align:left}@media screen and (max-width: 768px){html.theme--documenter-dark .media-content{overflow-x:auto}}html.theme--documenter-dark .menu{font-size:15px}html.theme--documenter-dark .menu.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.menu{font-size:.85em}html.theme--documenter-dark .menu.is-medium{font-size:1.25rem}html.theme--documenter-dark .menu.is-large{font-size:1.5rem}html.theme--documenter-dark .menu-list{line-height:1.25}html.theme--documenter-dark .menu-list a{border-radius:3px;color:#fff;display:block;padding:0.5em 0.75em}html.theme--documenter-dark .menu-list a:hover{background-color:#282f2f;color:#f2f2f2}html.theme--documenter-dark .menu-list a.is-active{background-color:#1abc9c;color:#fff}html.theme--documenter-dark .menu-list li ul{border-left:1px solid #5e6d6f;margin:.75em;padding-left:.75em}html.theme--documenter-dark .menu-label{color:#fff;font-size:.75em;letter-spacing:.1em;text-transform:uppercase}html.theme--documenter-dark .menu-label:not(:first-child){margin-top:1em}html.theme--documenter-dark .menu-label:not(:last-child){margin-bottom:1em}html.theme--documenter-dark .message{background-color:#282f2f;border-radius:.4em;font-size:15px}html.theme--documenter-dark .message strong{color:currentColor}html.theme--documenter-dark .message a:not(.button):not(.tag):not(.dropdown-item){color:currentColor;text-decoration:underline}html.theme--documenter-dark .message.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.message{font-size:.85em}html.theme--documenter-dark .message.is-medium{font-size:1.25rem}html.theme--documenter-dark .message.is-large{font-size:1.5rem}html.theme--documenter-dark .message.is-white{background-color:#fff}html.theme--documenter-dark .message.is-white .message-header{background-color:#fff;color:#0a0a0a}html.theme--documenter-dark .message.is-white .message-body{border-color:#fff;color:#4d4d4d}html.theme--documenter-dark .message.is-black{background-color:#fafafa}html.theme--documenter-dark .message.is-black .message-header{background-color:#0a0a0a;color:#fff}html.theme--documenter-dark .message.is-black .message-body{border-color:#0a0a0a;color:#090909}html.theme--documenter-dark .message.is-light{background-color:#f9fafb}html.theme--documenter-dark .message.is-light .message-header{background-color:#ecf0f1;color:#282f2f}html.theme--documenter-dark .message.is-light .message-body{border-color:#ecf0f1;color:#505050}html.theme--documenter-dark .message.is-dark,html.theme--documenter-dark .content kbd.message{background-color:#f9fafa}html.theme--documenter-dark .message.is-dark .message-header,html.theme--documenter-dark .content kbd.message .message-header{background-color:#282f2f;color:#ecf0f1}html.theme--documenter-dark .message.is-dark .message-body,html.theme--documenter-dark .content kbd.message .message-body{border-color:#282f2f;color:#212526}html.theme--documenter-dark .message.is-primary,html.theme--documenter-dark .docstring>section>a.message.docs-sourcelink{background-color:#f8fafc}html.theme--documenter-dark .message.is-primary .message-header,html.theme--documenter-dark .docstring>section>a.message.docs-sourcelink .message-header{background-color:#375a7f;color:#fff}html.theme--documenter-dark .message.is-primary .message-body,html.theme--documenter-dark .docstring>section>a.message.docs-sourcelink .message-body{border-color:#375a7f;color:#2b4159}html.theme--documenter-dark .message.is-link{background-color:#f6fefc}html.theme--documenter-dark .message.is-link .message-header{background-color:#1abc9c;color:#fff}html.theme--documenter-dark .message.is-link .message-body{border-color:#1abc9c;color:#0b2f28}html.theme--documenter-dark .message.is-info{background-color:#f5fbff}html.theme--documenter-dark .message.is-info .message-header{background-color:#024c7d;color:#fff}html.theme--documenter-dark .message.is-info .message-body{border-color:#024c7d;color:#033659}html.theme--documenter-dark .message.is-success{background-color:#f5fff9}html.theme--documenter-dark .message.is-success .message-header{background-color:#008438;color:#fff}html.theme--documenter-dark .message.is-success .message-body{border-color:#008438;color:#023518}html.theme--documenter-dark .message.is-warning{background-color:#fffcf5}html.theme--documenter-dark .message.is-warning .message-header{background-color:#ad8100;color:#fff}html.theme--documenter-dark .message.is-warning .message-body{border-color:#ad8100;color:#3d2e03}html.theme--documenter-dark .message.is-danger{background-color:#fef6f6}html.theme--documenter-dark .message.is-danger .message-header{background-color:#9e1b0d;color:#fff}html.theme--documenter-dark .message.is-danger .message-body{border-color:#9e1b0d;color:#7a170c}html.theme--documenter-dark .message-header{align-items:center;background-color:#fff;border-radius:.4em .4em 0 0;color:rgba(0,0,0,0.7);display:flex;font-weight:700;justify-content:space-between;line-height:1.25;padding:0.75em 1em;position:relative}html.theme--documenter-dark .message-header .delete{flex-grow:0;flex-shrink:0;margin-left:0.75em}html.theme--documenter-dark .message-header+.message-body{border-width:0;border-top-left-radius:0;border-top-right-radius:0}html.theme--documenter-dark .message-body{border-color:#5e6d6f;border-radius:.4em;border-style:solid;border-width:0 0 0 4px;color:#fff;padding:1.25em 1.5em}html.theme--documenter-dark .message-body code,html.theme--documenter-dark .message-body pre{background-color:#fff}html.theme--documenter-dark .message-body pre code{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .modal{align-items:center;display:none;flex-direction:column;justify-content:center;overflow:hidden;position:fixed;z-index:40}html.theme--documenter-dark .modal.is-active{display:flex}html.theme--documenter-dark .modal-background{background-color:rgba(10,10,10,0.86)}html.theme--documenter-dark .modal-content,html.theme--documenter-dark .modal-card{margin:0 20px;max-height:calc(100vh - 160px);overflow:auto;position:relative;width:100%}@media screen and (min-width: 769px),print{html.theme--documenter-dark .modal-content,html.theme--documenter-dark .modal-card{margin:0 auto;max-height:calc(100vh - 40px);width:640px}}html.theme--documenter-dark .modal-close{background:none;height:40px;position:fixed;right:20px;top:20px;width:40px}html.theme--documenter-dark .modal-card{display:flex;flex-direction:column;max-height:calc(100vh - 40px);overflow:hidden;-ms-overflow-y:visible}html.theme--documenter-dark .modal-card-head,html.theme--documenter-dark .modal-card-foot{align-items:center;background-color:#282f2f;display:flex;flex-shrink:0;justify-content:flex-start;padding:20px;position:relative}html.theme--documenter-dark .modal-card-head{border-bottom:1px solid #5e6d6f;border-top-left-radius:8px;border-top-right-radius:8px}html.theme--documenter-dark .modal-card-title{color:#f2f2f2;flex-grow:1;flex-shrink:0;font-size:1.5rem;line-height:1}html.theme--documenter-dark .modal-card-foot{border-bottom-left-radius:8px;border-bottom-right-radius:8px;border-top:1px solid #5e6d6f}html.theme--documenter-dark .modal-card-foot .button:not(:last-child){margin-right:0.5em}html.theme--documenter-dark .modal-card-body{-webkit-overflow-scrolling:touch;background-color:#fff;flex-grow:1;flex-shrink:1;overflow:auto;padding:20px}html.theme--documenter-dark .navbar{background-color:#375a7f;min-height:4rem;position:relative;z-index:30}html.theme--documenter-dark .navbar.is-white{background-color:#fff;color:#0a0a0a}html.theme--documenter-dark .navbar.is-white .navbar-brand>.navbar-item,html.theme--documenter-dark .navbar.is-white .navbar-brand .navbar-link{color:#0a0a0a}html.theme--documenter-dark .navbar.is-white .navbar-brand>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-white .navbar-brand>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-white .navbar-brand>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-white .navbar-brand .navbar-link:focus,html.theme--documenter-dark .navbar.is-white .navbar-brand .navbar-link:hover,html.theme--documenter-dark .navbar.is-white .navbar-brand .navbar-link.is-active{background-color:#f2f2f2;color:#0a0a0a}html.theme--documenter-dark .navbar.is-white .navbar-brand .navbar-link::after{border-color:#0a0a0a}html.theme--documenter-dark .navbar.is-white .navbar-burger{color:#0a0a0a}@media screen and (min-width: 1056px){html.theme--documenter-dark .navbar.is-white .navbar-start>.navbar-item,html.theme--documenter-dark .navbar.is-white .navbar-start .navbar-link,html.theme--documenter-dark .navbar.is-white .navbar-end>.navbar-item,html.theme--documenter-dark .navbar.is-white .navbar-end .navbar-link{color:#0a0a0a}html.theme--documenter-dark .navbar.is-white .navbar-start>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-white .navbar-start>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-white .navbar-start>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-white .navbar-start .navbar-link:focus,html.theme--documenter-dark .navbar.is-white .navbar-start .navbar-link:hover,html.theme--documenter-dark .navbar.is-white .navbar-start .navbar-link.is-active,html.theme--documenter-dark .navbar.is-white .navbar-end>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-white .navbar-end>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-white .navbar-end>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-white .navbar-end .navbar-link:focus,html.theme--documenter-dark .navbar.is-white .navbar-end .navbar-link:hover,html.theme--documenter-dark .navbar.is-white .navbar-end .navbar-link.is-active{background-color:#f2f2f2;color:#0a0a0a}html.theme--documenter-dark .navbar.is-white .navbar-start .navbar-link::after,html.theme--documenter-dark .navbar.is-white .navbar-end .navbar-link::after{border-color:#0a0a0a}html.theme--documenter-dark .navbar.is-white .navbar-item.has-dropdown:focus .navbar-link,html.theme--documenter-dark .navbar.is-white .navbar-item.has-dropdown:hover .navbar-link,html.theme--documenter-dark .navbar.is-white .navbar-item.has-dropdown.is-active .navbar-link{background-color:#f2f2f2;color:#0a0a0a}html.theme--documenter-dark .navbar.is-white .navbar-dropdown a.navbar-item.is-active{background-color:#fff;color:#0a0a0a}}html.theme--documenter-dark .navbar.is-black{background-color:#0a0a0a;color:#fff}html.theme--documenter-dark .navbar.is-black .navbar-brand>.navbar-item,html.theme--documenter-dark .navbar.is-black .navbar-brand .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-black .navbar-brand>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-black .navbar-brand>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-black .navbar-brand>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-black .navbar-brand .navbar-link:focus,html.theme--documenter-dark .navbar.is-black .navbar-brand .navbar-link:hover,html.theme--documenter-dark .navbar.is-black .navbar-brand .navbar-link.is-active{background-color:#000;color:#fff}html.theme--documenter-dark .navbar.is-black .navbar-brand .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-black .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--documenter-dark .navbar.is-black .navbar-start>.navbar-item,html.theme--documenter-dark .navbar.is-black .navbar-start .navbar-link,html.theme--documenter-dark .navbar.is-black .navbar-end>.navbar-item,html.theme--documenter-dark .navbar.is-black .navbar-end .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-black .navbar-start>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-black .navbar-start>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-black .navbar-start>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-black .navbar-start .navbar-link:focus,html.theme--documenter-dark .navbar.is-black .navbar-start .navbar-link:hover,html.theme--documenter-dark .navbar.is-black .navbar-start .navbar-link.is-active,html.theme--documenter-dark .navbar.is-black .navbar-end>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-black .navbar-end>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-black .navbar-end>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-black .navbar-end .navbar-link:focus,html.theme--documenter-dark .navbar.is-black .navbar-end .navbar-link:hover,html.theme--documenter-dark .navbar.is-black .navbar-end .navbar-link.is-active{background-color:#000;color:#fff}html.theme--documenter-dark .navbar.is-black .navbar-start .navbar-link::after,html.theme--documenter-dark .navbar.is-black .navbar-end .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-black .navbar-item.has-dropdown:focus .navbar-link,html.theme--documenter-dark .navbar.is-black .navbar-item.has-dropdown:hover .navbar-link,html.theme--documenter-dark .navbar.is-black .navbar-item.has-dropdown.is-active .navbar-link{background-color:#000;color:#fff}html.theme--documenter-dark .navbar.is-black .navbar-dropdown a.navbar-item.is-active{background-color:#0a0a0a;color:#fff}}html.theme--documenter-dark .navbar.is-light{background-color:#ecf0f1;color:#282f2f}html.theme--documenter-dark .navbar.is-light .navbar-brand>.navbar-item,html.theme--documenter-dark .navbar.is-light .navbar-brand .navbar-link{color:#282f2f}html.theme--documenter-dark .navbar.is-light .navbar-brand>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-light .navbar-brand>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-light .navbar-brand>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-light .navbar-brand .navbar-link:focus,html.theme--documenter-dark .navbar.is-light .navbar-brand .navbar-link:hover,html.theme--documenter-dark .navbar.is-light .navbar-brand .navbar-link.is-active{background-color:#dde4e6;color:#282f2f}html.theme--documenter-dark .navbar.is-light .navbar-brand .navbar-link::after{border-color:#282f2f}html.theme--documenter-dark .navbar.is-light .navbar-burger{color:#282f2f}@media screen and (min-width: 1056px){html.theme--documenter-dark .navbar.is-light .navbar-start>.navbar-item,html.theme--documenter-dark .navbar.is-light .navbar-start .navbar-link,html.theme--documenter-dark .navbar.is-light .navbar-end>.navbar-item,html.theme--documenter-dark .navbar.is-light .navbar-end .navbar-link{color:#282f2f}html.theme--documenter-dark .navbar.is-light .navbar-start>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-light .navbar-start>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-light .navbar-start>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-light .navbar-start .navbar-link:focus,html.theme--documenter-dark .navbar.is-light .navbar-start .navbar-link:hover,html.theme--documenter-dark .navbar.is-light .navbar-start .navbar-link.is-active,html.theme--documenter-dark .navbar.is-light .navbar-end>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-light .navbar-end>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-light .navbar-end>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-light .navbar-end .navbar-link:focus,html.theme--documenter-dark .navbar.is-light .navbar-end .navbar-link:hover,html.theme--documenter-dark .navbar.is-light .navbar-end .navbar-link.is-active{background-color:#dde4e6;color:#282f2f}html.theme--documenter-dark .navbar.is-light .navbar-start .navbar-link::after,html.theme--documenter-dark .navbar.is-light .navbar-end .navbar-link::after{border-color:#282f2f}html.theme--documenter-dark .navbar.is-light .navbar-item.has-dropdown:focus .navbar-link,html.theme--documenter-dark .navbar.is-light .navbar-item.has-dropdown:hover .navbar-link,html.theme--documenter-dark .navbar.is-light .navbar-item.has-dropdown.is-active .navbar-link{background-color:#dde4e6;color:#282f2f}html.theme--documenter-dark .navbar.is-light .navbar-dropdown a.navbar-item.is-active{background-color:#ecf0f1;color:#282f2f}}html.theme--documenter-dark .navbar.is-dark,html.theme--documenter-dark .content kbd.navbar{background-color:#282f2f;color:#ecf0f1}html.theme--documenter-dark .navbar.is-dark .navbar-brand>.navbar-item,html.theme--documenter-dark .content kbd.navbar .navbar-brand>.navbar-item,html.theme--documenter-dark .navbar.is-dark .navbar-brand .navbar-link,html.theme--documenter-dark .content kbd.navbar .navbar-brand .navbar-link{color:#ecf0f1}html.theme--documenter-dark .navbar.is-dark .navbar-brand>a.navbar-item:focus,html.theme--documenter-dark .content kbd.navbar .navbar-brand>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-dark .navbar-brand>a.navbar-item:hover,html.theme--documenter-dark .content kbd.navbar .navbar-brand>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-dark .navbar-brand>a.navbar-item.is-active,html.theme--documenter-dark .content kbd.navbar .navbar-brand>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-dark .navbar-brand .navbar-link:focus,html.theme--documenter-dark .content kbd.navbar .navbar-brand .navbar-link:focus,html.theme--documenter-dark .navbar.is-dark .navbar-brand .navbar-link:hover,html.theme--documenter-dark .content kbd.navbar .navbar-brand .navbar-link:hover,html.theme--documenter-dark .navbar.is-dark .navbar-brand .navbar-link.is-active,html.theme--documenter-dark .content kbd.navbar .navbar-brand .navbar-link.is-active{background-color:#1d2122;color:#ecf0f1}html.theme--documenter-dark .navbar.is-dark .navbar-brand .navbar-link::after,html.theme--documenter-dark .content kbd.navbar .navbar-brand .navbar-link::after{border-color:#ecf0f1}html.theme--documenter-dark .navbar.is-dark .navbar-burger,html.theme--documenter-dark .content kbd.navbar .navbar-burger{color:#ecf0f1}@media screen and (min-width: 1056px){html.theme--documenter-dark .navbar.is-dark .navbar-start>.navbar-item,html.theme--documenter-dark .content kbd.navbar .navbar-start>.navbar-item,html.theme--documenter-dark .navbar.is-dark .navbar-start .navbar-link,html.theme--documenter-dark .content kbd.navbar .navbar-start .navbar-link,html.theme--documenter-dark .navbar.is-dark .navbar-end>.navbar-item,html.theme--documenter-dark .content kbd.navbar .navbar-end>.navbar-item,html.theme--documenter-dark .navbar.is-dark .navbar-end .navbar-link,html.theme--documenter-dark .content kbd.navbar .navbar-end .navbar-link{color:#ecf0f1}html.theme--documenter-dark .navbar.is-dark .navbar-start>a.navbar-item:focus,html.theme--documenter-dark .content kbd.navbar .navbar-start>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-dark .navbar-start>a.navbar-item:hover,html.theme--documenter-dark .content kbd.navbar .navbar-start>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-dark .navbar-start>a.navbar-item.is-active,html.theme--documenter-dark .content kbd.navbar .navbar-start>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-dark .navbar-start .navbar-link:focus,html.theme--documenter-dark .content kbd.navbar .navbar-start .navbar-link:focus,html.theme--documenter-dark .navbar.is-dark .navbar-start .navbar-link:hover,html.theme--documenter-dark .content kbd.navbar .navbar-start .navbar-link:hover,html.theme--documenter-dark .navbar.is-dark .navbar-start .navbar-link.is-active,html.theme--documenter-dark .content kbd.navbar .navbar-start .navbar-link.is-active,html.theme--documenter-dark .navbar.is-dark .navbar-end>a.navbar-item:focus,html.theme--documenter-dark .content kbd.navbar .navbar-end>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-dark .navbar-end>a.navbar-item:hover,html.theme--documenter-dark .content kbd.navbar .navbar-end>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-dark .navbar-end>a.navbar-item.is-active,html.theme--documenter-dark .content kbd.navbar .navbar-end>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-dark .navbar-end .navbar-link:focus,html.theme--documenter-dark .content kbd.navbar .navbar-end .navbar-link:focus,html.theme--documenter-dark .navbar.is-dark .navbar-end .navbar-link:hover,html.theme--documenter-dark .content kbd.navbar .navbar-end .navbar-link:hover,html.theme--documenter-dark .navbar.is-dark .navbar-end .navbar-link.is-active,html.theme--documenter-dark .content kbd.navbar .navbar-end .navbar-link.is-active{background-color:#1d2122;color:#ecf0f1}html.theme--documenter-dark .navbar.is-dark .navbar-start .navbar-link::after,html.theme--documenter-dark .content kbd.navbar .navbar-start .navbar-link::after,html.theme--documenter-dark .navbar.is-dark .navbar-end .navbar-link::after,html.theme--documenter-dark .content kbd.navbar .navbar-end .navbar-link::after{border-color:#ecf0f1}html.theme--documenter-dark .navbar.is-dark .navbar-item.has-dropdown:focus .navbar-link,html.theme--documenter-dark .content kbd.navbar .navbar-item.has-dropdown:focus .navbar-link,html.theme--documenter-dark .navbar.is-dark .navbar-item.has-dropdown:hover .navbar-link,html.theme--documenter-dark .content kbd.navbar .navbar-item.has-dropdown:hover .navbar-link,html.theme--documenter-dark .navbar.is-dark .navbar-item.has-dropdown.is-active .navbar-link,html.theme--documenter-dark .content kbd.navbar .navbar-item.has-dropdown.is-active .navbar-link{background-color:#1d2122;color:#ecf0f1}html.theme--documenter-dark .navbar.is-dark .navbar-dropdown a.navbar-item.is-active,html.theme--documenter-dark .content kbd.navbar .navbar-dropdown a.navbar-item.is-active{background-color:#282f2f;color:#ecf0f1}}html.theme--documenter-dark .navbar.is-primary,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink{background-color:#375a7f;color:#fff}html.theme--documenter-dark .navbar.is-primary .navbar-brand>.navbar-item,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-brand>.navbar-item,html.theme--documenter-dark .navbar.is-primary .navbar-brand .navbar-link,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-primary .navbar-brand>a.navbar-item:focus,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-brand>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-primary .navbar-brand>a.navbar-item:hover,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-brand>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-primary .navbar-brand>a.navbar-item.is-active,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-brand>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-primary .navbar-brand .navbar-link:focus,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link:focus,html.theme--documenter-dark .navbar.is-primary .navbar-brand .navbar-link:hover,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link:hover,html.theme--documenter-dark .navbar.is-primary .navbar-brand .navbar-link.is-active,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link.is-active{background-color:#2f4d6d;color:#fff}html.theme--documenter-dark .navbar.is-primary .navbar-brand .navbar-link::after,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-primary .navbar-burger,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--documenter-dark .navbar.is-primary .navbar-start>.navbar-item,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-start>.navbar-item,html.theme--documenter-dark .navbar.is-primary .navbar-start .navbar-link,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link,html.theme--documenter-dark .navbar.is-primary .navbar-end>.navbar-item,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-end>.navbar-item,html.theme--documenter-dark .navbar.is-primary .navbar-end .navbar-link,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-primary .navbar-start>a.navbar-item:focus,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-start>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-primary .navbar-start>a.navbar-item:hover,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-start>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-primary .navbar-start>a.navbar-item.is-active,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-start>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-primary .navbar-start .navbar-link:focus,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link:focus,html.theme--documenter-dark .navbar.is-primary .navbar-start .navbar-link:hover,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link:hover,html.theme--documenter-dark .navbar.is-primary .navbar-start .navbar-link.is-active,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link.is-active,html.theme--documenter-dark .navbar.is-primary .navbar-end>a.navbar-item:focus,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-end>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-primary .navbar-end>a.navbar-item:hover,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-end>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-primary .navbar-end>a.navbar-item.is-active,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-end>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-primary .navbar-end .navbar-link:focus,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link:focus,html.theme--documenter-dark .navbar.is-primary .navbar-end .navbar-link:hover,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link:hover,html.theme--documenter-dark .navbar.is-primary .navbar-end .navbar-link.is-active,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link.is-active{background-color:#2f4d6d;color:#fff}html.theme--documenter-dark .navbar.is-primary .navbar-start .navbar-link::after,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link::after,html.theme--documenter-dark .navbar.is-primary .navbar-end .navbar-link::after,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-primary .navbar-item.has-dropdown:focus .navbar-link,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-item.has-dropdown:focus .navbar-link,html.theme--documenter-dark .navbar.is-primary .navbar-item.has-dropdown:hover .navbar-link,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-item.has-dropdown:hover .navbar-link,html.theme--documenter-dark .navbar.is-primary .navbar-item.has-dropdown.is-active .navbar-link,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-item.has-dropdown.is-active .navbar-link{background-color:#2f4d6d;color:#fff}html.theme--documenter-dark .navbar.is-primary .navbar-dropdown a.navbar-item.is-active,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-dropdown a.navbar-item.is-active{background-color:#375a7f;color:#fff}}html.theme--documenter-dark .navbar.is-link{background-color:#1abc9c;color:#fff}html.theme--documenter-dark .navbar.is-link .navbar-brand>.navbar-item,html.theme--documenter-dark .navbar.is-link .navbar-brand .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-link .navbar-brand>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-link .navbar-brand>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-link .navbar-brand>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-link .navbar-brand .navbar-link:focus,html.theme--documenter-dark .navbar.is-link .navbar-brand .navbar-link:hover,html.theme--documenter-dark .navbar.is-link .navbar-brand .navbar-link.is-active{background-color:#17a689;color:#fff}html.theme--documenter-dark .navbar.is-link .navbar-brand .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-link .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--documenter-dark .navbar.is-link .navbar-start>.navbar-item,html.theme--documenter-dark .navbar.is-link .navbar-start .navbar-link,html.theme--documenter-dark .navbar.is-link .navbar-end>.navbar-item,html.theme--documenter-dark .navbar.is-link .navbar-end .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-link .navbar-start>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-link .navbar-start>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-link .navbar-start>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-link .navbar-start .navbar-link:focus,html.theme--documenter-dark .navbar.is-link .navbar-start .navbar-link:hover,html.theme--documenter-dark .navbar.is-link .navbar-start .navbar-link.is-active,html.theme--documenter-dark .navbar.is-link .navbar-end>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-link .navbar-end>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-link .navbar-end>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-link .navbar-end .navbar-link:focus,html.theme--documenter-dark .navbar.is-link .navbar-end .navbar-link:hover,html.theme--documenter-dark .navbar.is-link .navbar-end .navbar-link.is-active{background-color:#17a689;color:#fff}html.theme--documenter-dark .navbar.is-link .navbar-start .navbar-link::after,html.theme--documenter-dark .navbar.is-link .navbar-end .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-link .navbar-item.has-dropdown:focus .navbar-link,html.theme--documenter-dark .navbar.is-link .navbar-item.has-dropdown:hover .navbar-link,html.theme--documenter-dark .navbar.is-link .navbar-item.has-dropdown.is-active .navbar-link{background-color:#17a689;color:#fff}html.theme--documenter-dark .navbar.is-link .navbar-dropdown a.navbar-item.is-active{background-color:#1abc9c;color:#fff}}html.theme--documenter-dark .navbar.is-info{background-color:#024c7d;color:#fff}html.theme--documenter-dark .navbar.is-info .navbar-brand>.navbar-item,html.theme--documenter-dark .navbar.is-info .navbar-brand .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-info .navbar-brand>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-info .navbar-brand>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-info .navbar-brand>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-info .navbar-brand .navbar-link:focus,html.theme--documenter-dark .navbar.is-info .navbar-brand .navbar-link:hover,html.theme--documenter-dark .navbar.is-info .navbar-brand .navbar-link.is-active{background-color:#023d64;color:#fff}html.theme--documenter-dark .navbar.is-info .navbar-brand .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-info .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--documenter-dark .navbar.is-info .navbar-start>.navbar-item,html.theme--documenter-dark .navbar.is-info .navbar-start .navbar-link,html.theme--documenter-dark .navbar.is-info .navbar-end>.navbar-item,html.theme--documenter-dark .navbar.is-info .navbar-end .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-info .navbar-start>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-info .navbar-start>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-info .navbar-start>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-info .navbar-start .navbar-link:focus,html.theme--documenter-dark .navbar.is-info .navbar-start .navbar-link:hover,html.theme--documenter-dark .navbar.is-info .navbar-start .navbar-link.is-active,html.theme--documenter-dark .navbar.is-info .navbar-end>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-info .navbar-end>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-info .navbar-end>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-info .navbar-end .navbar-link:focus,html.theme--documenter-dark .navbar.is-info .navbar-end .navbar-link:hover,html.theme--documenter-dark .navbar.is-info .navbar-end .navbar-link.is-active{background-color:#023d64;color:#fff}html.theme--documenter-dark .navbar.is-info .navbar-start .navbar-link::after,html.theme--documenter-dark .navbar.is-info .navbar-end .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-info .navbar-item.has-dropdown:focus .navbar-link,html.theme--documenter-dark .navbar.is-info .navbar-item.has-dropdown:hover .navbar-link,html.theme--documenter-dark .navbar.is-info .navbar-item.has-dropdown.is-active .navbar-link{background-color:#023d64;color:#fff}html.theme--documenter-dark .navbar.is-info .navbar-dropdown a.navbar-item.is-active{background-color:#024c7d;color:#fff}}html.theme--documenter-dark .navbar.is-success{background-color:#008438;color:#fff}html.theme--documenter-dark .navbar.is-success .navbar-brand>.navbar-item,html.theme--documenter-dark .navbar.is-success .navbar-brand .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-success .navbar-brand>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-success .navbar-brand>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-success .navbar-brand>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-success .navbar-brand .navbar-link:focus,html.theme--documenter-dark .navbar.is-success .navbar-brand .navbar-link:hover,html.theme--documenter-dark .navbar.is-success .navbar-brand .navbar-link.is-active{background-color:#006b2d;color:#fff}html.theme--documenter-dark .navbar.is-success .navbar-brand .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-success .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--documenter-dark .navbar.is-success .navbar-start>.navbar-item,html.theme--documenter-dark .navbar.is-success .navbar-start .navbar-link,html.theme--documenter-dark .navbar.is-success .navbar-end>.navbar-item,html.theme--documenter-dark .navbar.is-success .navbar-end .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-success .navbar-start>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-success .navbar-start>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-success .navbar-start>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-success .navbar-start .navbar-link:focus,html.theme--documenter-dark .navbar.is-success .navbar-start .navbar-link:hover,html.theme--documenter-dark .navbar.is-success .navbar-start .navbar-link.is-active,html.theme--documenter-dark .navbar.is-success .navbar-end>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-success .navbar-end>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-success .navbar-end>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-success .navbar-end .navbar-link:focus,html.theme--documenter-dark .navbar.is-success .navbar-end .navbar-link:hover,html.theme--documenter-dark .navbar.is-success .navbar-end .navbar-link.is-active{background-color:#006b2d;color:#fff}html.theme--documenter-dark .navbar.is-success .navbar-start .navbar-link::after,html.theme--documenter-dark .navbar.is-success .navbar-end .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-success .navbar-item.has-dropdown:focus .navbar-link,html.theme--documenter-dark .navbar.is-success .navbar-item.has-dropdown:hover .navbar-link,html.theme--documenter-dark .navbar.is-success .navbar-item.has-dropdown.is-active .navbar-link{background-color:#006b2d;color:#fff}html.theme--documenter-dark .navbar.is-success .navbar-dropdown a.navbar-item.is-active{background-color:#008438;color:#fff}}html.theme--documenter-dark .navbar.is-warning{background-color:#ad8100;color:#fff}html.theme--documenter-dark .navbar.is-warning .navbar-brand>.navbar-item,html.theme--documenter-dark .navbar.is-warning .navbar-brand .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-warning .navbar-brand>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-warning .navbar-brand>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-warning .navbar-brand>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-warning .navbar-brand .navbar-link:focus,html.theme--documenter-dark .navbar.is-warning .navbar-brand .navbar-link:hover,html.theme--documenter-dark .navbar.is-warning .navbar-brand .navbar-link.is-active{background-color:#946e00;color:#fff}html.theme--documenter-dark .navbar.is-warning .navbar-brand .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-warning .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--documenter-dark .navbar.is-warning .navbar-start>.navbar-item,html.theme--documenter-dark .navbar.is-warning .navbar-start .navbar-link,html.theme--documenter-dark .navbar.is-warning .navbar-end>.navbar-item,html.theme--documenter-dark .navbar.is-warning .navbar-end .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-warning .navbar-start>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-warning .navbar-start>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-warning .navbar-start>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-warning .navbar-start .navbar-link:focus,html.theme--documenter-dark .navbar.is-warning .navbar-start .navbar-link:hover,html.theme--documenter-dark .navbar.is-warning .navbar-start .navbar-link.is-active,html.theme--documenter-dark .navbar.is-warning .navbar-end>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-warning .navbar-end>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-warning .navbar-end>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-warning .navbar-end .navbar-link:focus,html.theme--documenter-dark .navbar.is-warning .navbar-end .navbar-link:hover,html.theme--documenter-dark .navbar.is-warning .navbar-end .navbar-link.is-active{background-color:#946e00;color:#fff}html.theme--documenter-dark .navbar.is-warning .navbar-start .navbar-link::after,html.theme--documenter-dark .navbar.is-warning .navbar-end .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-warning .navbar-item.has-dropdown:focus .navbar-link,html.theme--documenter-dark .navbar.is-warning .navbar-item.has-dropdown:hover .navbar-link,html.theme--documenter-dark .navbar.is-warning .navbar-item.has-dropdown.is-active .navbar-link{background-color:#946e00;color:#fff}html.theme--documenter-dark .navbar.is-warning .navbar-dropdown a.navbar-item.is-active{background-color:#ad8100;color:#fff}}html.theme--documenter-dark .navbar.is-danger{background-color:#9e1b0d;color:#fff}html.theme--documenter-dark .navbar.is-danger .navbar-brand>.navbar-item,html.theme--documenter-dark .navbar.is-danger .navbar-brand .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-danger .navbar-brand>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-danger .navbar-brand>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-danger .navbar-brand>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-danger .navbar-brand .navbar-link:focus,html.theme--documenter-dark .navbar.is-danger .navbar-brand .navbar-link:hover,html.theme--documenter-dark .navbar.is-danger .navbar-brand .navbar-link.is-active{background-color:#86170b;color:#fff}html.theme--documenter-dark .navbar.is-danger .navbar-brand .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-danger .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--documenter-dark .navbar.is-danger .navbar-start>.navbar-item,html.theme--documenter-dark .navbar.is-danger .navbar-start .navbar-link,html.theme--documenter-dark .navbar.is-danger .navbar-end>.navbar-item,html.theme--documenter-dark .navbar.is-danger .navbar-end .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-danger .navbar-start>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-danger .navbar-start>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-danger .navbar-start>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-danger .navbar-start .navbar-link:focus,html.theme--documenter-dark .navbar.is-danger .navbar-start .navbar-link:hover,html.theme--documenter-dark .navbar.is-danger .navbar-start .navbar-link.is-active,html.theme--documenter-dark .navbar.is-danger .navbar-end>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-danger .navbar-end>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-danger .navbar-end>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-danger .navbar-end .navbar-link:focus,html.theme--documenter-dark .navbar.is-danger .navbar-end .navbar-link:hover,html.theme--documenter-dark .navbar.is-danger .navbar-end .navbar-link.is-active{background-color:#86170b;color:#fff}html.theme--documenter-dark .navbar.is-danger .navbar-start .navbar-link::after,html.theme--documenter-dark .navbar.is-danger .navbar-end .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-danger .navbar-item.has-dropdown:focus .navbar-link,html.theme--documenter-dark .navbar.is-danger .navbar-item.has-dropdown:hover .navbar-link,html.theme--documenter-dark .navbar.is-danger .navbar-item.has-dropdown.is-active .navbar-link{background-color:#86170b;color:#fff}html.theme--documenter-dark .navbar.is-danger .navbar-dropdown a.navbar-item.is-active{background-color:#9e1b0d;color:#fff}}html.theme--documenter-dark .navbar>.container{align-items:stretch;display:flex;min-height:4rem;width:100%}html.theme--documenter-dark .navbar.has-shadow{box-shadow:0 2px 0 0 #282f2f}html.theme--documenter-dark .navbar.is-fixed-bottom,html.theme--documenter-dark .navbar.is-fixed-top{left:0;position:fixed;right:0;z-index:30}html.theme--documenter-dark .navbar.is-fixed-bottom{bottom:0}html.theme--documenter-dark .navbar.is-fixed-bottom.has-shadow{box-shadow:0 -2px 0 0 #282f2f}html.theme--documenter-dark .navbar.is-fixed-top{top:0}html.theme--documenter-dark html.has-navbar-fixed-top,html.theme--documenter-dark body.has-navbar-fixed-top{padding-top:4rem}html.theme--documenter-dark html.has-navbar-fixed-bottom,html.theme--documenter-dark body.has-navbar-fixed-bottom{padding-bottom:4rem}html.theme--documenter-dark .navbar-brand,html.theme--documenter-dark .navbar-tabs{align-items:stretch;display:flex;flex-shrink:0;min-height:4rem}html.theme--documenter-dark .navbar-brand a.navbar-item:focus,html.theme--documenter-dark .navbar-brand a.navbar-item:hover{background-color:transparent}html.theme--documenter-dark .navbar-tabs{-webkit-overflow-scrolling:touch;max-width:100vw;overflow-x:auto;overflow-y:hidden}html.theme--documenter-dark .navbar-burger{color:#fff;cursor:pointer;display:block;height:4rem;position:relative;width:4rem;margin-left:auto}html.theme--documenter-dark .navbar-burger span{background-color:currentColor;display:block;height:1px;left:calc(50% - 8px);position:absolute;transform-origin:center;transition-duration:86ms;transition-property:background-color, opacity, transform;transition-timing-function:ease-out;width:16px}html.theme--documenter-dark .navbar-burger span:nth-child(1){top:calc(50% - 6px)}html.theme--documenter-dark .navbar-burger span:nth-child(2){top:calc(50% - 1px)}html.theme--documenter-dark .navbar-burger span:nth-child(3){top:calc(50% + 4px)}html.theme--documenter-dark .navbar-burger:hover{background-color:rgba(0,0,0,0.05)}html.theme--documenter-dark .navbar-burger.is-active span:nth-child(1){transform:translateY(5px) rotate(45deg)}html.theme--documenter-dark .navbar-burger.is-active span:nth-child(2){opacity:0}html.theme--documenter-dark .navbar-burger.is-active span:nth-child(3){transform:translateY(-5px) rotate(-45deg)}html.theme--documenter-dark .navbar-menu{display:none}html.theme--documenter-dark .navbar-item,html.theme--documenter-dark .navbar-link{color:#fff;display:block;line-height:1.5;padding:0.5rem 0.75rem;position:relative}html.theme--documenter-dark .navbar-item .icon:only-child,html.theme--documenter-dark .navbar-link .icon:only-child{margin-left:-0.25rem;margin-right:-0.25rem}html.theme--documenter-dark a.navbar-item,html.theme--documenter-dark .navbar-link{cursor:pointer}html.theme--documenter-dark a.navbar-item:focus,html.theme--documenter-dark a.navbar-item:focus-within,html.theme--documenter-dark a.navbar-item:hover,html.theme--documenter-dark a.navbar-item.is-active,html.theme--documenter-dark .navbar-link:focus,html.theme--documenter-dark .navbar-link:focus-within,html.theme--documenter-dark .navbar-link:hover,html.theme--documenter-dark .navbar-link.is-active{background-color:rgba(0,0,0,0);color:#1abc9c}html.theme--documenter-dark .navbar-item{display:block;flex-grow:0;flex-shrink:0}html.theme--documenter-dark .navbar-item img{max-height:1.75rem}html.theme--documenter-dark .navbar-item.has-dropdown{padding:0}html.theme--documenter-dark .navbar-item.is-expanded{flex-grow:1;flex-shrink:1}html.theme--documenter-dark .navbar-item.is-tab{border-bottom:1px solid transparent;min-height:4rem;padding-bottom:calc(0.5rem - 1px)}html.theme--documenter-dark .navbar-item.is-tab:focus,html.theme--documenter-dark .navbar-item.is-tab:hover{background-color:rgba(0,0,0,0);border-bottom-color:#1abc9c}html.theme--documenter-dark .navbar-item.is-tab.is-active{background-color:rgba(0,0,0,0);border-bottom-color:#1abc9c;border-bottom-style:solid;border-bottom-width:3px;color:#1abc9c;padding-bottom:calc(0.5rem - 3px)}html.theme--documenter-dark .navbar-content{flex-grow:1;flex-shrink:1}html.theme--documenter-dark .navbar-link:not(.is-arrowless){padding-right:2.5em}html.theme--documenter-dark .navbar-link:not(.is-arrowless)::after{border-color:#fff;margin-top:-0.375em;right:1.125em}html.theme--documenter-dark .navbar-dropdown{font-size:0.875rem;padding-bottom:0.5rem;padding-top:0.5rem}html.theme--documenter-dark .navbar-dropdown .navbar-item{padding-left:1.5rem;padding-right:1.5rem}html.theme--documenter-dark .navbar-divider{background-color:rgba(0,0,0,0.2);border:none;display:none;height:2px;margin:0.5rem 0}@media screen and (max-width: 1055px){html.theme--documenter-dark .navbar>.container{display:block}html.theme--documenter-dark .navbar-brand .navbar-item,html.theme--documenter-dark .navbar-tabs .navbar-item{align-items:center;display:flex}html.theme--documenter-dark .navbar-link::after{display:none}html.theme--documenter-dark .navbar-menu{background-color:#375a7f;box-shadow:0 8px 16px rgba(10,10,10,0.1);padding:0.5rem 0}html.theme--documenter-dark .navbar-menu.is-active{display:block}html.theme--documenter-dark .navbar.is-fixed-bottom-touch,html.theme--documenter-dark .navbar.is-fixed-top-touch{left:0;position:fixed;right:0;z-index:30}html.theme--documenter-dark .navbar.is-fixed-bottom-touch{bottom:0}html.theme--documenter-dark .navbar.is-fixed-bottom-touch.has-shadow{box-shadow:0 -2px 3px rgba(10,10,10,0.1)}html.theme--documenter-dark .navbar.is-fixed-top-touch{top:0}html.theme--documenter-dark .navbar.is-fixed-top .navbar-menu,html.theme--documenter-dark .navbar.is-fixed-top-touch .navbar-menu{-webkit-overflow-scrolling:touch;max-height:calc(100vh - 4rem);overflow:auto}html.theme--documenter-dark html.has-navbar-fixed-top-touch,html.theme--documenter-dark body.has-navbar-fixed-top-touch{padding-top:4rem}html.theme--documenter-dark html.has-navbar-fixed-bottom-touch,html.theme--documenter-dark body.has-navbar-fixed-bottom-touch{padding-bottom:4rem}}@media screen and (min-width: 1056px){html.theme--documenter-dark .navbar,html.theme--documenter-dark .navbar-menu,html.theme--documenter-dark .navbar-start,html.theme--documenter-dark .navbar-end{align-items:stretch;display:flex}html.theme--documenter-dark .navbar{min-height:4rem}html.theme--documenter-dark .navbar.is-spaced{padding:1rem 2rem}html.theme--documenter-dark .navbar.is-spaced .navbar-start,html.theme--documenter-dark .navbar.is-spaced .navbar-end{align-items:center}html.theme--documenter-dark .navbar.is-spaced a.navbar-item,html.theme--documenter-dark .navbar.is-spaced .navbar-link{border-radius:.4em}html.theme--documenter-dark .navbar.is-transparent a.navbar-item:focus,html.theme--documenter-dark .navbar.is-transparent a.navbar-item:hover,html.theme--documenter-dark .navbar.is-transparent a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-transparent .navbar-link:focus,html.theme--documenter-dark .navbar.is-transparent .navbar-link:hover,html.theme--documenter-dark .navbar.is-transparent .navbar-link.is-active{background-color:transparent !important}html.theme--documenter-dark .navbar.is-transparent .navbar-item.has-dropdown.is-active .navbar-link,html.theme--documenter-dark .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus .navbar-link,html.theme--documenter-dark .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus-within .navbar-link,html.theme--documenter-dark .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:hover .navbar-link{background-color:transparent !important}html.theme--documenter-dark .navbar.is-transparent .navbar-dropdown a.navbar-item:focus,html.theme--documenter-dark .navbar.is-transparent .navbar-dropdown a.navbar-item:hover{background-color:rgba(0,0,0,0);color:#dbdee0}html.theme--documenter-dark .navbar.is-transparent .navbar-dropdown a.navbar-item.is-active{background-color:rgba(0,0,0,0);color:#1abc9c}html.theme--documenter-dark .navbar-burger{display:none}html.theme--documenter-dark .navbar-item,html.theme--documenter-dark .navbar-link{align-items:center;display:flex}html.theme--documenter-dark .navbar-item{display:flex}html.theme--documenter-dark .navbar-item.has-dropdown{align-items:stretch}html.theme--documenter-dark .navbar-item.has-dropdown-up .navbar-link::after{transform:rotate(135deg) translate(0.25em, -0.25em)}html.theme--documenter-dark .navbar-item.has-dropdown-up .navbar-dropdown{border-bottom:1px solid rgba(0,0,0,0.2);border-radius:8px 8px 0 0;border-top:none;bottom:100%;box-shadow:0 -8px 8px rgba(10,10,10,0.1);top:auto}html.theme--documenter-dark .navbar-item.is-active .navbar-dropdown,html.theme--documenter-dark .navbar-item.is-hoverable:focus .navbar-dropdown,html.theme--documenter-dark .navbar-item.is-hoverable:focus-within .navbar-dropdown,html.theme--documenter-dark .navbar-item.is-hoverable:hover .navbar-dropdown{display:block}.navbar.is-spaced html.theme--documenter-dark .navbar-item.is-active .navbar-dropdown,html.theme--documenter-dark .navbar-item.is-active .navbar-dropdown.is-boxed,.navbar.is-spaced html.theme--documenter-dark .navbar-item.is-hoverable:focus .navbar-dropdown,html.theme--documenter-dark .navbar-item.is-hoverable:focus .navbar-dropdown.is-boxed,.navbar.is-spaced html.theme--documenter-dark .navbar-item.is-hoverable:focus-within .navbar-dropdown,html.theme--documenter-dark .navbar-item.is-hoverable:focus-within .navbar-dropdown.is-boxed,.navbar.is-spaced html.theme--documenter-dark .navbar-item.is-hoverable:hover .navbar-dropdown,html.theme--documenter-dark .navbar-item.is-hoverable:hover .navbar-dropdown.is-boxed{opacity:1;pointer-events:auto;transform:translateY(0)}html.theme--documenter-dark .navbar-menu{flex-grow:1;flex-shrink:0}html.theme--documenter-dark .navbar-start{justify-content:flex-start;margin-right:auto}html.theme--documenter-dark .navbar-end{justify-content:flex-end;margin-left:auto}html.theme--documenter-dark .navbar-dropdown{background-color:#375a7f;border-bottom-left-radius:8px;border-bottom-right-radius:8px;border-top:1px solid rgba(0,0,0,0.2);box-shadow:0 8px 8px rgba(10,10,10,0.1);display:none;font-size:0.875rem;left:0;min-width:100%;position:absolute;top:100%;z-index:20}html.theme--documenter-dark .navbar-dropdown .navbar-item{padding:0.375rem 1rem;white-space:nowrap}html.theme--documenter-dark .navbar-dropdown a.navbar-item{padding-right:3rem}html.theme--documenter-dark .navbar-dropdown a.navbar-item:focus,html.theme--documenter-dark .navbar-dropdown a.navbar-item:hover{background-color:rgba(0,0,0,0);color:#dbdee0}html.theme--documenter-dark .navbar-dropdown a.navbar-item.is-active{background-color:rgba(0,0,0,0);color:#1abc9c}.navbar.is-spaced html.theme--documenter-dark .navbar-dropdown,html.theme--documenter-dark .navbar-dropdown.is-boxed{border-radius:8px;border-top:none;box-shadow:0 8px 8px rgba(10,10,10,0.1), 0 0 0 1px rgba(10,10,10,0.1);display:block;opacity:0;pointer-events:none;top:calc(100% + (-4px));transform:translateY(-5px);transition-duration:86ms;transition-property:opacity, transform}html.theme--documenter-dark .navbar-dropdown.is-right{left:auto;right:0}html.theme--documenter-dark .navbar-divider{display:block}html.theme--documenter-dark .navbar>.container .navbar-brand,html.theme--documenter-dark .container>.navbar .navbar-brand{margin-left:-.75rem}html.theme--documenter-dark .navbar>.container .navbar-menu,html.theme--documenter-dark .container>.navbar .navbar-menu{margin-right:-.75rem}html.theme--documenter-dark .navbar.is-fixed-bottom-desktop,html.theme--documenter-dark .navbar.is-fixed-top-desktop{left:0;position:fixed;right:0;z-index:30}html.theme--documenter-dark .navbar.is-fixed-bottom-desktop{bottom:0}html.theme--documenter-dark .navbar.is-fixed-bottom-desktop.has-shadow{box-shadow:0 -2px 3px rgba(10,10,10,0.1)}html.theme--documenter-dark .navbar.is-fixed-top-desktop{top:0}html.theme--documenter-dark html.has-navbar-fixed-top-desktop,html.theme--documenter-dark body.has-navbar-fixed-top-desktop{padding-top:4rem}html.theme--documenter-dark html.has-navbar-fixed-bottom-desktop,html.theme--documenter-dark body.has-navbar-fixed-bottom-desktop{padding-bottom:4rem}html.theme--documenter-dark html.has-spaced-navbar-fixed-top,html.theme--documenter-dark body.has-spaced-navbar-fixed-top{padding-top:6rem}html.theme--documenter-dark html.has-spaced-navbar-fixed-bottom,html.theme--documenter-dark body.has-spaced-navbar-fixed-bottom{padding-bottom:6rem}html.theme--documenter-dark a.navbar-item.is-active,html.theme--documenter-dark .navbar-link.is-active{color:#1abc9c}html.theme--documenter-dark a.navbar-item.is-active:not(:focus):not(:hover),html.theme--documenter-dark .navbar-link.is-active:not(:focus):not(:hover){background-color:rgba(0,0,0,0)}html.theme--documenter-dark .navbar-item.has-dropdown:focus .navbar-link,html.theme--documenter-dark .navbar-item.has-dropdown:hover .navbar-link,html.theme--documenter-dark .navbar-item.has-dropdown.is-active .navbar-link{background-color:rgba(0,0,0,0)}}html.theme--documenter-dark .hero.is-fullheight-with-navbar{min-height:calc(100vh - 4rem)}html.theme--documenter-dark .pagination{font-size:15px;margin:-.25rem}html.theme--documenter-dark .pagination.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.pagination{font-size:.85em}html.theme--documenter-dark .pagination.is-medium{font-size:1.25rem}html.theme--documenter-dark .pagination.is-large{font-size:1.5rem}html.theme--documenter-dark .pagination.is-rounded .pagination-previous,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.pagination .pagination-previous,html.theme--documenter-dark .pagination.is-rounded .pagination-next,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.pagination .pagination-next{padding-left:1em;padding-right:1em;border-radius:290486px}html.theme--documenter-dark .pagination.is-rounded .pagination-link,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.pagination .pagination-link{border-radius:290486px}html.theme--documenter-dark .pagination,html.theme--documenter-dark .pagination-list{align-items:center;display:flex;justify-content:center;text-align:center}html.theme--documenter-dark .pagination-previous,html.theme--documenter-dark .pagination-next,html.theme--documenter-dark .pagination-link,html.theme--documenter-dark .pagination-ellipsis{font-size:1em;justify-content:center;margin:.25rem;padding-left:.5em;padding-right:.5em;text-align:center}html.theme--documenter-dark .pagination-previous,html.theme--documenter-dark .pagination-next,html.theme--documenter-dark .pagination-link{border-color:#5e6d6f;color:#1abc9c;min-width:2.25em}html.theme--documenter-dark .pagination-previous:hover,html.theme--documenter-dark .pagination-next:hover,html.theme--documenter-dark .pagination-link:hover{border-color:#8c9b9d;color:#1dd2af}html.theme--documenter-dark .pagination-previous:focus,html.theme--documenter-dark .pagination-next:focus,html.theme--documenter-dark .pagination-link:focus{border-color:#8c9b9d}html.theme--documenter-dark .pagination-previous:active,html.theme--documenter-dark .pagination-next:active,html.theme--documenter-dark .pagination-link:active{box-shadow:inset 0 1px 2px rgba(10,10,10,0.2)}html.theme--documenter-dark .pagination-previous[disabled],html.theme--documenter-dark .pagination-next[disabled],html.theme--documenter-dark .pagination-link[disabled]{background-color:#dbdee0;border-color:#dbdee0;box-shadow:none;color:#5e6d6f;opacity:0.5}html.theme--documenter-dark .pagination-previous,html.theme--documenter-dark .pagination-next{padding-left:0.75em;padding-right:0.75em;white-space:nowrap}html.theme--documenter-dark .pagination-link.is-current{background-color:#1abc9c;border-color:#1abc9c;color:#fff}html.theme--documenter-dark .pagination-ellipsis{color:#8c9b9d;pointer-events:none}html.theme--documenter-dark .pagination-list{flex-wrap:wrap}@media screen and (max-width: 768px){html.theme--documenter-dark .pagination{flex-wrap:wrap}html.theme--documenter-dark .pagination-previous,html.theme--documenter-dark .pagination-next{flex-grow:1;flex-shrink:1}html.theme--documenter-dark .pagination-list li{flex-grow:1;flex-shrink:1}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .pagination-list{flex-grow:1;flex-shrink:1;justify-content:flex-start;order:1}html.theme--documenter-dark .pagination-previous{order:2}html.theme--documenter-dark .pagination-next{order:3}html.theme--documenter-dark .pagination{justify-content:space-between}html.theme--documenter-dark .pagination.is-centered .pagination-previous{order:1}html.theme--documenter-dark .pagination.is-centered .pagination-list{justify-content:center;order:2}html.theme--documenter-dark .pagination.is-centered .pagination-next{order:3}html.theme--documenter-dark .pagination.is-right .pagination-previous{order:1}html.theme--documenter-dark .pagination.is-right .pagination-next{order:2}html.theme--documenter-dark .pagination.is-right .pagination-list{justify-content:flex-end;order:3}}html.theme--documenter-dark .panel{font-size:15px}html.theme--documenter-dark .panel:not(:last-child){margin-bottom:1.5rem}html.theme--documenter-dark .panel-heading,html.theme--documenter-dark .panel-tabs,html.theme--documenter-dark .panel-block{border-bottom:1px solid #5e6d6f;border-left:1px solid #5e6d6f;border-right:1px solid #5e6d6f}html.theme--documenter-dark .panel-heading:first-child,html.theme--documenter-dark .panel-tabs:first-child,html.theme--documenter-dark .panel-block:first-child{border-top:1px solid #5e6d6f}html.theme--documenter-dark .panel-heading{background-color:#282f2f;border-radius:.4em .4em 0 0;color:#f2f2f2;font-size:1.25em;font-weight:300;line-height:1.25;padding:0.5em 0.75em}html.theme--documenter-dark .panel-tabs{align-items:flex-end;display:flex;font-size:.875em;justify-content:center}html.theme--documenter-dark .panel-tabs a{border-bottom:1px solid #5e6d6f;margin-bottom:-1px;padding:0.5em}html.theme--documenter-dark .panel-tabs a.is-active{border-bottom-color:#343c3d;color:#17a689}html.theme--documenter-dark .panel-list a{color:#fff}html.theme--documenter-dark .panel-list a:hover{color:#1abc9c}html.theme--documenter-dark .panel-block{align-items:center;color:#f2f2f2;display:flex;justify-content:flex-start;padding:0.5em 0.75em}html.theme--documenter-dark .panel-block input[type="checkbox"]{margin-right:0.75em}html.theme--documenter-dark .panel-block>.control{flex-grow:1;flex-shrink:1;width:100%}html.theme--documenter-dark .panel-block.is-wrapped{flex-wrap:wrap}html.theme--documenter-dark .panel-block.is-active{border-left-color:#1abc9c;color:#17a689}html.theme--documenter-dark .panel-block.is-active .panel-icon{color:#1abc9c}html.theme--documenter-dark a.panel-block,html.theme--documenter-dark label.panel-block{cursor:pointer}html.theme--documenter-dark a.panel-block:hover,html.theme--documenter-dark label.panel-block:hover{background-color:#282f2f}html.theme--documenter-dark .panel-icon{display:inline-block;font-size:14px;height:1em;line-height:1em;text-align:center;vertical-align:top;width:1em;color:#fff;margin-right:0.75em}html.theme--documenter-dark .panel-icon .fa{font-size:inherit;line-height:inherit}html.theme--documenter-dark .tabs{-webkit-overflow-scrolling:touch;align-items:stretch;display:flex;font-size:15px;justify-content:space-between;overflow:hidden;overflow-x:auto;white-space:nowrap}html.theme--documenter-dark .tabs a{align-items:center;border-bottom-color:#5e6d6f;border-bottom-style:solid;border-bottom-width:1px;color:#fff;display:flex;justify-content:center;margin-bottom:-1px;padding:0.5em 1em;vertical-align:top}html.theme--documenter-dark .tabs a:hover{border-bottom-color:#f2f2f2;color:#f2f2f2}html.theme--documenter-dark .tabs li{display:block}html.theme--documenter-dark .tabs li.is-active a{border-bottom-color:#1abc9c;color:#1abc9c}html.theme--documenter-dark .tabs ul{align-items:center;border-bottom-color:#5e6d6f;border-bottom-style:solid;border-bottom-width:1px;display:flex;flex-grow:1;flex-shrink:0;justify-content:flex-start}html.theme--documenter-dark .tabs ul.is-left{padding-right:0.75em}html.theme--documenter-dark .tabs ul.is-center{flex:none;justify-content:center;padding-left:0.75em;padding-right:0.75em}html.theme--documenter-dark .tabs ul.is-right{justify-content:flex-end;padding-left:0.75em}html.theme--documenter-dark .tabs .icon:first-child{margin-right:0.5em}html.theme--documenter-dark .tabs .icon:last-child{margin-left:0.5em}html.theme--documenter-dark .tabs.is-centered ul{justify-content:center}html.theme--documenter-dark .tabs.is-right ul{justify-content:flex-end}html.theme--documenter-dark .tabs.is-boxed a{border:1px solid transparent;border-radius:.4em .4em 0 0}html.theme--documenter-dark .tabs.is-boxed a:hover{background-color:#282f2f;border-bottom-color:#5e6d6f}html.theme--documenter-dark .tabs.is-boxed li.is-active a{background-color:#fff;border-color:#5e6d6f;border-bottom-color:rgba(0,0,0,0) !important}html.theme--documenter-dark .tabs.is-fullwidth li{flex-grow:1;flex-shrink:0}html.theme--documenter-dark .tabs.is-toggle a{border-color:#5e6d6f;border-style:solid;border-width:1px;margin-bottom:0;position:relative}html.theme--documenter-dark .tabs.is-toggle a:hover{background-color:#282f2f;border-color:#8c9b9d;z-index:2}html.theme--documenter-dark .tabs.is-toggle li+li{margin-left:-1px}html.theme--documenter-dark .tabs.is-toggle li:first-child a{border-radius:.4em 0 0 .4em}html.theme--documenter-dark .tabs.is-toggle li:last-child a{border-radius:0 .4em .4em 0}html.theme--documenter-dark .tabs.is-toggle li.is-active a{background-color:#1abc9c;border-color:#1abc9c;color:#fff;z-index:1}html.theme--documenter-dark .tabs.is-toggle ul{border-bottom:none}html.theme--documenter-dark .tabs.is-toggle.is-toggle-rounded li:first-child a{border-bottom-left-radius:290486px;border-top-left-radius:290486px;padding-left:1.25em}html.theme--documenter-dark .tabs.is-toggle.is-toggle-rounded li:last-child a{border-bottom-right-radius:290486px;border-top-right-radius:290486px;padding-right:1.25em}html.theme--documenter-dark .tabs.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.tabs{font-size:.85em}html.theme--documenter-dark .tabs.is-medium{font-size:1.25rem}html.theme--documenter-dark .tabs.is-large{font-size:1.5rem}html.theme--documenter-dark .column{display:block;flex-basis:0;flex-grow:1;flex-shrink:1;padding:.75rem}.columns.is-mobile>html.theme--documenter-dark .column.is-narrow{flex:none}.columns.is-mobile>html.theme--documenter-dark .column.is-full{flex:none;width:100%}.columns.is-mobile>html.theme--documenter-dark .column.is-three-quarters{flex:none;width:75%}.columns.is-mobile>html.theme--documenter-dark .column.is-two-thirds{flex:none;width:66.6666%}.columns.is-mobile>html.theme--documenter-dark .column.is-half{flex:none;width:50%}.columns.is-mobile>html.theme--documenter-dark .column.is-one-third{flex:none;width:33.3333%}.columns.is-mobile>html.theme--documenter-dark .column.is-one-quarter{flex:none;width:25%}.columns.is-mobile>html.theme--documenter-dark .column.is-one-fifth{flex:none;width:20%}.columns.is-mobile>html.theme--documenter-dark .column.is-two-fifths{flex:none;width:40%}.columns.is-mobile>html.theme--documenter-dark .column.is-three-fifths{flex:none;width:60%}.columns.is-mobile>html.theme--documenter-dark .column.is-four-fifths{flex:none;width:80%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-three-quarters{margin-left:75%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-two-thirds{margin-left:66.6666%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-half{margin-left:50%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-one-third{margin-left:33.3333%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-one-quarter{margin-left:25%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-one-fifth{margin-left:20%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-two-fifths{margin-left:40%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-three-fifths{margin-left:60%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-four-fifths{margin-left:80%}.columns.is-mobile>html.theme--documenter-dark .column.is-0{flex:none;width:0%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-0{margin-left:0%}.columns.is-mobile>html.theme--documenter-dark .column.is-1{flex:none;width:8.3333333333%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-1{margin-left:8.3333333333%}.columns.is-mobile>html.theme--documenter-dark .column.is-2{flex:none;width:16.6666666667%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-2{margin-left:16.6666666667%}.columns.is-mobile>html.theme--documenter-dark .column.is-3{flex:none;width:25%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-3{margin-left:25%}.columns.is-mobile>html.theme--documenter-dark .column.is-4{flex:none;width:33.3333333333%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-4{margin-left:33.3333333333%}.columns.is-mobile>html.theme--documenter-dark .column.is-5{flex:none;width:41.6666666667%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-5{margin-left:41.6666666667%}.columns.is-mobile>html.theme--documenter-dark .column.is-6{flex:none;width:50%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-6{margin-left:50%}.columns.is-mobile>html.theme--documenter-dark .column.is-7{flex:none;width:58.3333333333%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-7{margin-left:58.3333333333%}.columns.is-mobile>html.theme--documenter-dark .column.is-8{flex:none;width:66.6666666667%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-8{margin-left:66.6666666667%}.columns.is-mobile>html.theme--documenter-dark .column.is-9{flex:none;width:75%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-9{margin-left:75%}.columns.is-mobile>html.theme--documenter-dark .column.is-10{flex:none;width:83.3333333333%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-10{margin-left:83.3333333333%}.columns.is-mobile>html.theme--documenter-dark .column.is-11{flex:none;width:91.6666666667%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-11{margin-left:91.6666666667%}.columns.is-mobile>html.theme--documenter-dark .column.is-12{flex:none;width:100%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-12{margin-left:100%}@media screen and (max-width: 768px){html.theme--documenter-dark .column.is-narrow-mobile{flex:none}html.theme--documenter-dark .column.is-full-mobile{flex:none;width:100%}html.theme--documenter-dark .column.is-three-quarters-mobile{flex:none;width:75%}html.theme--documenter-dark .column.is-two-thirds-mobile{flex:none;width:66.6666%}html.theme--documenter-dark .column.is-half-mobile{flex:none;width:50%}html.theme--documenter-dark .column.is-one-third-mobile{flex:none;width:33.3333%}html.theme--documenter-dark .column.is-one-quarter-mobile{flex:none;width:25%}html.theme--documenter-dark .column.is-one-fifth-mobile{flex:none;width:20%}html.theme--documenter-dark .column.is-two-fifths-mobile{flex:none;width:40%}html.theme--documenter-dark .column.is-three-fifths-mobile{flex:none;width:60%}html.theme--documenter-dark .column.is-four-fifths-mobile{flex:none;width:80%}html.theme--documenter-dark .column.is-offset-three-quarters-mobile{margin-left:75%}html.theme--documenter-dark .column.is-offset-two-thirds-mobile{margin-left:66.6666%}html.theme--documenter-dark .column.is-offset-half-mobile{margin-left:50%}html.theme--documenter-dark .column.is-offset-one-third-mobile{margin-left:33.3333%}html.theme--documenter-dark .column.is-offset-one-quarter-mobile{margin-left:25%}html.theme--documenter-dark .column.is-offset-one-fifth-mobile{margin-left:20%}html.theme--documenter-dark .column.is-offset-two-fifths-mobile{margin-left:40%}html.theme--documenter-dark .column.is-offset-three-fifths-mobile{margin-left:60%}html.theme--documenter-dark .column.is-offset-four-fifths-mobile{margin-left:80%}html.theme--documenter-dark .column.is-0-mobile{flex:none;width:0%}html.theme--documenter-dark .column.is-offset-0-mobile{margin-left:0%}html.theme--documenter-dark .column.is-1-mobile{flex:none;width:8.3333333333%}html.theme--documenter-dark .column.is-offset-1-mobile{margin-left:8.3333333333%}html.theme--documenter-dark .column.is-2-mobile{flex:none;width:16.6666666667%}html.theme--documenter-dark .column.is-offset-2-mobile{margin-left:16.6666666667%}html.theme--documenter-dark .column.is-3-mobile{flex:none;width:25%}html.theme--documenter-dark .column.is-offset-3-mobile{margin-left:25%}html.theme--documenter-dark .column.is-4-mobile{flex:none;width:33.3333333333%}html.theme--documenter-dark .column.is-offset-4-mobile{margin-left:33.3333333333%}html.theme--documenter-dark .column.is-5-mobile{flex:none;width:41.6666666667%}html.theme--documenter-dark .column.is-offset-5-mobile{margin-left:41.6666666667%}html.theme--documenter-dark .column.is-6-mobile{flex:none;width:50%}html.theme--documenter-dark .column.is-offset-6-mobile{margin-left:50%}html.theme--documenter-dark .column.is-7-mobile{flex:none;width:58.3333333333%}html.theme--documenter-dark .column.is-offset-7-mobile{margin-left:58.3333333333%}html.theme--documenter-dark .column.is-8-mobile{flex:none;width:66.6666666667%}html.theme--documenter-dark .column.is-offset-8-mobile{margin-left:66.6666666667%}html.theme--documenter-dark .column.is-9-mobile{flex:none;width:75%}html.theme--documenter-dark .column.is-offset-9-mobile{margin-left:75%}html.theme--documenter-dark .column.is-10-mobile{flex:none;width:83.3333333333%}html.theme--documenter-dark .column.is-offset-10-mobile{margin-left:83.3333333333%}html.theme--documenter-dark .column.is-11-mobile{flex:none;width:91.6666666667%}html.theme--documenter-dark .column.is-offset-11-mobile{margin-left:91.6666666667%}html.theme--documenter-dark .column.is-12-mobile{flex:none;width:100%}html.theme--documenter-dark .column.is-offset-12-mobile{margin-left:100%}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .column.is-narrow,html.theme--documenter-dark .column.is-narrow-tablet{flex:none}html.theme--documenter-dark .column.is-full,html.theme--documenter-dark .column.is-full-tablet{flex:none;width:100%}html.theme--documenter-dark .column.is-three-quarters,html.theme--documenter-dark .column.is-three-quarters-tablet{flex:none;width:75%}html.theme--documenter-dark .column.is-two-thirds,html.theme--documenter-dark .column.is-two-thirds-tablet{flex:none;width:66.6666%}html.theme--documenter-dark .column.is-half,html.theme--documenter-dark .column.is-half-tablet{flex:none;width:50%}html.theme--documenter-dark .column.is-one-third,html.theme--documenter-dark .column.is-one-third-tablet{flex:none;width:33.3333%}html.theme--documenter-dark .column.is-one-quarter,html.theme--documenter-dark .column.is-one-quarter-tablet{flex:none;width:25%}html.theme--documenter-dark .column.is-one-fifth,html.theme--documenter-dark .column.is-one-fifth-tablet{flex:none;width:20%}html.theme--documenter-dark .column.is-two-fifths,html.theme--documenter-dark .column.is-two-fifths-tablet{flex:none;width:40%}html.theme--documenter-dark .column.is-three-fifths,html.theme--documenter-dark .column.is-three-fifths-tablet{flex:none;width:60%}html.theme--documenter-dark .column.is-four-fifths,html.theme--documenter-dark .column.is-four-fifths-tablet{flex:none;width:80%}html.theme--documenter-dark .column.is-offset-three-quarters,html.theme--documenter-dark .column.is-offset-three-quarters-tablet{margin-left:75%}html.theme--documenter-dark .column.is-offset-two-thirds,html.theme--documenter-dark .column.is-offset-two-thirds-tablet{margin-left:66.6666%}html.theme--documenter-dark .column.is-offset-half,html.theme--documenter-dark .column.is-offset-half-tablet{margin-left:50%}html.theme--documenter-dark .column.is-offset-one-third,html.theme--documenter-dark .column.is-offset-one-third-tablet{margin-left:33.3333%}html.theme--documenter-dark .column.is-offset-one-quarter,html.theme--documenter-dark .column.is-offset-one-quarter-tablet{margin-left:25%}html.theme--documenter-dark .column.is-offset-one-fifth,html.theme--documenter-dark .column.is-offset-one-fifth-tablet{margin-left:20%}html.theme--documenter-dark .column.is-offset-two-fifths,html.theme--documenter-dark .column.is-offset-two-fifths-tablet{margin-left:40%}html.theme--documenter-dark .column.is-offset-three-fifths,html.theme--documenter-dark .column.is-offset-three-fifths-tablet{margin-left:60%}html.theme--documenter-dark .column.is-offset-four-fifths,html.theme--documenter-dark .column.is-offset-four-fifths-tablet{margin-left:80%}html.theme--documenter-dark .column.is-0,html.theme--documenter-dark .column.is-0-tablet{flex:none;width:0%}html.theme--documenter-dark .column.is-offset-0,html.theme--documenter-dark .column.is-offset-0-tablet{margin-left:0%}html.theme--documenter-dark .column.is-1,html.theme--documenter-dark .column.is-1-tablet{flex:none;width:8.3333333333%}html.theme--documenter-dark .column.is-offset-1,html.theme--documenter-dark .column.is-offset-1-tablet{margin-left:8.3333333333%}html.theme--documenter-dark .column.is-2,html.theme--documenter-dark .column.is-2-tablet{flex:none;width:16.6666666667%}html.theme--documenter-dark .column.is-offset-2,html.theme--documenter-dark .column.is-offset-2-tablet{margin-left:16.6666666667%}html.theme--documenter-dark .column.is-3,html.theme--documenter-dark .column.is-3-tablet{flex:none;width:25%}html.theme--documenter-dark .column.is-offset-3,html.theme--documenter-dark .column.is-offset-3-tablet{margin-left:25%}html.theme--documenter-dark .column.is-4,html.theme--documenter-dark .column.is-4-tablet{flex:none;width:33.3333333333%}html.theme--documenter-dark .column.is-offset-4,html.theme--documenter-dark .column.is-offset-4-tablet{margin-left:33.3333333333%}html.theme--documenter-dark .column.is-5,html.theme--documenter-dark .column.is-5-tablet{flex:none;width:41.6666666667%}html.theme--documenter-dark .column.is-offset-5,html.theme--documenter-dark .column.is-offset-5-tablet{margin-left:41.6666666667%}html.theme--documenter-dark .column.is-6,html.theme--documenter-dark .column.is-6-tablet{flex:none;width:50%}html.theme--documenter-dark .column.is-offset-6,html.theme--documenter-dark .column.is-offset-6-tablet{margin-left:50%}html.theme--documenter-dark .column.is-7,html.theme--documenter-dark .column.is-7-tablet{flex:none;width:58.3333333333%}html.theme--documenter-dark .column.is-offset-7,html.theme--documenter-dark .column.is-offset-7-tablet{margin-left:58.3333333333%}html.theme--documenter-dark .column.is-8,html.theme--documenter-dark .column.is-8-tablet{flex:none;width:66.6666666667%}html.theme--documenter-dark .column.is-offset-8,html.theme--documenter-dark .column.is-offset-8-tablet{margin-left:66.6666666667%}html.theme--documenter-dark .column.is-9,html.theme--documenter-dark .column.is-9-tablet{flex:none;width:75%}html.theme--documenter-dark .column.is-offset-9,html.theme--documenter-dark .column.is-offset-9-tablet{margin-left:75%}html.theme--documenter-dark .column.is-10,html.theme--documenter-dark .column.is-10-tablet{flex:none;width:83.3333333333%}html.theme--documenter-dark .column.is-offset-10,html.theme--documenter-dark .column.is-offset-10-tablet{margin-left:83.3333333333%}html.theme--documenter-dark .column.is-11,html.theme--documenter-dark .column.is-11-tablet{flex:none;width:91.6666666667%}html.theme--documenter-dark .column.is-offset-11,html.theme--documenter-dark .column.is-offset-11-tablet{margin-left:91.6666666667%}html.theme--documenter-dark .column.is-12,html.theme--documenter-dark .column.is-12-tablet{flex:none;width:100%}html.theme--documenter-dark .column.is-offset-12,html.theme--documenter-dark .column.is-offset-12-tablet{margin-left:100%}}@media screen and (max-width: 1055px){html.theme--documenter-dark .column.is-narrow-touch{flex:none}html.theme--documenter-dark .column.is-full-touch{flex:none;width:100%}html.theme--documenter-dark .column.is-three-quarters-touch{flex:none;width:75%}html.theme--documenter-dark .column.is-two-thirds-touch{flex:none;width:66.6666%}html.theme--documenter-dark .column.is-half-touch{flex:none;width:50%}html.theme--documenter-dark .column.is-one-third-touch{flex:none;width:33.3333%}html.theme--documenter-dark .column.is-one-quarter-touch{flex:none;width:25%}html.theme--documenter-dark .column.is-one-fifth-touch{flex:none;width:20%}html.theme--documenter-dark .column.is-two-fifths-touch{flex:none;width:40%}html.theme--documenter-dark .column.is-three-fifths-touch{flex:none;width:60%}html.theme--documenter-dark .column.is-four-fifths-touch{flex:none;width:80%}html.theme--documenter-dark .column.is-offset-three-quarters-touch{margin-left:75%}html.theme--documenter-dark .column.is-offset-two-thirds-touch{margin-left:66.6666%}html.theme--documenter-dark .column.is-offset-half-touch{margin-left:50%}html.theme--documenter-dark .column.is-offset-one-third-touch{margin-left:33.3333%}html.theme--documenter-dark .column.is-offset-one-quarter-touch{margin-left:25%}html.theme--documenter-dark .column.is-offset-one-fifth-touch{margin-left:20%}html.theme--documenter-dark .column.is-offset-two-fifths-touch{margin-left:40%}html.theme--documenter-dark .column.is-offset-three-fifths-touch{margin-left:60%}html.theme--documenter-dark .column.is-offset-four-fifths-touch{margin-left:80%}html.theme--documenter-dark .column.is-0-touch{flex:none;width:0%}html.theme--documenter-dark .column.is-offset-0-touch{margin-left:0%}html.theme--documenter-dark .column.is-1-touch{flex:none;width:8.3333333333%}html.theme--documenter-dark .column.is-offset-1-touch{margin-left:8.3333333333%}html.theme--documenter-dark .column.is-2-touch{flex:none;width:16.6666666667%}html.theme--documenter-dark .column.is-offset-2-touch{margin-left:16.6666666667%}html.theme--documenter-dark .column.is-3-touch{flex:none;width:25%}html.theme--documenter-dark .column.is-offset-3-touch{margin-left:25%}html.theme--documenter-dark .column.is-4-touch{flex:none;width:33.3333333333%}html.theme--documenter-dark .column.is-offset-4-touch{margin-left:33.3333333333%}html.theme--documenter-dark .column.is-5-touch{flex:none;width:41.6666666667%}html.theme--documenter-dark .column.is-offset-5-touch{margin-left:41.6666666667%}html.theme--documenter-dark .column.is-6-touch{flex:none;width:50%}html.theme--documenter-dark .column.is-offset-6-touch{margin-left:50%}html.theme--documenter-dark .column.is-7-touch{flex:none;width:58.3333333333%}html.theme--documenter-dark .column.is-offset-7-touch{margin-left:58.3333333333%}html.theme--documenter-dark .column.is-8-touch{flex:none;width:66.6666666667%}html.theme--documenter-dark .column.is-offset-8-touch{margin-left:66.6666666667%}html.theme--documenter-dark .column.is-9-touch{flex:none;width:75%}html.theme--documenter-dark .column.is-offset-9-touch{margin-left:75%}html.theme--documenter-dark .column.is-10-touch{flex:none;width:83.3333333333%}html.theme--documenter-dark .column.is-offset-10-touch{margin-left:83.3333333333%}html.theme--documenter-dark .column.is-11-touch{flex:none;width:91.6666666667%}html.theme--documenter-dark .column.is-offset-11-touch{margin-left:91.6666666667%}html.theme--documenter-dark .column.is-12-touch{flex:none;width:100%}html.theme--documenter-dark .column.is-offset-12-touch{margin-left:100%}}@media screen and (min-width: 1056px){html.theme--documenter-dark .column.is-narrow-desktop{flex:none}html.theme--documenter-dark .column.is-full-desktop{flex:none;width:100%}html.theme--documenter-dark .column.is-three-quarters-desktop{flex:none;width:75%}html.theme--documenter-dark .column.is-two-thirds-desktop{flex:none;width:66.6666%}html.theme--documenter-dark .column.is-half-desktop{flex:none;width:50%}html.theme--documenter-dark .column.is-one-third-desktop{flex:none;width:33.3333%}html.theme--documenter-dark .column.is-one-quarter-desktop{flex:none;width:25%}html.theme--documenter-dark .column.is-one-fifth-desktop{flex:none;width:20%}html.theme--documenter-dark .column.is-two-fifths-desktop{flex:none;width:40%}html.theme--documenter-dark .column.is-three-fifths-desktop{flex:none;width:60%}html.theme--documenter-dark .column.is-four-fifths-desktop{flex:none;width:80%}html.theme--documenter-dark .column.is-offset-three-quarters-desktop{margin-left:75%}html.theme--documenter-dark .column.is-offset-two-thirds-desktop{margin-left:66.6666%}html.theme--documenter-dark .column.is-offset-half-desktop{margin-left:50%}html.theme--documenter-dark .column.is-offset-one-third-desktop{margin-left:33.3333%}html.theme--documenter-dark .column.is-offset-one-quarter-desktop{margin-left:25%}html.theme--documenter-dark .column.is-offset-one-fifth-desktop{margin-left:20%}html.theme--documenter-dark .column.is-offset-two-fifths-desktop{margin-left:40%}html.theme--documenter-dark .column.is-offset-three-fifths-desktop{margin-left:60%}html.theme--documenter-dark .column.is-offset-four-fifths-desktop{margin-left:80%}html.theme--documenter-dark .column.is-0-desktop{flex:none;width:0%}html.theme--documenter-dark .column.is-offset-0-desktop{margin-left:0%}html.theme--documenter-dark .column.is-1-desktop{flex:none;width:8.3333333333%}html.theme--documenter-dark .column.is-offset-1-desktop{margin-left:8.3333333333%}html.theme--documenter-dark .column.is-2-desktop{flex:none;width:16.6666666667%}html.theme--documenter-dark .column.is-offset-2-desktop{margin-left:16.6666666667%}html.theme--documenter-dark .column.is-3-desktop{flex:none;width:25%}html.theme--documenter-dark .column.is-offset-3-desktop{margin-left:25%}html.theme--documenter-dark .column.is-4-desktop{flex:none;width:33.3333333333%}html.theme--documenter-dark .column.is-offset-4-desktop{margin-left:33.3333333333%}html.theme--documenter-dark .column.is-5-desktop{flex:none;width:41.6666666667%}html.theme--documenter-dark .column.is-offset-5-desktop{margin-left:41.6666666667%}html.theme--documenter-dark .column.is-6-desktop{flex:none;width:50%}html.theme--documenter-dark .column.is-offset-6-desktop{margin-left:50%}html.theme--documenter-dark .column.is-7-desktop{flex:none;width:58.3333333333%}html.theme--documenter-dark .column.is-offset-7-desktop{margin-left:58.3333333333%}html.theme--documenter-dark .column.is-8-desktop{flex:none;width:66.6666666667%}html.theme--documenter-dark .column.is-offset-8-desktop{margin-left:66.6666666667%}html.theme--documenter-dark .column.is-9-desktop{flex:none;width:75%}html.theme--documenter-dark .column.is-offset-9-desktop{margin-left:75%}html.theme--documenter-dark .column.is-10-desktop{flex:none;width:83.3333333333%}html.theme--documenter-dark .column.is-offset-10-desktop{margin-left:83.3333333333%}html.theme--documenter-dark .column.is-11-desktop{flex:none;width:91.6666666667%}html.theme--documenter-dark .column.is-offset-11-desktop{margin-left:91.6666666667%}html.theme--documenter-dark .column.is-12-desktop{flex:none;width:100%}html.theme--documenter-dark .column.is-offset-12-desktop{margin-left:100%}}@media screen and (min-width: 1216px){html.theme--documenter-dark .column.is-narrow-widescreen{flex:none}html.theme--documenter-dark .column.is-full-widescreen{flex:none;width:100%}html.theme--documenter-dark .column.is-three-quarters-widescreen{flex:none;width:75%}html.theme--documenter-dark .column.is-two-thirds-widescreen{flex:none;width:66.6666%}html.theme--documenter-dark .column.is-half-widescreen{flex:none;width:50%}html.theme--documenter-dark .column.is-one-third-widescreen{flex:none;width:33.3333%}html.theme--documenter-dark .column.is-one-quarter-widescreen{flex:none;width:25%}html.theme--documenter-dark .column.is-one-fifth-widescreen{flex:none;width:20%}html.theme--documenter-dark .column.is-two-fifths-widescreen{flex:none;width:40%}html.theme--documenter-dark .column.is-three-fifths-widescreen{flex:none;width:60%}html.theme--documenter-dark .column.is-four-fifths-widescreen{flex:none;width:80%}html.theme--documenter-dark .column.is-offset-three-quarters-widescreen{margin-left:75%}html.theme--documenter-dark .column.is-offset-two-thirds-widescreen{margin-left:66.6666%}html.theme--documenter-dark .column.is-offset-half-widescreen{margin-left:50%}html.theme--documenter-dark .column.is-offset-one-third-widescreen{margin-left:33.3333%}html.theme--documenter-dark .column.is-offset-one-quarter-widescreen{margin-left:25%}html.theme--documenter-dark .column.is-offset-one-fifth-widescreen{margin-left:20%}html.theme--documenter-dark .column.is-offset-two-fifths-widescreen{margin-left:40%}html.theme--documenter-dark .column.is-offset-three-fifths-widescreen{margin-left:60%}html.theme--documenter-dark .column.is-offset-four-fifths-widescreen{margin-left:80%}html.theme--documenter-dark .column.is-0-widescreen{flex:none;width:0%}html.theme--documenter-dark .column.is-offset-0-widescreen{margin-left:0%}html.theme--documenter-dark .column.is-1-widescreen{flex:none;width:8.3333333333%}html.theme--documenter-dark .column.is-offset-1-widescreen{margin-left:8.3333333333%}html.theme--documenter-dark .column.is-2-widescreen{flex:none;width:16.6666666667%}html.theme--documenter-dark .column.is-offset-2-widescreen{margin-left:16.6666666667%}html.theme--documenter-dark .column.is-3-widescreen{flex:none;width:25%}html.theme--documenter-dark .column.is-offset-3-widescreen{margin-left:25%}html.theme--documenter-dark .column.is-4-widescreen{flex:none;width:33.3333333333%}html.theme--documenter-dark .column.is-offset-4-widescreen{margin-left:33.3333333333%}html.theme--documenter-dark .column.is-5-widescreen{flex:none;width:41.6666666667%}html.theme--documenter-dark .column.is-offset-5-widescreen{margin-left:41.6666666667%}html.theme--documenter-dark .column.is-6-widescreen{flex:none;width:50%}html.theme--documenter-dark .column.is-offset-6-widescreen{margin-left:50%}html.theme--documenter-dark .column.is-7-widescreen{flex:none;width:58.3333333333%}html.theme--documenter-dark .column.is-offset-7-widescreen{margin-left:58.3333333333%}html.theme--documenter-dark .column.is-8-widescreen{flex:none;width:66.6666666667%}html.theme--documenter-dark .column.is-offset-8-widescreen{margin-left:66.6666666667%}html.theme--documenter-dark .column.is-9-widescreen{flex:none;width:75%}html.theme--documenter-dark .column.is-offset-9-widescreen{margin-left:75%}html.theme--documenter-dark .column.is-10-widescreen{flex:none;width:83.3333333333%}html.theme--documenter-dark .column.is-offset-10-widescreen{margin-left:83.3333333333%}html.theme--documenter-dark .column.is-11-widescreen{flex:none;width:91.6666666667%}html.theme--documenter-dark .column.is-offset-11-widescreen{margin-left:91.6666666667%}html.theme--documenter-dark .column.is-12-widescreen{flex:none;width:100%}html.theme--documenter-dark .column.is-offset-12-widescreen{margin-left:100%}}@media screen and (min-width: 1408px){html.theme--documenter-dark .column.is-narrow-fullhd{flex:none}html.theme--documenter-dark .column.is-full-fullhd{flex:none;width:100%}html.theme--documenter-dark .column.is-three-quarters-fullhd{flex:none;width:75%}html.theme--documenter-dark .column.is-two-thirds-fullhd{flex:none;width:66.6666%}html.theme--documenter-dark .column.is-half-fullhd{flex:none;width:50%}html.theme--documenter-dark .column.is-one-third-fullhd{flex:none;width:33.3333%}html.theme--documenter-dark .column.is-one-quarter-fullhd{flex:none;width:25%}html.theme--documenter-dark .column.is-one-fifth-fullhd{flex:none;width:20%}html.theme--documenter-dark .column.is-two-fifths-fullhd{flex:none;width:40%}html.theme--documenter-dark .column.is-three-fifths-fullhd{flex:none;width:60%}html.theme--documenter-dark .column.is-four-fifths-fullhd{flex:none;width:80%}html.theme--documenter-dark .column.is-offset-three-quarters-fullhd{margin-left:75%}html.theme--documenter-dark .column.is-offset-two-thirds-fullhd{margin-left:66.6666%}html.theme--documenter-dark .column.is-offset-half-fullhd{margin-left:50%}html.theme--documenter-dark .column.is-offset-one-third-fullhd{margin-left:33.3333%}html.theme--documenter-dark .column.is-offset-one-quarter-fullhd{margin-left:25%}html.theme--documenter-dark .column.is-offset-one-fifth-fullhd{margin-left:20%}html.theme--documenter-dark .column.is-offset-two-fifths-fullhd{margin-left:40%}html.theme--documenter-dark .column.is-offset-three-fifths-fullhd{margin-left:60%}html.theme--documenter-dark .column.is-offset-four-fifths-fullhd{margin-left:80%}html.theme--documenter-dark .column.is-0-fullhd{flex:none;width:0%}html.theme--documenter-dark .column.is-offset-0-fullhd{margin-left:0%}html.theme--documenter-dark .column.is-1-fullhd{flex:none;width:8.3333333333%}html.theme--documenter-dark .column.is-offset-1-fullhd{margin-left:8.3333333333%}html.theme--documenter-dark .column.is-2-fullhd{flex:none;width:16.6666666667%}html.theme--documenter-dark .column.is-offset-2-fullhd{margin-left:16.6666666667%}html.theme--documenter-dark .column.is-3-fullhd{flex:none;width:25%}html.theme--documenter-dark .column.is-offset-3-fullhd{margin-left:25%}html.theme--documenter-dark .column.is-4-fullhd{flex:none;width:33.3333333333%}html.theme--documenter-dark .column.is-offset-4-fullhd{margin-left:33.3333333333%}html.theme--documenter-dark .column.is-5-fullhd{flex:none;width:41.6666666667%}html.theme--documenter-dark .column.is-offset-5-fullhd{margin-left:41.6666666667%}html.theme--documenter-dark .column.is-6-fullhd{flex:none;width:50%}html.theme--documenter-dark .column.is-offset-6-fullhd{margin-left:50%}html.theme--documenter-dark .column.is-7-fullhd{flex:none;width:58.3333333333%}html.theme--documenter-dark .column.is-offset-7-fullhd{margin-left:58.3333333333%}html.theme--documenter-dark .column.is-8-fullhd{flex:none;width:66.6666666667%}html.theme--documenter-dark .column.is-offset-8-fullhd{margin-left:66.6666666667%}html.theme--documenter-dark .column.is-9-fullhd{flex:none;width:75%}html.theme--documenter-dark .column.is-offset-9-fullhd{margin-left:75%}html.theme--documenter-dark .column.is-10-fullhd{flex:none;width:83.3333333333%}html.theme--documenter-dark .column.is-offset-10-fullhd{margin-left:83.3333333333%}html.theme--documenter-dark .column.is-11-fullhd{flex:none;width:91.6666666667%}html.theme--documenter-dark .column.is-offset-11-fullhd{margin-left:91.6666666667%}html.theme--documenter-dark .column.is-12-fullhd{flex:none;width:100%}html.theme--documenter-dark .column.is-offset-12-fullhd{margin-left:100%}}html.theme--documenter-dark .columns{margin-left:-.75rem;margin-right:-.75rem;margin-top:-.75rem}html.theme--documenter-dark .columns:last-child{margin-bottom:-.75rem}html.theme--documenter-dark .columns:not(:last-child){margin-bottom:calc(1.5rem - .75rem)}html.theme--documenter-dark .columns.is-centered{justify-content:center}html.theme--documenter-dark .columns.is-gapless{margin-left:0;margin-right:0;margin-top:0}html.theme--documenter-dark .columns.is-gapless>.column{margin:0;padding:0 !important}html.theme--documenter-dark .columns.is-gapless:not(:last-child){margin-bottom:1.5rem}html.theme--documenter-dark .columns.is-gapless:last-child{margin-bottom:0}html.theme--documenter-dark .columns.is-mobile{display:flex}html.theme--documenter-dark .columns.is-multiline{flex-wrap:wrap}html.theme--documenter-dark .columns.is-vcentered{align-items:center}@media screen and (min-width: 769px),print{html.theme--documenter-dark .columns:not(.is-desktop){display:flex}}@media screen and (min-width: 1056px){html.theme--documenter-dark .columns.is-desktop{display:flex}}html.theme--documenter-dark .columns.is-variable{--columnGap: 0.75rem;margin-left:calc(-1 * var(--columnGap));margin-right:calc(-1 * var(--columnGap))}html.theme--documenter-dark .columns.is-variable .column{padding-left:var(--columnGap);padding-right:var(--columnGap)}html.theme--documenter-dark .columns.is-variable.is-0{--columnGap: 0rem}@media screen and (max-width: 768px){html.theme--documenter-dark .columns.is-variable.is-0-mobile{--columnGap: 0rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .columns.is-variable.is-0-tablet{--columnGap: 0rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-0-tablet-only{--columnGap: 0rem}}@media screen and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-0-touch{--columnGap: 0rem}}@media screen and (min-width: 1056px){html.theme--documenter-dark .columns.is-variable.is-0-desktop{--columnGap: 0rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--documenter-dark .columns.is-variable.is-0-desktop-only{--columnGap: 0rem}}@media screen and (min-width: 1216px){html.theme--documenter-dark .columns.is-variable.is-0-widescreen{--columnGap: 0rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--documenter-dark .columns.is-variable.is-0-widescreen-only{--columnGap: 0rem}}@media screen and (min-width: 1408px){html.theme--documenter-dark .columns.is-variable.is-0-fullhd{--columnGap: 0rem}}html.theme--documenter-dark .columns.is-variable.is-1{--columnGap: .25rem}@media screen and (max-width: 768px){html.theme--documenter-dark .columns.is-variable.is-1-mobile{--columnGap: .25rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .columns.is-variable.is-1-tablet{--columnGap: .25rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-1-tablet-only{--columnGap: .25rem}}@media screen and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-1-touch{--columnGap: .25rem}}@media screen and (min-width: 1056px){html.theme--documenter-dark .columns.is-variable.is-1-desktop{--columnGap: .25rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--documenter-dark .columns.is-variable.is-1-desktop-only{--columnGap: .25rem}}@media screen and (min-width: 1216px){html.theme--documenter-dark .columns.is-variable.is-1-widescreen{--columnGap: .25rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--documenter-dark .columns.is-variable.is-1-widescreen-only{--columnGap: .25rem}}@media screen and (min-width: 1408px){html.theme--documenter-dark .columns.is-variable.is-1-fullhd{--columnGap: .25rem}}html.theme--documenter-dark .columns.is-variable.is-2{--columnGap: .5rem}@media screen and (max-width: 768px){html.theme--documenter-dark .columns.is-variable.is-2-mobile{--columnGap: .5rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .columns.is-variable.is-2-tablet{--columnGap: .5rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-2-tablet-only{--columnGap: .5rem}}@media screen and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-2-touch{--columnGap: .5rem}}@media screen and (min-width: 1056px){html.theme--documenter-dark .columns.is-variable.is-2-desktop{--columnGap: .5rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--documenter-dark .columns.is-variable.is-2-desktop-only{--columnGap: .5rem}}@media screen and (min-width: 1216px){html.theme--documenter-dark .columns.is-variable.is-2-widescreen{--columnGap: .5rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--documenter-dark .columns.is-variable.is-2-widescreen-only{--columnGap: .5rem}}@media screen and (min-width: 1408px){html.theme--documenter-dark .columns.is-variable.is-2-fullhd{--columnGap: .5rem}}html.theme--documenter-dark .columns.is-variable.is-3{--columnGap: .75rem}@media screen and (max-width: 768px){html.theme--documenter-dark .columns.is-variable.is-3-mobile{--columnGap: .75rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .columns.is-variable.is-3-tablet{--columnGap: .75rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-3-tablet-only{--columnGap: .75rem}}@media screen and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-3-touch{--columnGap: .75rem}}@media screen and (min-width: 1056px){html.theme--documenter-dark .columns.is-variable.is-3-desktop{--columnGap: .75rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--documenter-dark .columns.is-variable.is-3-desktop-only{--columnGap: .75rem}}@media screen and (min-width: 1216px){html.theme--documenter-dark .columns.is-variable.is-3-widescreen{--columnGap: .75rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--documenter-dark .columns.is-variable.is-3-widescreen-only{--columnGap: .75rem}}@media screen and (min-width: 1408px){html.theme--documenter-dark .columns.is-variable.is-3-fullhd{--columnGap: .75rem}}html.theme--documenter-dark .columns.is-variable.is-4{--columnGap: 1rem}@media screen and (max-width: 768px){html.theme--documenter-dark .columns.is-variable.is-4-mobile{--columnGap: 1rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .columns.is-variable.is-4-tablet{--columnGap: 1rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-4-tablet-only{--columnGap: 1rem}}@media screen and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-4-touch{--columnGap: 1rem}}@media screen and (min-width: 1056px){html.theme--documenter-dark .columns.is-variable.is-4-desktop{--columnGap: 1rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--documenter-dark .columns.is-variable.is-4-desktop-only{--columnGap: 1rem}}@media screen and (min-width: 1216px){html.theme--documenter-dark .columns.is-variable.is-4-widescreen{--columnGap: 1rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--documenter-dark .columns.is-variable.is-4-widescreen-only{--columnGap: 1rem}}@media screen and (min-width: 1408px){html.theme--documenter-dark .columns.is-variable.is-4-fullhd{--columnGap: 1rem}}html.theme--documenter-dark .columns.is-variable.is-5{--columnGap: 1.25rem}@media screen and (max-width: 768px){html.theme--documenter-dark .columns.is-variable.is-5-mobile{--columnGap: 1.25rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .columns.is-variable.is-5-tablet{--columnGap: 1.25rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-5-tablet-only{--columnGap: 1.25rem}}@media screen and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-5-touch{--columnGap: 1.25rem}}@media screen and (min-width: 1056px){html.theme--documenter-dark .columns.is-variable.is-5-desktop{--columnGap: 1.25rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--documenter-dark .columns.is-variable.is-5-desktop-only{--columnGap: 1.25rem}}@media screen and (min-width: 1216px){html.theme--documenter-dark .columns.is-variable.is-5-widescreen{--columnGap: 1.25rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--documenter-dark .columns.is-variable.is-5-widescreen-only{--columnGap: 1.25rem}}@media screen and (min-width: 1408px){html.theme--documenter-dark .columns.is-variable.is-5-fullhd{--columnGap: 1.25rem}}html.theme--documenter-dark .columns.is-variable.is-6{--columnGap: 1.5rem}@media screen and (max-width: 768px){html.theme--documenter-dark .columns.is-variable.is-6-mobile{--columnGap: 1.5rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .columns.is-variable.is-6-tablet{--columnGap: 1.5rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-6-tablet-only{--columnGap: 1.5rem}}@media screen and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-6-touch{--columnGap: 1.5rem}}@media screen and (min-width: 1056px){html.theme--documenter-dark .columns.is-variable.is-6-desktop{--columnGap: 1.5rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--documenter-dark .columns.is-variable.is-6-desktop-only{--columnGap: 1.5rem}}@media screen and (min-width: 1216px){html.theme--documenter-dark .columns.is-variable.is-6-widescreen{--columnGap: 1.5rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--documenter-dark .columns.is-variable.is-6-widescreen-only{--columnGap: 1.5rem}}@media screen and (min-width: 1408px){html.theme--documenter-dark .columns.is-variable.is-6-fullhd{--columnGap: 1.5rem}}html.theme--documenter-dark .columns.is-variable.is-7{--columnGap: 1.75rem}@media screen and (max-width: 768px){html.theme--documenter-dark .columns.is-variable.is-7-mobile{--columnGap: 1.75rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .columns.is-variable.is-7-tablet{--columnGap: 1.75rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-7-tablet-only{--columnGap: 1.75rem}}@media screen and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-7-touch{--columnGap: 1.75rem}}@media screen and (min-width: 1056px){html.theme--documenter-dark .columns.is-variable.is-7-desktop{--columnGap: 1.75rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--documenter-dark .columns.is-variable.is-7-desktop-only{--columnGap: 1.75rem}}@media screen and (min-width: 1216px){html.theme--documenter-dark .columns.is-variable.is-7-widescreen{--columnGap: 1.75rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--documenter-dark .columns.is-variable.is-7-widescreen-only{--columnGap: 1.75rem}}@media screen and (min-width: 1408px){html.theme--documenter-dark .columns.is-variable.is-7-fullhd{--columnGap: 1.75rem}}html.theme--documenter-dark .columns.is-variable.is-8{--columnGap: 2rem}@media screen and (max-width: 768px){html.theme--documenter-dark .columns.is-variable.is-8-mobile{--columnGap: 2rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .columns.is-variable.is-8-tablet{--columnGap: 2rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-8-tablet-only{--columnGap: 2rem}}@media screen and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-8-touch{--columnGap: 2rem}}@media screen and (min-width: 1056px){html.theme--documenter-dark .columns.is-variable.is-8-desktop{--columnGap: 2rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--documenter-dark .columns.is-variable.is-8-desktop-only{--columnGap: 2rem}}@media screen and (min-width: 1216px){html.theme--documenter-dark .columns.is-variable.is-8-widescreen{--columnGap: 2rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--documenter-dark .columns.is-variable.is-8-widescreen-only{--columnGap: 2rem}}@media screen and (min-width: 1408px){html.theme--documenter-dark .columns.is-variable.is-8-fullhd{--columnGap: 2rem}}html.theme--documenter-dark .tile{align-items:stretch;display:block;flex-basis:0;flex-grow:1;flex-shrink:1;min-height:min-content}html.theme--documenter-dark .tile.is-ancestor{margin-left:-.75rem;margin-right:-.75rem;margin-top:-.75rem}html.theme--documenter-dark .tile.is-ancestor:last-child{margin-bottom:-.75rem}html.theme--documenter-dark .tile.is-ancestor:not(:last-child){margin-bottom:.75rem}html.theme--documenter-dark .tile.is-child{margin:0 !important}html.theme--documenter-dark .tile.is-parent{padding:.75rem}html.theme--documenter-dark .tile.is-vertical{flex-direction:column}html.theme--documenter-dark .tile.is-vertical>.tile.is-child:not(:last-child){margin-bottom:1.5rem !important}@media screen and (min-width: 769px),print{html.theme--documenter-dark .tile:not(.is-child){display:flex}html.theme--documenter-dark .tile.is-1{flex:none;width:8.3333333333%}html.theme--documenter-dark .tile.is-2{flex:none;width:16.6666666667%}html.theme--documenter-dark .tile.is-3{flex:none;width:25%}html.theme--documenter-dark .tile.is-4{flex:none;width:33.3333333333%}html.theme--documenter-dark .tile.is-5{flex:none;width:41.6666666667%}html.theme--documenter-dark .tile.is-6{flex:none;width:50%}html.theme--documenter-dark .tile.is-7{flex:none;width:58.3333333333%}html.theme--documenter-dark .tile.is-8{flex:none;width:66.6666666667%}html.theme--documenter-dark .tile.is-9{flex:none;width:75%}html.theme--documenter-dark .tile.is-10{flex:none;width:83.3333333333%}html.theme--documenter-dark .tile.is-11{flex:none;width:91.6666666667%}html.theme--documenter-dark .tile.is-12{flex:none;width:100%}}html.theme--documenter-dark .hero{align-items:stretch;display:flex;flex-direction:column;justify-content:space-between}html.theme--documenter-dark .hero .navbar{background:none}html.theme--documenter-dark .hero .tabs ul{border-bottom:none}html.theme--documenter-dark .hero.is-white{background-color:#fff;color:#0a0a0a}html.theme--documenter-dark .hero.is-white a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--documenter-dark .hero.is-white strong{color:inherit}html.theme--documenter-dark .hero.is-white .title{color:#0a0a0a}html.theme--documenter-dark .hero.is-white .subtitle{color:rgba(10,10,10,0.9)}html.theme--documenter-dark .hero.is-white .subtitle a:not(.button),html.theme--documenter-dark .hero.is-white .subtitle strong{color:#0a0a0a}@media screen and (max-width: 1055px){html.theme--documenter-dark .hero.is-white .navbar-menu{background-color:#fff}}html.theme--documenter-dark .hero.is-white .navbar-item,html.theme--documenter-dark .hero.is-white .navbar-link{color:rgba(10,10,10,0.7)}html.theme--documenter-dark .hero.is-white a.navbar-item:hover,html.theme--documenter-dark .hero.is-white a.navbar-item.is-active,html.theme--documenter-dark .hero.is-white .navbar-link:hover,html.theme--documenter-dark .hero.is-white .navbar-link.is-active{background-color:#f2f2f2;color:#0a0a0a}html.theme--documenter-dark .hero.is-white .tabs a{color:#0a0a0a;opacity:0.9}html.theme--documenter-dark .hero.is-white .tabs a:hover{opacity:1}html.theme--documenter-dark .hero.is-white .tabs li.is-active a{opacity:1}html.theme--documenter-dark .hero.is-white .tabs.is-boxed a,html.theme--documenter-dark .hero.is-white .tabs.is-toggle a{color:#0a0a0a}html.theme--documenter-dark .hero.is-white .tabs.is-boxed a:hover,html.theme--documenter-dark .hero.is-white .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--documenter-dark .hero.is-white .tabs.is-boxed li.is-active a,html.theme--documenter-dark .hero.is-white .tabs.is-boxed li.is-active a:hover,html.theme--documenter-dark .hero.is-white .tabs.is-toggle li.is-active a,html.theme--documenter-dark .hero.is-white .tabs.is-toggle li.is-active a:hover{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}html.theme--documenter-dark .hero.is-white.is-bold{background-image:linear-gradient(141deg, #e8e3e4 0%, #fff 71%, #fff 100%)}@media screen and (max-width: 768px){html.theme--documenter-dark .hero.is-white.is-bold .navbar-menu{background-image:linear-gradient(141deg, #e8e3e4 0%, #fff 71%, #fff 100%)}}html.theme--documenter-dark .hero.is-black{background-color:#0a0a0a;color:#fff}html.theme--documenter-dark .hero.is-black a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--documenter-dark .hero.is-black strong{color:inherit}html.theme--documenter-dark .hero.is-black .title{color:#fff}html.theme--documenter-dark .hero.is-black .subtitle{color:rgba(255,255,255,0.9)}html.theme--documenter-dark .hero.is-black .subtitle a:not(.button),html.theme--documenter-dark .hero.is-black .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--documenter-dark .hero.is-black .navbar-menu{background-color:#0a0a0a}}html.theme--documenter-dark .hero.is-black .navbar-item,html.theme--documenter-dark .hero.is-black .navbar-link{color:rgba(255,255,255,0.7)}html.theme--documenter-dark .hero.is-black a.navbar-item:hover,html.theme--documenter-dark .hero.is-black a.navbar-item.is-active,html.theme--documenter-dark .hero.is-black .navbar-link:hover,html.theme--documenter-dark .hero.is-black .navbar-link.is-active{background-color:#000;color:#fff}html.theme--documenter-dark .hero.is-black .tabs a{color:#fff;opacity:0.9}html.theme--documenter-dark .hero.is-black .tabs a:hover{opacity:1}html.theme--documenter-dark .hero.is-black .tabs li.is-active a{opacity:1}html.theme--documenter-dark .hero.is-black .tabs.is-boxed a,html.theme--documenter-dark .hero.is-black .tabs.is-toggle a{color:#fff}html.theme--documenter-dark .hero.is-black .tabs.is-boxed a:hover,html.theme--documenter-dark .hero.is-black .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--documenter-dark .hero.is-black .tabs.is-boxed li.is-active a,html.theme--documenter-dark .hero.is-black .tabs.is-boxed li.is-active a:hover,html.theme--documenter-dark .hero.is-black .tabs.is-toggle li.is-active a,html.theme--documenter-dark .hero.is-black .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#0a0a0a}html.theme--documenter-dark .hero.is-black.is-bold{background-image:linear-gradient(141deg, #000 0%, #0a0a0a 71%, #181616 100%)}@media screen and (max-width: 768px){html.theme--documenter-dark .hero.is-black.is-bold .navbar-menu{background-image:linear-gradient(141deg, #000 0%, #0a0a0a 71%, #181616 100%)}}html.theme--documenter-dark .hero.is-light{background-color:#ecf0f1;color:#282f2f}html.theme--documenter-dark .hero.is-light a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--documenter-dark .hero.is-light strong{color:inherit}html.theme--documenter-dark .hero.is-light .title{color:#282f2f}html.theme--documenter-dark .hero.is-light .subtitle{color:rgba(40,47,47,0.9)}html.theme--documenter-dark .hero.is-light .subtitle a:not(.button),html.theme--documenter-dark .hero.is-light .subtitle strong{color:#282f2f}@media screen and (max-width: 1055px){html.theme--documenter-dark .hero.is-light .navbar-menu{background-color:#ecf0f1}}html.theme--documenter-dark .hero.is-light .navbar-item,html.theme--documenter-dark .hero.is-light .navbar-link{color:rgba(40,47,47,0.7)}html.theme--documenter-dark .hero.is-light a.navbar-item:hover,html.theme--documenter-dark .hero.is-light a.navbar-item.is-active,html.theme--documenter-dark .hero.is-light .navbar-link:hover,html.theme--documenter-dark .hero.is-light .navbar-link.is-active{background-color:#dde4e6;color:#282f2f}html.theme--documenter-dark .hero.is-light .tabs a{color:#282f2f;opacity:0.9}html.theme--documenter-dark .hero.is-light .tabs a:hover{opacity:1}html.theme--documenter-dark .hero.is-light .tabs li.is-active a{opacity:1}html.theme--documenter-dark .hero.is-light .tabs.is-boxed a,html.theme--documenter-dark .hero.is-light .tabs.is-toggle a{color:#282f2f}html.theme--documenter-dark .hero.is-light .tabs.is-boxed a:hover,html.theme--documenter-dark .hero.is-light .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--documenter-dark .hero.is-light .tabs.is-boxed li.is-active a,html.theme--documenter-dark .hero.is-light .tabs.is-boxed li.is-active a:hover,html.theme--documenter-dark .hero.is-light .tabs.is-toggle li.is-active a,html.theme--documenter-dark .hero.is-light .tabs.is-toggle li.is-active a:hover{background-color:#282f2f;border-color:#282f2f;color:#ecf0f1}html.theme--documenter-dark .hero.is-light.is-bold{background-image:linear-gradient(141deg, #cadfe0 0%, #ecf0f1 71%, #fafbfc 100%)}@media screen and (max-width: 768px){html.theme--documenter-dark .hero.is-light.is-bold .navbar-menu{background-image:linear-gradient(141deg, #cadfe0 0%, #ecf0f1 71%, #fafbfc 100%)}}html.theme--documenter-dark .hero.is-dark,html.theme--documenter-dark .content kbd.hero{background-color:#282f2f;color:#ecf0f1}html.theme--documenter-dark .hero.is-dark a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--documenter-dark .content kbd.hero a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--documenter-dark .hero.is-dark strong,html.theme--documenter-dark .content kbd.hero strong{color:inherit}html.theme--documenter-dark .hero.is-dark .title,html.theme--documenter-dark .content kbd.hero .title{color:#ecf0f1}html.theme--documenter-dark .hero.is-dark .subtitle,html.theme--documenter-dark .content kbd.hero .subtitle{color:rgba(236,240,241,0.9)}html.theme--documenter-dark .hero.is-dark .subtitle a:not(.button),html.theme--documenter-dark .content kbd.hero .subtitle a:not(.button),html.theme--documenter-dark .hero.is-dark .subtitle strong,html.theme--documenter-dark .content kbd.hero .subtitle strong{color:#ecf0f1}@media screen and (max-width: 1055px){html.theme--documenter-dark .hero.is-dark .navbar-menu,html.theme--documenter-dark .content kbd.hero .navbar-menu{background-color:#282f2f}}html.theme--documenter-dark .hero.is-dark .navbar-item,html.theme--documenter-dark .content kbd.hero .navbar-item,html.theme--documenter-dark .hero.is-dark .navbar-link,html.theme--documenter-dark .content kbd.hero .navbar-link{color:rgba(236,240,241,0.7)}html.theme--documenter-dark .hero.is-dark a.navbar-item:hover,html.theme--documenter-dark .content kbd.hero a.navbar-item:hover,html.theme--documenter-dark .hero.is-dark a.navbar-item.is-active,html.theme--documenter-dark .content kbd.hero a.navbar-item.is-active,html.theme--documenter-dark .hero.is-dark .navbar-link:hover,html.theme--documenter-dark .content kbd.hero .navbar-link:hover,html.theme--documenter-dark .hero.is-dark .navbar-link.is-active,html.theme--documenter-dark .content kbd.hero .navbar-link.is-active{background-color:#1d2122;color:#ecf0f1}html.theme--documenter-dark .hero.is-dark .tabs a,html.theme--documenter-dark .content kbd.hero .tabs a{color:#ecf0f1;opacity:0.9}html.theme--documenter-dark .hero.is-dark .tabs a:hover,html.theme--documenter-dark .content kbd.hero .tabs a:hover{opacity:1}html.theme--documenter-dark .hero.is-dark .tabs li.is-active a,html.theme--documenter-dark .content kbd.hero .tabs li.is-active a{opacity:1}html.theme--documenter-dark .hero.is-dark .tabs.is-boxed a,html.theme--documenter-dark .content kbd.hero .tabs.is-boxed a,html.theme--documenter-dark .hero.is-dark .tabs.is-toggle a,html.theme--documenter-dark .content kbd.hero .tabs.is-toggle a{color:#ecf0f1}html.theme--documenter-dark .hero.is-dark .tabs.is-boxed a:hover,html.theme--documenter-dark .content kbd.hero .tabs.is-boxed a:hover,html.theme--documenter-dark .hero.is-dark .tabs.is-toggle a:hover,html.theme--documenter-dark .content kbd.hero .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--documenter-dark .hero.is-dark .tabs.is-boxed li.is-active a,html.theme--documenter-dark .content kbd.hero .tabs.is-boxed li.is-active a,html.theme--documenter-dark .hero.is-dark .tabs.is-boxed li.is-active a:hover,html.theme--documenter-dark .hero.is-dark .tabs.is-toggle li.is-active a,html.theme--documenter-dark .content kbd.hero .tabs.is-toggle li.is-active a,html.theme--documenter-dark .hero.is-dark .tabs.is-toggle li.is-active a:hover{background-color:#ecf0f1;border-color:#ecf0f1;color:#282f2f}html.theme--documenter-dark .hero.is-dark.is-bold,html.theme--documenter-dark .content kbd.hero.is-bold{background-image:linear-gradient(141deg, #0f1615 0%, #282f2f 71%, #313c40 100%)}@media screen and (max-width: 768px){html.theme--documenter-dark .hero.is-dark.is-bold .navbar-menu,html.theme--documenter-dark .content kbd.hero.is-bold .navbar-menu{background-image:linear-gradient(141deg, #0f1615 0%, #282f2f 71%, #313c40 100%)}}html.theme--documenter-dark .hero.is-primary,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink{background-color:#375a7f;color:#fff}html.theme--documenter-dark .hero.is-primary a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--documenter-dark .hero.is-primary strong,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink strong{color:inherit}html.theme--documenter-dark .hero.is-primary .title,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .title{color:#fff}html.theme--documenter-dark .hero.is-primary .subtitle,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .subtitle{color:rgba(255,255,255,0.9)}html.theme--documenter-dark .hero.is-primary .subtitle a:not(.button),html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .subtitle a:not(.button),html.theme--documenter-dark .hero.is-primary .subtitle strong,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--documenter-dark .hero.is-primary .navbar-menu,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .navbar-menu{background-color:#375a7f}}html.theme--documenter-dark .hero.is-primary .navbar-item,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .navbar-item,html.theme--documenter-dark .hero.is-primary .navbar-link,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .navbar-link{color:rgba(255,255,255,0.7)}html.theme--documenter-dark .hero.is-primary a.navbar-item:hover,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink a.navbar-item:hover,html.theme--documenter-dark .hero.is-primary a.navbar-item.is-active,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink a.navbar-item.is-active,html.theme--documenter-dark .hero.is-primary .navbar-link:hover,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .navbar-link:hover,html.theme--documenter-dark .hero.is-primary .navbar-link.is-active,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .navbar-link.is-active{background-color:#2f4d6d;color:#fff}html.theme--documenter-dark .hero.is-primary .tabs a,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .tabs a{color:#fff;opacity:0.9}html.theme--documenter-dark .hero.is-primary .tabs a:hover,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .tabs a:hover{opacity:1}html.theme--documenter-dark .hero.is-primary .tabs li.is-active a,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .tabs li.is-active a{opacity:1}html.theme--documenter-dark .hero.is-primary .tabs.is-boxed a,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .tabs.is-boxed a,html.theme--documenter-dark .hero.is-primary .tabs.is-toggle a,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .tabs.is-toggle a{color:#fff}html.theme--documenter-dark .hero.is-primary .tabs.is-boxed a:hover,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .tabs.is-boxed a:hover,html.theme--documenter-dark .hero.is-primary .tabs.is-toggle a:hover,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--documenter-dark .hero.is-primary .tabs.is-boxed li.is-active a,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .tabs.is-boxed li.is-active a,html.theme--documenter-dark .hero.is-primary .tabs.is-boxed li.is-active a:hover,html.theme--documenter-dark .hero.is-primary .tabs.is-toggle li.is-active a,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .tabs.is-toggle li.is-active a,html.theme--documenter-dark .hero.is-primary .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#375a7f}html.theme--documenter-dark .hero.is-primary.is-bold,html.theme--documenter-dark .docstring>section>a.hero.is-bold.docs-sourcelink{background-image:linear-gradient(141deg, #214b62 0%, #375a7f 71%, #3a5796 100%)}@media screen and (max-width: 768px){html.theme--documenter-dark .hero.is-primary.is-bold .navbar-menu,html.theme--documenter-dark .docstring>section>a.hero.is-bold.docs-sourcelink .navbar-menu{background-image:linear-gradient(141deg, #214b62 0%, #375a7f 71%, #3a5796 100%)}}html.theme--documenter-dark .hero.is-link{background-color:#1abc9c;color:#fff}html.theme--documenter-dark .hero.is-link a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--documenter-dark .hero.is-link strong{color:inherit}html.theme--documenter-dark .hero.is-link .title{color:#fff}html.theme--documenter-dark .hero.is-link .subtitle{color:rgba(255,255,255,0.9)}html.theme--documenter-dark .hero.is-link .subtitle a:not(.button),html.theme--documenter-dark .hero.is-link .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--documenter-dark .hero.is-link .navbar-menu{background-color:#1abc9c}}html.theme--documenter-dark .hero.is-link .navbar-item,html.theme--documenter-dark .hero.is-link .navbar-link{color:rgba(255,255,255,0.7)}html.theme--documenter-dark .hero.is-link a.navbar-item:hover,html.theme--documenter-dark .hero.is-link a.navbar-item.is-active,html.theme--documenter-dark .hero.is-link .navbar-link:hover,html.theme--documenter-dark .hero.is-link .navbar-link.is-active{background-color:#17a689;color:#fff}html.theme--documenter-dark .hero.is-link .tabs a{color:#fff;opacity:0.9}html.theme--documenter-dark .hero.is-link .tabs a:hover{opacity:1}html.theme--documenter-dark .hero.is-link .tabs li.is-active a{opacity:1}html.theme--documenter-dark .hero.is-link .tabs.is-boxed a,html.theme--documenter-dark .hero.is-link .tabs.is-toggle a{color:#fff}html.theme--documenter-dark .hero.is-link .tabs.is-boxed a:hover,html.theme--documenter-dark .hero.is-link .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--documenter-dark .hero.is-link .tabs.is-boxed li.is-active a,html.theme--documenter-dark .hero.is-link .tabs.is-boxed li.is-active a:hover,html.theme--documenter-dark .hero.is-link .tabs.is-toggle li.is-active a,html.theme--documenter-dark .hero.is-link .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#1abc9c}html.theme--documenter-dark .hero.is-link.is-bold{background-image:linear-gradient(141deg, #0c9764 0%, #1abc9c 71%, #17d8d2 100%)}@media screen and (max-width: 768px){html.theme--documenter-dark .hero.is-link.is-bold .navbar-menu{background-image:linear-gradient(141deg, #0c9764 0%, #1abc9c 71%, #17d8d2 100%)}}html.theme--documenter-dark .hero.is-info{background-color:#024c7d;color:#fff}html.theme--documenter-dark .hero.is-info a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--documenter-dark .hero.is-info strong{color:inherit}html.theme--documenter-dark .hero.is-info .title{color:#fff}html.theme--documenter-dark .hero.is-info .subtitle{color:rgba(255,255,255,0.9)}html.theme--documenter-dark .hero.is-info .subtitle a:not(.button),html.theme--documenter-dark .hero.is-info .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--documenter-dark .hero.is-info .navbar-menu{background-color:#024c7d}}html.theme--documenter-dark .hero.is-info .navbar-item,html.theme--documenter-dark .hero.is-info .navbar-link{color:rgba(255,255,255,0.7)}html.theme--documenter-dark .hero.is-info a.navbar-item:hover,html.theme--documenter-dark .hero.is-info a.navbar-item.is-active,html.theme--documenter-dark .hero.is-info .navbar-link:hover,html.theme--documenter-dark .hero.is-info .navbar-link.is-active{background-color:#023d64;color:#fff}html.theme--documenter-dark .hero.is-info .tabs a{color:#fff;opacity:0.9}html.theme--documenter-dark .hero.is-info .tabs a:hover{opacity:1}html.theme--documenter-dark .hero.is-info .tabs li.is-active a{opacity:1}html.theme--documenter-dark .hero.is-info .tabs.is-boxed a,html.theme--documenter-dark .hero.is-info .tabs.is-toggle a{color:#fff}html.theme--documenter-dark .hero.is-info .tabs.is-boxed a:hover,html.theme--documenter-dark .hero.is-info .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--documenter-dark .hero.is-info .tabs.is-boxed li.is-active a,html.theme--documenter-dark .hero.is-info .tabs.is-boxed li.is-active a:hover,html.theme--documenter-dark .hero.is-info .tabs.is-toggle li.is-active a,html.theme--documenter-dark .hero.is-info .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#024c7d}html.theme--documenter-dark .hero.is-info.is-bold{background-image:linear-gradient(141deg, #003a4c 0%, #024c7d 71%, #004299 100%)}@media screen and (max-width: 768px){html.theme--documenter-dark .hero.is-info.is-bold .navbar-menu{background-image:linear-gradient(141deg, #003a4c 0%, #024c7d 71%, #004299 100%)}}html.theme--documenter-dark .hero.is-success{background-color:#008438;color:#fff}html.theme--documenter-dark .hero.is-success a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--documenter-dark .hero.is-success strong{color:inherit}html.theme--documenter-dark .hero.is-success .title{color:#fff}html.theme--documenter-dark .hero.is-success .subtitle{color:rgba(255,255,255,0.9)}html.theme--documenter-dark .hero.is-success .subtitle a:not(.button),html.theme--documenter-dark .hero.is-success .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--documenter-dark .hero.is-success .navbar-menu{background-color:#008438}}html.theme--documenter-dark .hero.is-success .navbar-item,html.theme--documenter-dark .hero.is-success .navbar-link{color:rgba(255,255,255,0.7)}html.theme--documenter-dark .hero.is-success a.navbar-item:hover,html.theme--documenter-dark .hero.is-success a.navbar-item.is-active,html.theme--documenter-dark .hero.is-success .navbar-link:hover,html.theme--documenter-dark .hero.is-success .navbar-link.is-active{background-color:#006b2d;color:#fff}html.theme--documenter-dark .hero.is-success .tabs a{color:#fff;opacity:0.9}html.theme--documenter-dark .hero.is-success .tabs a:hover{opacity:1}html.theme--documenter-dark .hero.is-success .tabs li.is-active a{opacity:1}html.theme--documenter-dark .hero.is-success .tabs.is-boxed a,html.theme--documenter-dark .hero.is-success .tabs.is-toggle a{color:#fff}html.theme--documenter-dark .hero.is-success .tabs.is-boxed a:hover,html.theme--documenter-dark .hero.is-success .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--documenter-dark .hero.is-success .tabs.is-boxed li.is-active a,html.theme--documenter-dark .hero.is-success .tabs.is-boxed li.is-active a:hover,html.theme--documenter-dark .hero.is-success .tabs.is-toggle li.is-active a,html.theme--documenter-dark .hero.is-success .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#008438}html.theme--documenter-dark .hero.is-success.is-bold{background-image:linear-gradient(141deg, #005115 0%, #008438 71%, #009e5d 100%)}@media screen and (max-width: 768px){html.theme--documenter-dark .hero.is-success.is-bold .navbar-menu{background-image:linear-gradient(141deg, #005115 0%, #008438 71%, #009e5d 100%)}}html.theme--documenter-dark .hero.is-warning{background-color:#ad8100;color:#fff}html.theme--documenter-dark .hero.is-warning a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--documenter-dark .hero.is-warning strong{color:inherit}html.theme--documenter-dark .hero.is-warning .title{color:#fff}html.theme--documenter-dark .hero.is-warning .subtitle{color:rgba(255,255,255,0.9)}html.theme--documenter-dark .hero.is-warning .subtitle a:not(.button),html.theme--documenter-dark .hero.is-warning .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--documenter-dark .hero.is-warning .navbar-menu{background-color:#ad8100}}html.theme--documenter-dark .hero.is-warning .navbar-item,html.theme--documenter-dark .hero.is-warning .navbar-link{color:rgba(255,255,255,0.7)}html.theme--documenter-dark .hero.is-warning a.navbar-item:hover,html.theme--documenter-dark .hero.is-warning a.navbar-item.is-active,html.theme--documenter-dark .hero.is-warning .navbar-link:hover,html.theme--documenter-dark .hero.is-warning .navbar-link.is-active{background-color:#946e00;color:#fff}html.theme--documenter-dark .hero.is-warning .tabs a{color:#fff;opacity:0.9}html.theme--documenter-dark .hero.is-warning .tabs a:hover{opacity:1}html.theme--documenter-dark .hero.is-warning .tabs li.is-active a{opacity:1}html.theme--documenter-dark .hero.is-warning .tabs.is-boxed a,html.theme--documenter-dark .hero.is-warning .tabs.is-toggle a{color:#fff}html.theme--documenter-dark .hero.is-warning .tabs.is-boxed a:hover,html.theme--documenter-dark .hero.is-warning .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--documenter-dark .hero.is-warning .tabs.is-boxed li.is-active a,html.theme--documenter-dark .hero.is-warning .tabs.is-boxed li.is-active a:hover,html.theme--documenter-dark .hero.is-warning .tabs.is-toggle li.is-active a,html.theme--documenter-dark .hero.is-warning .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#ad8100}html.theme--documenter-dark .hero.is-warning.is-bold{background-image:linear-gradient(141deg, #7a4700 0%, #ad8100 71%, #c7b500 100%)}@media screen and (max-width: 768px){html.theme--documenter-dark .hero.is-warning.is-bold .navbar-menu{background-image:linear-gradient(141deg, #7a4700 0%, #ad8100 71%, #c7b500 100%)}}html.theme--documenter-dark .hero.is-danger{background-color:#9e1b0d;color:#fff}html.theme--documenter-dark .hero.is-danger a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--documenter-dark .hero.is-danger strong{color:inherit}html.theme--documenter-dark .hero.is-danger .title{color:#fff}html.theme--documenter-dark .hero.is-danger .subtitle{color:rgba(255,255,255,0.9)}html.theme--documenter-dark .hero.is-danger .subtitle a:not(.button),html.theme--documenter-dark .hero.is-danger .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--documenter-dark .hero.is-danger .navbar-menu{background-color:#9e1b0d}}html.theme--documenter-dark .hero.is-danger .navbar-item,html.theme--documenter-dark .hero.is-danger .navbar-link{color:rgba(255,255,255,0.7)}html.theme--documenter-dark .hero.is-danger a.navbar-item:hover,html.theme--documenter-dark .hero.is-danger a.navbar-item.is-active,html.theme--documenter-dark .hero.is-danger .navbar-link:hover,html.theme--documenter-dark .hero.is-danger .navbar-link.is-active{background-color:#86170b;color:#fff}html.theme--documenter-dark .hero.is-danger .tabs a{color:#fff;opacity:0.9}html.theme--documenter-dark .hero.is-danger .tabs a:hover{opacity:1}html.theme--documenter-dark .hero.is-danger .tabs li.is-active a{opacity:1}html.theme--documenter-dark .hero.is-danger .tabs.is-boxed a,html.theme--documenter-dark .hero.is-danger .tabs.is-toggle a{color:#fff}html.theme--documenter-dark .hero.is-danger .tabs.is-boxed a:hover,html.theme--documenter-dark .hero.is-danger .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--documenter-dark .hero.is-danger .tabs.is-boxed li.is-active a,html.theme--documenter-dark .hero.is-danger .tabs.is-boxed li.is-active a:hover,html.theme--documenter-dark .hero.is-danger .tabs.is-toggle li.is-active a,html.theme--documenter-dark .hero.is-danger .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#9e1b0d}html.theme--documenter-dark .hero.is-danger.is-bold{background-image:linear-gradient(141deg, #75030b 0%, #9e1b0d 71%, #ba380a 100%)}@media screen and (max-width: 768px){html.theme--documenter-dark .hero.is-danger.is-bold .navbar-menu{background-image:linear-gradient(141deg, #75030b 0%, #9e1b0d 71%, #ba380a 100%)}}html.theme--documenter-dark .hero.is-small .hero-body,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.hero .hero-body{padding-bottom:1.5rem;padding-top:1.5rem}@media screen and (min-width: 769px),print{html.theme--documenter-dark .hero.is-medium .hero-body{padding-bottom:9rem;padding-top:9rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .hero.is-large .hero-body{padding-bottom:18rem;padding-top:18rem}}html.theme--documenter-dark .hero.is-halfheight .hero-body,html.theme--documenter-dark .hero.is-fullheight .hero-body,html.theme--documenter-dark .hero.is-fullheight-with-navbar .hero-body{align-items:center;display:flex}html.theme--documenter-dark .hero.is-halfheight .hero-body>.container,html.theme--documenter-dark .hero.is-fullheight .hero-body>.container,html.theme--documenter-dark .hero.is-fullheight-with-navbar .hero-body>.container{flex-grow:1;flex-shrink:1}html.theme--documenter-dark .hero.is-halfheight{min-height:50vh}html.theme--documenter-dark .hero.is-fullheight{min-height:100vh}html.theme--documenter-dark .hero-video{overflow:hidden}html.theme--documenter-dark .hero-video video{left:50%;min-height:100%;min-width:100%;position:absolute;top:50%;transform:translate3d(-50%, -50%, 0)}html.theme--documenter-dark .hero-video.is-transparent{opacity:0.3}@media screen and (max-width: 768px){html.theme--documenter-dark .hero-video{display:none}}html.theme--documenter-dark .hero-buttons{margin-top:1.5rem}@media screen and (max-width: 768px){html.theme--documenter-dark .hero-buttons .button{display:flex}html.theme--documenter-dark .hero-buttons .button:not(:last-child){margin-bottom:0.75rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .hero-buttons{display:flex;justify-content:center}html.theme--documenter-dark .hero-buttons .button:not(:last-child){margin-right:1.5rem}}html.theme--documenter-dark .hero-head,html.theme--documenter-dark .hero-foot{flex-grow:0;flex-shrink:0}html.theme--documenter-dark .hero-body{flex-grow:1;flex-shrink:0;padding:3rem 1.5rem}html.theme--documenter-dark .section{padding:3rem 1.5rem}@media screen and (min-width: 1056px){html.theme--documenter-dark .section.is-medium{padding:9rem 1.5rem}html.theme--documenter-dark .section.is-large{padding:18rem 1.5rem}}html.theme--documenter-dark .footer{background-color:#282f2f;padding:3rem 1.5rem 6rem}html.theme--documenter-dark hr{height:1px}html.theme--documenter-dark h6{text-transform:uppercase;letter-spacing:0.5px}html.theme--documenter-dark .hero{background-color:#343c3d}html.theme--documenter-dark a{transition:all 200ms ease}html.theme--documenter-dark .button{transition:all 200ms ease;border-width:1px;color:#fff}html.theme--documenter-dark .button.is-active,html.theme--documenter-dark .button.is-focused,html.theme--documenter-dark .button:active,html.theme--documenter-dark .button:focus{box-shadow:0 0 0 2px rgba(140,155,157,0.5)}html.theme--documenter-dark .button.is-white.is-hovered,html.theme--documenter-dark .button.is-white:hover{background-color:#fff}html.theme--documenter-dark .button.is-white.is-active,html.theme--documenter-dark .button.is-white.is-focused,html.theme--documenter-dark .button.is-white:active,html.theme--documenter-dark .button.is-white:focus{border-color:#fff;box-shadow:0 0 0 2px rgba(255,255,255,0.5)}html.theme--documenter-dark .button.is-black.is-hovered,html.theme--documenter-dark .button.is-black:hover{background-color:#1d1d1d}html.theme--documenter-dark .button.is-black.is-active,html.theme--documenter-dark .button.is-black.is-focused,html.theme--documenter-dark .button.is-black:active,html.theme--documenter-dark .button.is-black:focus{border-color:#0a0a0a;box-shadow:0 0 0 2px rgba(10,10,10,0.5)}html.theme--documenter-dark .button.is-light.is-hovered,html.theme--documenter-dark .button.is-light:hover{background-color:#fff}html.theme--documenter-dark .button.is-light.is-active,html.theme--documenter-dark .button.is-light.is-focused,html.theme--documenter-dark .button.is-light:active,html.theme--documenter-dark .button.is-light:focus{border-color:#ecf0f1;box-shadow:0 0 0 2px rgba(236,240,241,0.5)}html.theme--documenter-dark .button.is-dark.is-hovered,html.theme--documenter-dark .content kbd.button.is-hovered,html.theme--documenter-dark .button.is-dark:hover,html.theme--documenter-dark .content kbd.button:hover{background-color:#3a4344}html.theme--documenter-dark .button.is-dark.is-active,html.theme--documenter-dark .content kbd.button.is-active,html.theme--documenter-dark .button.is-dark.is-focused,html.theme--documenter-dark .content kbd.button.is-focused,html.theme--documenter-dark .button.is-dark:active,html.theme--documenter-dark .content kbd.button:active,html.theme--documenter-dark .button.is-dark:focus,html.theme--documenter-dark .content kbd.button:focus{border-color:#282f2f;box-shadow:0 0 0 2px rgba(40,47,47,0.5)}html.theme--documenter-dark .button.is-primary.is-hovered,html.theme--documenter-dark .docstring>section>a.button.is-hovered.docs-sourcelink,html.theme--documenter-dark .button.is-primary:hover,html.theme--documenter-dark .docstring>section>a.button.docs-sourcelink:hover{background-color:#436d9a}html.theme--documenter-dark .button.is-primary.is-active,html.theme--documenter-dark .docstring>section>a.button.is-active.docs-sourcelink,html.theme--documenter-dark .button.is-primary.is-focused,html.theme--documenter-dark .docstring>section>a.button.is-focused.docs-sourcelink,html.theme--documenter-dark .button.is-primary:active,html.theme--documenter-dark .docstring>section>a.button.docs-sourcelink:active,html.theme--documenter-dark .button.is-primary:focus,html.theme--documenter-dark .docstring>section>a.button.docs-sourcelink:focus{border-color:#375a7f;box-shadow:0 0 0 2px rgba(55,90,127,0.5)}html.theme--documenter-dark .button.is-link.is-hovered,html.theme--documenter-dark .button.is-link:hover{background-color:#1fdeb8}html.theme--documenter-dark .button.is-link.is-active,html.theme--documenter-dark .button.is-link.is-focused,html.theme--documenter-dark .button.is-link:active,html.theme--documenter-dark .button.is-link:focus{border-color:#1abc9c;box-shadow:0 0 0 2px rgba(26,188,156,0.5)}html.theme--documenter-dark .button.is-info.is-hovered,html.theme--documenter-dark .button.is-info:hover{background-color:#0363a3}html.theme--documenter-dark .button.is-info.is-active,html.theme--documenter-dark .button.is-info.is-focused,html.theme--documenter-dark .button.is-info:active,html.theme--documenter-dark .button.is-info:focus{border-color:#024c7d;box-shadow:0 0 0 2px rgba(2,76,125,0.5)}html.theme--documenter-dark .button.is-success.is-hovered,html.theme--documenter-dark .button.is-success:hover{background-color:#00aa48}html.theme--documenter-dark .button.is-success.is-active,html.theme--documenter-dark .button.is-success.is-focused,html.theme--documenter-dark .button.is-success:active,html.theme--documenter-dark .button.is-success:focus{border-color:#008438;box-shadow:0 0 0 2px rgba(0,132,56,0.5)}html.theme--documenter-dark .button.is-warning.is-hovered,html.theme--documenter-dark .button.is-warning:hover{background-color:#d39e00}html.theme--documenter-dark .button.is-warning.is-active,html.theme--documenter-dark .button.is-warning.is-focused,html.theme--documenter-dark .button.is-warning:active,html.theme--documenter-dark .button.is-warning:focus{border-color:#ad8100;box-shadow:0 0 0 2px rgba(173,129,0,0.5)}html.theme--documenter-dark .button.is-danger.is-hovered,html.theme--documenter-dark .button.is-danger:hover{background-color:#c12110}html.theme--documenter-dark .button.is-danger.is-active,html.theme--documenter-dark .button.is-danger.is-focused,html.theme--documenter-dark .button.is-danger:active,html.theme--documenter-dark .button.is-danger:focus{border-color:#9e1b0d;box-shadow:0 0 0 2px rgba(158,27,13,0.5)}html.theme--documenter-dark .label{color:#dbdee0}html.theme--documenter-dark .button,html.theme--documenter-dark .control.has-icons-left .icon,html.theme--documenter-dark .control.has-icons-right .icon,html.theme--documenter-dark .input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input,html.theme--documenter-dark .pagination-ellipsis,html.theme--documenter-dark .pagination-link,html.theme--documenter-dark .pagination-next,html.theme--documenter-dark .pagination-previous,html.theme--documenter-dark .select,html.theme--documenter-dark .select select,html.theme--documenter-dark .textarea{height:2.5em}html.theme--documenter-dark .input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input,html.theme--documenter-dark .textarea{transition:all 200ms ease;box-shadow:none;border-width:1px;padding-left:1em;padding-right:1em}html.theme--documenter-dark .select:after,html.theme--documenter-dark .select select{border-width:1px}html.theme--documenter-dark .control.has-addons .button,html.theme--documenter-dark .control.has-addons .input,html.theme--documenter-dark .control.has-addons #documenter .docs-sidebar form.docs-search>input,html.theme--documenter-dark #documenter .docs-sidebar .control.has-addons form.docs-search>input,html.theme--documenter-dark .control.has-addons .select{margin-right:-1px}html.theme--documenter-dark .notification{background-color:#343c3d}html.theme--documenter-dark .card{box-shadow:none;border:1px solid #343c3d;background-color:#282f2f;border-radius:.4em}html.theme--documenter-dark .card .card-image img{border-radius:.4em .4em 0 0}html.theme--documenter-dark .card .card-header{box-shadow:none;background-color:rgba(18,18,18,0.2);border-radius:.4em .4em 0 0}html.theme--documenter-dark .card .card-footer{background-color:rgba(18,18,18,0.2)}html.theme--documenter-dark .card .card-footer,html.theme--documenter-dark .card .card-footer-item{border-width:1px;border-color:#343c3d}html.theme--documenter-dark .notification.is-white a:not(.button){color:#0a0a0a;text-decoration:underline}html.theme--documenter-dark .notification.is-black a:not(.button){color:#fff;text-decoration:underline}html.theme--documenter-dark .notification.is-light a:not(.button){color:#282f2f;text-decoration:underline}html.theme--documenter-dark .notification.is-dark a:not(.button),html.theme--documenter-dark .content kbd.notification a:not(.button){color:#ecf0f1;text-decoration:underline}html.theme--documenter-dark .notification.is-primary a:not(.button),html.theme--documenter-dark .docstring>section>a.notification.docs-sourcelink a:not(.button){color:#fff;text-decoration:underline}html.theme--documenter-dark .notification.is-link a:not(.button){color:#fff;text-decoration:underline}html.theme--documenter-dark .notification.is-info a:not(.button){color:#fff;text-decoration:underline}html.theme--documenter-dark .notification.is-success a:not(.button){color:#fff;text-decoration:underline}html.theme--documenter-dark .notification.is-warning a:not(.button){color:#fff;text-decoration:underline}html.theme--documenter-dark .notification.is-danger a:not(.button){color:#fff;text-decoration:underline}html.theme--documenter-dark .tag,html.theme--documenter-dark .content kbd,html.theme--documenter-dark .docstring>section>a.docs-sourcelink{border-radius:.4em}html.theme--documenter-dark .menu-list a{transition:all 300ms ease}html.theme--documenter-dark .modal-card-body{background-color:#282f2f}html.theme--documenter-dark .modal-card-foot,html.theme--documenter-dark .modal-card-head{border-color:#343c3d}html.theme--documenter-dark .message-header{font-weight:700;background-color:#343c3d;color:#fff}html.theme--documenter-dark .message-body{border-width:1px;border-color:#343c3d}html.theme--documenter-dark .navbar{border-radius:.4em}html.theme--documenter-dark .navbar.is-transparent{background:none}html.theme--documenter-dark .navbar.is-primary .navbar-dropdown a.navbar-item.is-active,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-dropdown a.navbar-item.is-active{background-color:#1abc9c}@media screen and (max-width: 1055px){html.theme--documenter-dark .navbar .navbar-menu{background-color:#375a7f;border-radius:0 0 .4em .4em}}html.theme--documenter-dark .hero .navbar,html.theme--documenter-dark body>.navbar{border-radius:0}html.theme--documenter-dark .pagination-link,html.theme--documenter-dark .pagination-next,html.theme--documenter-dark .pagination-previous{border-width:1px}html.theme--documenter-dark .panel-block,html.theme--documenter-dark .panel-heading,html.theme--documenter-dark .panel-tabs{border-width:1px}html.theme--documenter-dark .panel-block:first-child,html.theme--documenter-dark .panel-heading:first-child,html.theme--documenter-dark .panel-tabs:first-child{border-top-width:1px}html.theme--documenter-dark .panel-heading{font-weight:700}html.theme--documenter-dark .panel-tabs a{border-width:1px;margin-bottom:-1px}html.theme--documenter-dark .panel-tabs a.is-active{border-bottom-color:#17a689}html.theme--documenter-dark .panel-block:hover{color:#1dd2af}html.theme--documenter-dark .panel-block:hover .panel-icon{color:#1dd2af}html.theme--documenter-dark .panel-block.is-active .panel-icon{color:#17a689}html.theme--documenter-dark .tabs a{border-bottom-width:1px;margin-bottom:-1px}html.theme--documenter-dark .tabs ul{border-bottom-width:1px}html.theme--documenter-dark .tabs.is-boxed a{border-width:1px}html.theme--documenter-dark .tabs.is-boxed li.is-active a{background-color:#1f2424}html.theme--documenter-dark .tabs.is-toggle li a{border-width:1px;margin-bottom:0}html.theme--documenter-dark .tabs.is-toggle li+li{margin-left:-1px}html.theme--documenter-dark .hero.is-white .navbar .navbar-dropdown .navbar-item:hover{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .hero.is-black .navbar .navbar-dropdown .navbar-item:hover{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .hero.is-light .navbar .navbar-dropdown .navbar-item:hover{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .hero.is-dark .navbar .navbar-dropdown .navbar-item:hover,html.theme--documenter-dark .content kbd.hero .navbar .navbar-dropdown .navbar-item:hover{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .hero.is-primary .navbar .navbar-dropdown .navbar-item:hover,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .navbar .navbar-dropdown .navbar-item:hover{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .hero.is-link .navbar .navbar-dropdown .navbar-item:hover{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .hero.is-info .navbar .navbar-dropdown .navbar-item:hover{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .hero.is-success .navbar .navbar-dropdown .navbar-item:hover{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .hero.is-warning .navbar .navbar-dropdown .navbar-item:hover{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .hero.is-danger .navbar .navbar-dropdown .navbar-item:hover{background-color:rgba(0,0,0,0)}html.theme--documenter-dark h1 .docs-heading-anchor,html.theme--documenter-dark h1 .docs-heading-anchor:hover,html.theme--documenter-dark h1 .docs-heading-anchor:visited,html.theme--documenter-dark h2 .docs-heading-anchor,html.theme--documenter-dark h2 .docs-heading-anchor:hover,html.theme--documenter-dark h2 .docs-heading-anchor:visited,html.theme--documenter-dark h3 .docs-heading-anchor,html.theme--documenter-dark h3 .docs-heading-anchor:hover,html.theme--documenter-dark h3 .docs-heading-anchor:visited,html.theme--documenter-dark h4 .docs-heading-anchor,html.theme--documenter-dark h4 .docs-heading-anchor:hover,html.theme--documenter-dark h4 .docs-heading-anchor:visited,html.theme--documenter-dark h5 .docs-heading-anchor,html.theme--documenter-dark h5 .docs-heading-anchor:hover,html.theme--documenter-dark h5 .docs-heading-anchor:visited,html.theme--documenter-dark h6 .docs-heading-anchor,html.theme--documenter-dark h6 .docs-heading-anchor:hover,html.theme--documenter-dark h6 .docs-heading-anchor:visited{color:#f2f2f2}html.theme--documenter-dark h1 .docs-heading-anchor-permalink,html.theme--documenter-dark h2 .docs-heading-anchor-permalink,html.theme--documenter-dark h3 .docs-heading-anchor-permalink,html.theme--documenter-dark h4 .docs-heading-anchor-permalink,html.theme--documenter-dark h5 .docs-heading-anchor-permalink,html.theme--documenter-dark h6 .docs-heading-anchor-permalink{visibility:hidden;vertical-align:middle;margin-left:0.5em;font-size:0.7rem}html.theme--documenter-dark h1 .docs-heading-anchor-permalink::before,html.theme--documenter-dark h2 .docs-heading-anchor-permalink::before,html.theme--documenter-dark h3 .docs-heading-anchor-permalink::before,html.theme--documenter-dark h4 .docs-heading-anchor-permalink::before,html.theme--documenter-dark h5 .docs-heading-anchor-permalink::before,html.theme--documenter-dark h6 .docs-heading-anchor-permalink::before{font-family:"Font Awesome 5 Free";font-weight:900;content:"\f0c1"}html.theme--documenter-dark h1:hover .docs-heading-anchor-permalink,html.theme--documenter-dark h2:hover .docs-heading-anchor-permalink,html.theme--documenter-dark h3:hover .docs-heading-anchor-permalink,html.theme--documenter-dark h4:hover .docs-heading-anchor-permalink,html.theme--documenter-dark h5:hover .docs-heading-anchor-permalink,html.theme--documenter-dark h6:hover .docs-heading-anchor-permalink{visibility:visible}html.theme--documenter-dark .docs-light-only{display:none !important}html.theme--documenter-dark pre{position:relative;overflow:hidden}html.theme--documenter-dark pre code,html.theme--documenter-dark pre code.hljs{padding:0 .75rem !important;overflow:auto;display:block}html.theme--documenter-dark pre code:first-of-type,html.theme--documenter-dark pre code.hljs:first-of-type{padding-top:0.5rem !important}html.theme--documenter-dark pre code:last-of-type,html.theme--documenter-dark pre code.hljs:last-of-type{padding-bottom:0.5rem !important}html.theme--documenter-dark pre .copy-button{opacity:0.2;transition:opacity 0.2s;position:absolute;right:0em;top:0em;padding:0.5em;width:2.5em;height:2.5em;background:transparent;border:none;font-family:"Font Awesome 5 Free";color:#fff;cursor:pointer;text-align:center}html.theme--documenter-dark pre .copy-button:focus,html.theme--documenter-dark pre .copy-button:hover{opacity:1;background:rgba(255,255,255,0.1);color:#1abc9c}html.theme--documenter-dark pre .copy-button.success{color:#259a12;opacity:1}html.theme--documenter-dark pre .copy-button.error{color:#cb3c33;opacity:1}html.theme--documenter-dark pre:hover .copy-button{opacity:1}html.theme--documenter-dark .admonition{background-color:#282f2f;border-style:solid;border-width:1px;border-color:#5e6d6f;border-radius:.4em;font-size:15px}html.theme--documenter-dark .admonition strong{color:currentColor}html.theme--documenter-dark .admonition.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.admonition{font-size:.85em}html.theme--documenter-dark .admonition.is-medium{font-size:1.25rem}html.theme--documenter-dark .admonition.is-large{font-size:1.5rem}html.theme--documenter-dark .admonition.is-default{background-color:#282f2f;border-color:#5e6d6f}html.theme--documenter-dark .admonition.is-default>.admonition-header{background-color:#5e6d6f;color:#fff}html.theme--documenter-dark .admonition.is-default>.admonition-body{color:#fff}html.theme--documenter-dark .admonition.is-info{background-color:#282f2f;border-color:#024c7d}html.theme--documenter-dark .admonition.is-info>.admonition-header{background-color:#024c7d;color:#fff}html.theme--documenter-dark .admonition.is-info>.admonition-body{color:#fff}html.theme--documenter-dark .admonition.is-success{background-color:#282f2f;border-color:#008438}html.theme--documenter-dark .admonition.is-success>.admonition-header{background-color:#008438;color:#fff}html.theme--documenter-dark .admonition.is-success>.admonition-body{color:#fff}html.theme--documenter-dark .admonition.is-warning{background-color:#282f2f;border-color:#ad8100}html.theme--documenter-dark .admonition.is-warning>.admonition-header{background-color:#ad8100;color:#fff}html.theme--documenter-dark .admonition.is-warning>.admonition-body{color:#fff}html.theme--documenter-dark .admonition.is-danger{background-color:#282f2f;border-color:#9e1b0d}html.theme--documenter-dark .admonition.is-danger>.admonition-header{background-color:#9e1b0d;color:#fff}html.theme--documenter-dark .admonition.is-danger>.admonition-body{color:#fff}html.theme--documenter-dark .admonition.is-compat{background-color:#282f2f;border-color:#137886}html.theme--documenter-dark .admonition.is-compat>.admonition-header{background-color:#137886;color:#fff}html.theme--documenter-dark .admonition.is-compat>.admonition-body{color:#fff}html.theme--documenter-dark .admonition-header{color:#fff;background-color:#5e6d6f;align-items:center;font-weight:700;justify-content:space-between;line-height:1.25;padding:0.5rem .75rem;position:relative}html.theme--documenter-dark .admonition-header:before{font-family:"Font Awesome 5 Free";font-weight:900;margin-right:.75rem;content:"\f06a"}html.theme--documenter-dark .admonition-body{color:#fff;padding:0.5rem .75rem}html.theme--documenter-dark .admonition-body pre{background-color:#282f2f}html.theme--documenter-dark .admonition-body code{background-color:rgba(255,255,255,0.05)}html.theme--documenter-dark .docstring{margin-bottom:1em;background-color:rgba(0,0,0,0);border:1px solid #5e6d6f;box-shadow:none;max-width:100%}html.theme--documenter-dark .docstring>header{display:flex;flex-grow:1;align-items:stretch;padding:0.5rem .75rem;background-color:#282f2f;box-shadow:0 1px 2px rgba(10,10,10,0.1);box-shadow:none;border-bottom:1px solid #5e6d6f}html.theme--documenter-dark .docstring>header code{background-color:transparent}html.theme--documenter-dark .docstring>header .docstring-binding{margin-right:0.3em}html.theme--documenter-dark .docstring>header .docstring-category{margin-left:0.3em}html.theme--documenter-dark .docstring>section{position:relative;padding:.75rem .75rem;border-bottom:1px solid #5e6d6f}html.theme--documenter-dark .docstring>section:last-child{border-bottom:none}html.theme--documenter-dark .docstring>section>a.docs-sourcelink{transition:opacity 0.3s;opacity:0;position:absolute;right:.375rem;bottom:.375rem}html.theme--documenter-dark .docstring>section>a.docs-sourcelink:focus{opacity:1 !important}html.theme--documenter-dark .docstring:hover>section>a.docs-sourcelink{opacity:0.2}html.theme--documenter-dark .docstring:focus-within>section>a.docs-sourcelink{opacity:0.2}html.theme--documenter-dark .docstring>section:hover a.docs-sourcelink{opacity:1}html.theme--documenter-dark .documenter-example-output{background-color:#1f2424}html.theme--documenter-dark .outdated-warning-overlay{position:fixed;top:0;left:0;right:0;box-shadow:0 0 10px rgba(0,0,0,0.3);z-index:999;background-color:#282f2f;color:#fff;border-bottom:3px solid #9e1b0d;padding:10px 35px;text-align:center;font-size:15px}html.theme--documenter-dark .outdated-warning-overlay .outdated-warning-closer{position:absolute;top:calc(50% - 10px);right:18px;cursor:pointer;width:12px}html.theme--documenter-dark .outdated-warning-overlay a{color:#1abc9c}html.theme--documenter-dark .outdated-warning-overlay a:hover{color:#1dd2af}html.theme--documenter-dark .content pre{border:1px solid #5e6d6f}html.theme--documenter-dark .content code{font-weight:inherit}html.theme--documenter-dark .content a code{color:#1abc9c}html.theme--documenter-dark .content h1 code,html.theme--documenter-dark .content h2 code,html.theme--documenter-dark .content h3 code,html.theme--documenter-dark .content h4 code,html.theme--documenter-dark .content h5 code,html.theme--documenter-dark .content h6 code{color:#f2f2f2}html.theme--documenter-dark .content table{display:block;width:initial;max-width:100%;overflow-x:auto}html.theme--documenter-dark .content blockquote>ul:first-child,html.theme--documenter-dark .content blockquote>ol:first-child,html.theme--documenter-dark .content .admonition-body>ul:first-child,html.theme--documenter-dark .content .admonition-body>ol:first-child{margin-top:0}html.theme--documenter-dark pre,html.theme--documenter-dark code{font-variant-ligatures:no-contextual}html.theme--documenter-dark .breadcrumb a.is-disabled{cursor:default;pointer-events:none}html.theme--documenter-dark .breadcrumb a.is-disabled,html.theme--documenter-dark .breadcrumb a.is-disabled:hover{color:#f2f2f2}html.theme--documenter-dark .hljs{background:initial !important}html.theme--documenter-dark .katex .katex-mathml{top:0;right:0}html.theme--documenter-dark .katex-display,html.theme--documenter-dark mjx-container,html.theme--documenter-dark .MathJax_Display{margin:0.5em 0 !important}html.theme--documenter-dark html{-moz-osx-font-smoothing:auto;-webkit-font-smoothing:auto}html.theme--documenter-dark li.no-marker{list-style:none}html.theme--documenter-dark #documenter .docs-main>article{overflow-wrap:break-word}html.theme--documenter-dark #documenter .docs-main>article .math-container{overflow-x:auto;overflow-y:hidden}@media screen and (min-width: 1056px){html.theme--documenter-dark #documenter .docs-main{max-width:52rem;margin-left:20rem;padding-right:1rem}}@media screen and (max-width: 1055px){html.theme--documenter-dark #documenter .docs-main{width:100%}html.theme--documenter-dark #documenter .docs-main>article{max-width:52rem;margin-left:auto;margin-right:auto;margin-bottom:1rem;padding:0 1rem}html.theme--documenter-dark #documenter .docs-main>header,html.theme--documenter-dark #documenter .docs-main>nav{max-width:100%;width:100%;margin:0}}html.theme--documenter-dark #documenter .docs-main header.docs-navbar{background-color:#1f2424;border-bottom:1px solid #5e6d6f;z-index:2;min-height:4rem;margin-bottom:1rem;display:flex}html.theme--documenter-dark #documenter .docs-main header.docs-navbar .breadcrumb{flex-grow:1}html.theme--documenter-dark #documenter .docs-main header.docs-navbar .docs-right{display:flex;white-space:nowrap}html.theme--documenter-dark #documenter .docs-main header.docs-navbar .docs-right .docs-icon,html.theme--documenter-dark #documenter .docs-main header.docs-navbar .docs-right .docs-label,html.theme--documenter-dark #documenter .docs-main header.docs-navbar .docs-right .docs-sidebar-button{display:inline-block}html.theme--documenter-dark #documenter .docs-main header.docs-navbar .docs-right .docs-label{padding:0;margin-left:0.3em}html.theme--documenter-dark #documenter .docs-main header.docs-navbar .docs-right .docs-settings-button{margin:auto 0 auto 1rem}html.theme--documenter-dark #documenter .docs-main header.docs-navbar .docs-right .docs-sidebar-button{font-size:1.5rem;margin:auto 0 auto 1rem}html.theme--documenter-dark #documenter .docs-main header.docs-navbar>*{margin:auto 0}@media screen and (max-width: 1055px){html.theme--documenter-dark #documenter .docs-main header.docs-navbar{position:sticky;top:0;padding:0 1rem;transition-property:top, box-shadow;-webkit-transition-property:top, box-shadow;transition-duration:0.3s;-webkit-transition-duration:0.3s}html.theme--documenter-dark #documenter .docs-main header.docs-navbar.headroom--not-top{box-shadow:.2rem 0rem .4rem #171717;transition-duration:0.7s;-webkit-transition-duration:0.7s}html.theme--documenter-dark #documenter .docs-main header.docs-navbar.headroom--unpinned.headroom--not-top.headroom--not-bottom{top:-4.5rem;transition-duration:0.7s;-webkit-transition-duration:0.7s}}html.theme--documenter-dark #documenter .docs-main section.footnotes{border-top:1px solid #5e6d6f}html.theme--documenter-dark #documenter .docs-main section.footnotes li .tag:first-child,html.theme--documenter-dark #documenter .docs-main section.footnotes li .docstring>section>a.docs-sourcelink:first-child,html.theme--documenter-dark #documenter .docs-main section.footnotes li .content kbd:first-child,html.theme--documenter-dark .content #documenter .docs-main section.footnotes li kbd:first-child{margin-right:1em;margin-bottom:0.4em}html.theme--documenter-dark #documenter .docs-main .docs-footer{display:flex;flex-wrap:wrap;margin-left:0;margin-right:0;border-top:1px solid #5e6d6f;padding-top:1rem;padding-bottom:1rem}@media screen and (max-width: 1055px){html.theme--documenter-dark #documenter .docs-main .docs-footer{padding-left:1rem;padding-right:1rem}}html.theme--documenter-dark #documenter .docs-main .docs-footer .docs-footer-nextpage,html.theme--documenter-dark #documenter .docs-main .docs-footer .docs-footer-prevpage{flex-grow:1}html.theme--documenter-dark #documenter .docs-main .docs-footer .docs-footer-nextpage{text-align:right}html.theme--documenter-dark #documenter .docs-main .docs-footer .flexbox-break{flex-basis:100%;height:0}html.theme--documenter-dark #documenter .docs-main .docs-footer .footer-message{font-size:0.8em;margin:0.5em auto 0 auto;text-align:center}html.theme--documenter-dark #documenter .docs-sidebar{display:flex;flex-direction:column;color:#fff;background-color:#282f2f;border-right:1px solid #5e6d6f;padding:0;flex:0 0 18rem;z-index:5;font-size:15px;position:fixed;left:-18rem;width:18rem;height:100%;transition:left 0.3s}html.theme--documenter-dark #documenter .docs-sidebar.visible{left:0;box-shadow:.4rem 0rem .8rem #171717}@media screen and (min-width: 1056px){html.theme--documenter-dark #documenter .docs-sidebar.visible{box-shadow:none}}@media screen and (min-width: 1056px){html.theme--documenter-dark #documenter .docs-sidebar{left:0;top:0}}html.theme--documenter-dark #documenter .docs-sidebar .docs-logo{margin-top:1rem;padding:0 1rem}html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img{max-height:6rem;margin:auto}html.theme--documenter-dark #documenter .docs-sidebar .docs-package-name{flex-shrink:0;font-size:1.5rem;font-weight:700;text-align:center;white-space:nowrap;overflow:hidden;padding:0.5rem 0}html.theme--documenter-dark #documenter .docs-sidebar .docs-package-name .docs-autofit{max-width:16.2rem}html.theme--documenter-dark #documenter .docs-sidebar .docs-package-name a,html.theme--documenter-dark #documenter .docs-sidebar .docs-package-name a:hover{color:#fff}html.theme--documenter-dark #documenter .docs-sidebar .docs-version-selector{border-top:1px solid #5e6d6f;display:none;padding:0.5rem}html.theme--documenter-dark #documenter .docs-sidebar .docs-version-selector.visible{display:flex}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu{flex-grow:1;user-select:none;border-top:1px solid #5e6d6f;padding-bottom:1.5rem}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu>li>.tocitem{font-weight:bold}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu>li li{font-size:14.25px;margin-left:1em;border-left:1px solid #5e6d6f}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu input.collapse-toggle{display:none}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu ul.collapsed{display:none}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu input:checked~ul.collapsed{display:block}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu label.tocitem{display:flex}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu label.tocitem .docs-label{flex-grow:2}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu label.tocitem .docs-chevron{display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1;font-size:11.25px;margin-left:1rem;margin-top:auto;margin-bottom:auto}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu label.tocitem .docs-chevron::before{font-family:"Font Awesome 5 Free";font-weight:900;content:"\f054"}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu input:checked~label.tocitem .docs-chevron::before{content:"\f078"}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu .tocitem{display:block;padding:0.5rem 0.5rem}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu .tocitem,html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu .tocitem:hover{color:#fff;background:#282f2f}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu a.tocitem:hover,html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu label.tocitem:hover{color:#fff;background-color:#32393a}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu li.is-active{border-top:1px solid #5e6d6f;border-bottom:1px solid #5e6d6f;background-color:#1f2424}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu li.is-active .tocitem,html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu li.is-active .tocitem:hover{background-color:#1f2424;color:#fff}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu li.is-active ul.internal .tocitem:hover{background-color:#32393a;color:#fff}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu>li.is-active:first-child{border-top:none}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu ul.internal{margin:0 0.5rem 0.5rem;border-top:1px solid #5e6d6f}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu ul.internal li{font-size:12.75px;border-left:none;margin-left:0;margin-top:0.5rem}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu ul.internal .tocitem{width:100%;padding:0}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu ul.internal .tocitem::before{content:"⚬";margin-right:0.4em}html.theme--documenter-dark #documenter .docs-sidebar form.docs-search{margin:auto;margin-top:0.5rem;margin-bottom:0.5rem}html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input{width:14.4rem}@media screen and (min-width: 1056px){html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu{overflow-y:auto;-webkit-overflow-scroll:touch}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar{width:.3rem;background:none}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar-thumb{border-radius:5px 0px 0px 5px;background:#3b4445}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar-thumb:hover{background:#4e5a5c}}@media screen and (max-width: 1055px){html.theme--documenter-dark #documenter .docs-sidebar{overflow-y:auto;-webkit-overflow-scroll:touch}html.theme--documenter-dark #documenter .docs-sidebar::-webkit-scrollbar{width:.3rem;background:none}html.theme--documenter-dark #documenter .docs-sidebar::-webkit-scrollbar-thumb{border-radius:5px 0px 0px 5px;background:#3b4445}html.theme--documenter-dark #documenter .docs-sidebar::-webkit-scrollbar-thumb:hover{background:#4e5a5c}}html.theme--documenter-dark #documenter .docs-main #documenter-search-info{margin-bottom:1rem}html.theme--documenter-dark #documenter .docs-main #documenter-search-results{list-style-type:circle;list-style-position:outside}html.theme--documenter-dark #documenter .docs-main #documenter-search-results li{margin-left:2rem}html.theme--documenter-dark #documenter .docs-main #documenter-search-results .docs-highlight{background-color:yellow}html.theme--documenter-dark{background-color:#1f2424;font-size:16px;min-width:300px;overflow-x:auto;overflow-y:scroll;text-rendering:optimizeLegibility;text-size-adjust:100%}html.theme--documenter-dark .ansi span.sgr1{font-weight:bolder}html.theme--documenter-dark .ansi span.sgr2{font-weight:lighter}html.theme--documenter-dark .ansi span.sgr3{font-style:italic}html.theme--documenter-dark .ansi span.sgr4{text-decoration:underline}html.theme--documenter-dark .ansi span.sgr7{color:#1f2424;background-color:#fff}html.theme--documenter-dark .ansi span.sgr8{color:transparent}html.theme--documenter-dark .ansi span.sgr8 span{color:transparent}html.theme--documenter-dark .ansi span.sgr9{text-decoration:line-through}html.theme--documenter-dark .ansi span.sgr30{color:#242424}html.theme--documenter-dark .ansi span.sgr31{color:#f6705f}html.theme--documenter-dark .ansi span.sgr32{color:#4fb43a}html.theme--documenter-dark .ansi span.sgr33{color:#f4c72f}html.theme--documenter-dark .ansi span.sgr34{color:#7587f0}html.theme--documenter-dark .ansi span.sgr35{color:#bc89d3}html.theme--documenter-dark .ansi span.sgr36{color:#49b6ca}html.theme--documenter-dark .ansi span.sgr37{color:#b3bdbe}html.theme--documenter-dark .ansi span.sgr40{background-color:#242424}html.theme--documenter-dark .ansi span.sgr41{background-color:#f6705f}html.theme--documenter-dark .ansi span.sgr42{background-color:#4fb43a}html.theme--documenter-dark .ansi span.sgr43{background-color:#f4c72f}html.theme--documenter-dark .ansi span.sgr44{background-color:#7587f0}html.theme--documenter-dark .ansi span.sgr45{background-color:#bc89d3}html.theme--documenter-dark .ansi span.sgr46{background-color:#49b6ca}html.theme--documenter-dark .ansi span.sgr47{background-color:#b3bdbe}html.theme--documenter-dark .ansi span.sgr90{color:#92a0a2}html.theme--documenter-dark .ansi span.sgr91{color:#ff8674}html.theme--documenter-dark .ansi span.sgr92{color:#79d462}html.theme--documenter-dark .ansi span.sgr93{color:#ffe76b}html.theme--documenter-dark .ansi span.sgr94{color:#8a98ff}html.theme--documenter-dark .ansi span.sgr95{color:#d2a4e6}html.theme--documenter-dark .ansi span.sgr96{color:#6bc8db}html.theme--documenter-dark .ansi span.sgr97{color:#ecf0f1}html.theme--documenter-dark .ansi span.sgr100{background-color:#92a0a2}html.theme--documenter-dark .ansi span.sgr101{background-color:#ff8674}html.theme--documenter-dark .ansi span.sgr102{background-color:#79d462}html.theme--documenter-dark .ansi span.sgr103{background-color:#ffe76b}html.theme--documenter-dark .ansi span.sgr104{background-color:#8a98ff}html.theme--documenter-dark .ansi span.sgr105{background-color:#d2a4e6}html.theme--documenter-dark .ansi span.sgr106{background-color:#6bc8db}html.theme--documenter-dark .ansi span.sgr107{background-color:#ecf0f1}html.theme--documenter-dark code.language-julia-repl>span.hljs-meta{color:#4fb43a;font-weight:bolder}html.theme--documenter-dark .hljs{background:#2b2b2b;color:#f8f8f2}html.theme--documenter-dark .hljs-comment,html.theme--documenter-dark .hljs-quote{color:#d4d0ab}html.theme--documenter-dark .hljs-variable,html.theme--documenter-dark .hljs-template-variable,html.theme--documenter-dark .hljs-tag,html.theme--documenter-dark .hljs-name,html.theme--documenter-dark .hljs-selector-id,html.theme--documenter-dark .hljs-selector-class,html.theme--documenter-dark .hljs-regexp,html.theme--documenter-dark .hljs-deletion{color:#ffa07a}html.theme--documenter-dark .hljs-number,html.theme--documenter-dark .hljs-built_in,html.theme--documenter-dark .hljs-literal,html.theme--documenter-dark .hljs-type,html.theme--documenter-dark .hljs-params,html.theme--documenter-dark .hljs-meta,html.theme--documenter-dark .hljs-link{color:#f5ab35}html.theme--documenter-dark .hljs-attribute{color:#ffd700}html.theme--documenter-dark .hljs-string,html.theme--documenter-dark .hljs-symbol,html.theme--documenter-dark .hljs-bullet,html.theme--documenter-dark .hljs-addition{color:#abe338}html.theme--documenter-dark .hljs-title,html.theme--documenter-dark .hljs-section{color:#00e0e0}html.theme--documenter-dark .hljs-keyword,html.theme--documenter-dark .hljs-selector-tag{color:#dcc6e0}html.theme--documenter-dark .hljs-emphasis{font-style:italic}html.theme--documenter-dark .hljs-strong{font-weight:bold}@media screen and (-ms-high-contrast: active){html.theme--documenter-dark .hljs-addition,html.theme--documenter-dark .hljs-attribute,html.theme--documenter-dark .hljs-built_in,html.theme--documenter-dark .hljs-bullet,html.theme--documenter-dark .hljs-comment,html.theme--documenter-dark .hljs-link,html.theme--documenter-dark .hljs-literal,html.theme--documenter-dark .hljs-meta,html.theme--documenter-dark .hljs-number,html.theme--documenter-dark .hljs-params,html.theme--documenter-dark .hljs-string,html.theme--documenter-dark .hljs-symbol,html.theme--documenter-dark .hljs-type,html.theme--documenter-dark .hljs-quote{color:highlight}html.theme--documenter-dark .hljs-keyword,html.theme--documenter-dark .hljs-selector-tag{font-weight:bold}}html.theme--documenter-dark .hljs-subst{color:#f8f8f2} diff --git a/previews/PR33/assets/themes/documenter-light.css b/previews/PR33/assets/themes/documenter-light.css new file mode 100644 index 0000000..9b9a14b --- /dev/null +++ b/previews/PR33/assets/themes/documenter-light.css @@ -0,0 +1,9 @@ +@keyframes spinAround{from{transform:rotate(0deg)}to{transform:rotate(359deg)}}.tabs,.pagination-previous,.pagination-next,.pagination-link,.pagination-ellipsis,.breadcrumb,.file,.button,.is-unselectable,.modal-close,.delete{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.navbar-link:not(.is-arrowless)::after,.select:not(.is-multiple):not(.is-loading)::after{border:3px solid rgba(0,0,0,0);border-radius:2px;border-right:0;border-top:0;content:" ";display:block;height:0.625em;margin-top:-0.4375em;pointer-events:none;position:absolute;top:50%;transform:rotate(-45deg);transform-origin:center;width:0.625em}.admonition:not(:last-child),.tabs:not(:last-child),.message:not(:last-child),.list:not(:last-child),.level:not(:last-child),.breadcrumb:not(:last-child),.highlight:not(:last-child),.block:not(:last-child),.title:not(:last-child),.subtitle:not(:last-child),.table-container:not(:last-child),.table:not(:last-child),.progress:not(:last-child),.notification:not(:last-child),.content:not(:last-child),.box:not(:last-child){margin-bottom:1.5rem}.modal-close,.delete{-moz-appearance:none;-webkit-appearance:none;background-color:rgba(10,10,10,0.2);border:none;border-radius:290486px;cursor:pointer;pointer-events:auto;display:inline-block;flex-grow:0;flex-shrink:0;font-size:0;height:20px;max-height:20px;max-width:20px;min-height:20px;min-width:20px;outline:none;position:relative;vertical-align:top;width:20px}.modal-close::before,.delete::before,.modal-close::after,.delete::after{background-color:#fff;content:"";display:block;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) rotate(45deg);transform-origin:center center}.modal-close::before,.delete::before{height:2px;width:50%}.modal-close::after,.delete::after{height:50%;width:2px}.modal-close:hover,.delete:hover,.modal-close:focus,.delete:focus{background-color:rgba(10,10,10,0.3)}.modal-close:active,.delete:active{background-color:rgba(10,10,10,0.4)}.is-small.modal-close,#documenter .docs-sidebar form.docs-search>input.modal-close,.is-small.delete,#documenter .docs-sidebar form.docs-search>input.delete{height:16px;max-height:16px;max-width:16px;min-height:16px;min-width:16px;width:16px}.is-medium.modal-close,.is-medium.delete{height:24px;max-height:24px;max-width:24px;min-height:24px;min-width:24px;width:24px}.is-large.modal-close,.is-large.delete{height:32px;max-height:32px;max-width:32px;min-height:32px;min-width:32px;width:32px}.control.is-loading::after,.select.is-loading::after,.loader,.button.is-loading::after{animation:spinAround 500ms infinite linear;border:2px solid #dbdbdb;border-radius:290486px;border-right-color:transparent;border-top-color:transparent;content:"";display:block;height:1em;position:relative;width:1em}.hero-video,.modal-background,.modal,.image.is-square img,#documenter .docs-sidebar .docs-logo>img.is-square img,.image.is-square .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-square .has-ratio,.image.is-1by1 img,#documenter .docs-sidebar .docs-logo>img.is-1by1 img,.image.is-1by1 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-1by1 .has-ratio,.image.is-5by4 img,#documenter .docs-sidebar .docs-logo>img.is-5by4 img,.image.is-5by4 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-5by4 .has-ratio,.image.is-4by3 img,#documenter .docs-sidebar .docs-logo>img.is-4by3 img,.image.is-4by3 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-4by3 .has-ratio,.image.is-3by2 img,#documenter .docs-sidebar .docs-logo>img.is-3by2 img,.image.is-3by2 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-3by2 .has-ratio,.image.is-5by3 img,#documenter .docs-sidebar .docs-logo>img.is-5by3 img,.image.is-5by3 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-5by3 .has-ratio,.image.is-16by9 img,#documenter .docs-sidebar .docs-logo>img.is-16by9 img,.image.is-16by9 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-16by9 .has-ratio,.image.is-2by1 img,#documenter .docs-sidebar .docs-logo>img.is-2by1 img,.image.is-2by1 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-2by1 .has-ratio,.image.is-3by1 img,#documenter .docs-sidebar .docs-logo>img.is-3by1 img,.image.is-3by1 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-3by1 .has-ratio,.image.is-4by5 img,#documenter .docs-sidebar .docs-logo>img.is-4by5 img,.image.is-4by5 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-4by5 .has-ratio,.image.is-3by4 img,#documenter .docs-sidebar .docs-logo>img.is-3by4 img,.image.is-3by4 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-3by4 .has-ratio,.image.is-2by3 img,#documenter .docs-sidebar .docs-logo>img.is-2by3 img,.image.is-2by3 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-2by3 .has-ratio,.image.is-3by5 img,#documenter .docs-sidebar .docs-logo>img.is-3by5 img,.image.is-3by5 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-3by5 .has-ratio,.image.is-9by16 img,#documenter .docs-sidebar .docs-logo>img.is-9by16 img,.image.is-9by16 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-9by16 .has-ratio,.image.is-1by2 img,#documenter .docs-sidebar .docs-logo>img.is-1by2 img,.image.is-1by2 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-1by2 .has-ratio,.image.is-1by3 img,#documenter .docs-sidebar .docs-logo>img.is-1by3 img,.image.is-1by3 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-1by3 .has-ratio,.is-overlay{bottom:0;left:0;position:absolute;right:0;top:0}.pagination-previous,.pagination-next,.pagination-link,.pagination-ellipsis,.file-cta,.file-name,.select select,.textarea,.input,#documenter .docs-sidebar form.docs-search>input,.button{-moz-appearance:none;-webkit-appearance:none;align-items:center;border:1px solid transparent;border-radius:4px;box-shadow:none;display:inline-flex;font-size:1rem;height:2.25em;justify-content:flex-start;line-height:1.5;padding-bottom:calc(0.375em - 1px);padding-left:calc(0.625em - 1px);padding-right:calc(0.625em - 1px);padding-top:calc(0.375em - 1px);position:relative;vertical-align:top}.pagination-previous:focus,.pagination-next:focus,.pagination-link:focus,.pagination-ellipsis:focus,.file-cta:focus,.file-name:focus,.select select:focus,.textarea:focus,.input:focus,#documenter .docs-sidebar form.docs-search>input:focus,.button:focus,.is-focused.pagination-previous,.is-focused.pagination-next,.is-focused.pagination-link,.is-focused.pagination-ellipsis,.is-focused.file-cta,.is-focused.file-name,.select select.is-focused,.is-focused.textarea,.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.is-focused.button,.pagination-previous:active,.pagination-next:active,.pagination-link:active,.pagination-ellipsis:active,.file-cta:active,.file-name:active,.select select:active,.textarea:active,.input:active,#documenter .docs-sidebar form.docs-search>input:active,.button:active,.is-active.pagination-previous,.is-active.pagination-next,.is-active.pagination-link,.is-active.pagination-ellipsis,.is-active.file-cta,.is-active.file-name,.select select.is-active,.is-active.textarea,.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active,.is-active.button{outline:none}.pagination-previous[disabled],.pagination-next[disabled],.pagination-link[disabled],.pagination-ellipsis[disabled],.file-cta[disabled],.file-name[disabled],.select select[disabled],.textarea[disabled],.input[disabled],#documenter .docs-sidebar form.docs-search>input[disabled],.button[disabled],fieldset[disabled] .pagination-previous,fieldset[disabled] .pagination-next,fieldset[disabled] .pagination-link,fieldset[disabled] .pagination-ellipsis,fieldset[disabled] .file-cta,fieldset[disabled] .file-name,fieldset[disabled] .select select,.select fieldset[disabled] select,fieldset[disabled] .textarea,fieldset[disabled] .input,fieldset[disabled] #documenter .docs-sidebar form.docs-search>input,#documenter .docs-sidebar fieldset[disabled] form.docs-search>input,fieldset[disabled] .button{cursor:not-allowed}/*! minireset.css v0.0.4 | MIT License | github.com/jgthms/minireset.css */html,body,p,ol,ul,li,dl,dt,dd,blockquote,figure,fieldset,legend,textarea,pre,iframe,hr,h1,h2,h3,h4,h5,h6{margin:0;padding:0}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal}ul{list-style:none}button,input,select,textarea{margin:0}html{box-sizing:border-box}*,*::before,*::after{box-sizing:inherit}img,embed,iframe,object,video{height:auto;max-width:100%}audio{max-width:100%}iframe{border:0}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}td:not([align]),th:not([align]){text-align:left}html{background-color:#fff;font-size:16px;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;min-width:300px;overflow-x:auto;overflow-y:scroll;text-rendering:optimizeLegibility;text-size-adjust:100%}article,aside,figure,footer,header,hgroup,section{display:block}body,button,input,select,textarea{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif}code,pre{-moz-osx-font-smoothing:auto;-webkit-font-smoothing:auto;font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace}body{color:#222;font-size:1em;font-weight:400;line-height:1.5}a{color:#2e63b8;cursor:pointer;text-decoration:none}a strong{color:currentColor}a:hover{color:#363636}code{background-color:rgba(0,0,0,0.05);color:#000;font-size:.875em;font-weight:normal;padding:.1em}hr{background-color:#f5f5f5;border:none;display:block;height:2px;margin:1.5rem 0}img{height:auto;max-width:100%}input[type="checkbox"],input[type="radio"]{vertical-align:baseline}small{font-size:.875em}span{font-style:inherit;font-weight:inherit}strong{color:#222;font-weight:700}fieldset{border:none}pre{-webkit-overflow-scrolling:touch;background-color:#f5f5f5;color:#222;font-size:.875em;overflow-x:auto;padding:1.25rem 1.5rem;white-space:pre;word-wrap:normal}pre code{background-color:transparent;color:currentColor;font-size:1em;padding:0}table td,table th{vertical-align:top}table td:not([align]),table th:not([align]){text-align:left}table th{color:#222}.is-clearfix::after{clear:both;content:" ";display:table}.is-pulled-left{float:left !important}.is-pulled-right{float:right !important}.is-clipped{overflow:hidden !important}.is-size-1{font-size:3rem !important}.is-size-2{font-size:2.5rem !important}.is-size-3{font-size:2rem !important}.is-size-4{font-size:1.5rem !important}.is-size-5{font-size:1.25rem !important}.is-size-6{font-size:1rem !important}.is-size-7,.docstring>section>a.docs-sourcelink{font-size:.75rem !important}@media screen and (max-width: 768px){.is-size-1-mobile{font-size:3rem !important}.is-size-2-mobile{font-size:2.5rem !important}.is-size-3-mobile{font-size:2rem !important}.is-size-4-mobile{font-size:1.5rem !important}.is-size-5-mobile{font-size:1.25rem !important}.is-size-6-mobile{font-size:1rem !important}.is-size-7-mobile{font-size:.75rem !important}}@media screen and (min-width: 769px),print{.is-size-1-tablet{font-size:3rem !important}.is-size-2-tablet{font-size:2.5rem !important}.is-size-3-tablet{font-size:2rem !important}.is-size-4-tablet{font-size:1.5rem !important}.is-size-5-tablet{font-size:1.25rem !important}.is-size-6-tablet{font-size:1rem !important}.is-size-7-tablet{font-size:.75rem !important}}@media screen and (max-width: 1055px){.is-size-1-touch{font-size:3rem !important}.is-size-2-touch{font-size:2.5rem !important}.is-size-3-touch{font-size:2rem !important}.is-size-4-touch{font-size:1.5rem !important}.is-size-5-touch{font-size:1.25rem !important}.is-size-6-touch{font-size:1rem !important}.is-size-7-touch{font-size:.75rem !important}}@media screen and (min-width: 1056px){.is-size-1-desktop{font-size:3rem !important}.is-size-2-desktop{font-size:2.5rem !important}.is-size-3-desktop{font-size:2rem !important}.is-size-4-desktop{font-size:1.5rem !important}.is-size-5-desktop{font-size:1.25rem !important}.is-size-6-desktop{font-size:1rem !important}.is-size-7-desktop{font-size:.75rem !important}}@media screen and (min-width: 1216px){.is-size-1-widescreen{font-size:3rem !important}.is-size-2-widescreen{font-size:2.5rem !important}.is-size-3-widescreen{font-size:2rem !important}.is-size-4-widescreen{font-size:1.5rem !important}.is-size-5-widescreen{font-size:1.25rem !important}.is-size-6-widescreen{font-size:1rem !important}.is-size-7-widescreen{font-size:.75rem !important}}@media screen and (min-width: 1408px){.is-size-1-fullhd{font-size:3rem !important}.is-size-2-fullhd{font-size:2.5rem !important}.is-size-3-fullhd{font-size:2rem !important}.is-size-4-fullhd{font-size:1.5rem !important}.is-size-5-fullhd{font-size:1.25rem !important}.is-size-6-fullhd{font-size:1rem !important}.is-size-7-fullhd{font-size:.75rem !important}}.has-text-centered{text-align:center !important}.has-text-justified{text-align:justify !important}.has-text-left{text-align:left !important}.has-text-right{text-align:right !important}@media screen and (max-width: 768px){.has-text-centered-mobile{text-align:center !important}}@media screen and (min-width: 769px),print{.has-text-centered-tablet{text-align:center !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-centered-tablet-only{text-align:center !important}}@media screen and (max-width: 1055px){.has-text-centered-touch{text-align:center !important}}@media screen and (min-width: 1056px){.has-text-centered-desktop{text-align:center !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-centered-desktop-only{text-align:center !important}}@media screen and (min-width: 1216px){.has-text-centered-widescreen{text-align:center !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-centered-widescreen-only{text-align:center !important}}@media screen and (min-width: 1408px){.has-text-centered-fullhd{text-align:center !important}}@media screen and (max-width: 768px){.has-text-justified-mobile{text-align:justify !important}}@media screen and (min-width: 769px),print{.has-text-justified-tablet{text-align:justify !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-justified-tablet-only{text-align:justify !important}}@media screen and (max-width: 1055px){.has-text-justified-touch{text-align:justify !important}}@media screen and (min-width: 1056px){.has-text-justified-desktop{text-align:justify !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-justified-desktop-only{text-align:justify !important}}@media screen and (min-width: 1216px){.has-text-justified-widescreen{text-align:justify !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-justified-widescreen-only{text-align:justify !important}}@media screen and (min-width: 1408px){.has-text-justified-fullhd{text-align:justify !important}}@media screen and (max-width: 768px){.has-text-left-mobile{text-align:left !important}}@media screen and (min-width: 769px),print{.has-text-left-tablet{text-align:left !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-left-tablet-only{text-align:left !important}}@media screen and (max-width: 1055px){.has-text-left-touch{text-align:left !important}}@media screen and (min-width: 1056px){.has-text-left-desktop{text-align:left !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-left-desktop-only{text-align:left !important}}@media screen and (min-width: 1216px){.has-text-left-widescreen{text-align:left !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-left-widescreen-only{text-align:left !important}}@media screen and (min-width: 1408px){.has-text-left-fullhd{text-align:left !important}}@media screen and (max-width: 768px){.has-text-right-mobile{text-align:right !important}}@media screen and (min-width: 769px),print{.has-text-right-tablet{text-align:right !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-right-tablet-only{text-align:right !important}}@media screen and (max-width: 1055px){.has-text-right-touch{text-align:right !important}}@media screen and (min-width: 1056px){.has-text-right-desktop{text-align:right !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-right-desktop-only{text-align:right !important}}@media screen and (min-width: 1216px){.has-text-right-widescreen{text-align:right !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-right-widescreen-only{text-align:right !important}}@media screen and (min-width: 1408px){.has-text-right-fullhd{text-align:right !important}}.is-capitalized{text-transform:capitalize !important}.is-lowercase{text-transform:lowercase !important}.is-uppercase{text-transform:uppercase !important}.is-italic{font-style:italic !important}.has-text-white{color:#fff !important}a.has-text-white:hover,a.has-text-white:focus{color:#e6e6e6 !important}.has-background-white{background-color:#fff !important}.has-text-black{color:#0a0a0a !important}a.has-text-black:hover,a.has-text-black:focus{color:#000 !important}.has-background-black{background-color:#0a0a0a !important}.has-text-light{color:#f5f5f5 !important}a.has-text-light:hover,a.has-text-light:focus{color:#dbdbdb !important}.has-background-light{background-color:#f5f5f5 !important}.has-text-dark{color:#363636 !important}a.has-text-dark:hover,a.has-text-dark:focus{color:#1c1c1c !important}.has-background-dark{background-color:#363636 !important}.has-text-primary{color:#4eb5de !important}a.has-text-primary:hover,a.has-text-primary:focus{color:#27a1d2 !important}.has-background-primary{background-color:#4eb5de !important}.has-text-link{color:#2e63b8 !important}a.has-text-link:hover,a.has-text-link:focus{color:#244d8f !important}.has-background-link{background-color:#2e63b8 !important}.has-text-info{color:#209cee !important}a.has-text-info:hover,a.has-text-info:focus{color:#1081cb !important}.has-background-info{background-color:#209cee !important}.has-text-success{color:#22c35b !important}a.has-text-success:hover,a.has-text-success:focus{color:#1a9847 !important}.has-background-success{background-color:#22c35b !important}.has-text-warning{color:#ffdd57 !important}a.has-text-warning:hover,a.has-text-warning:focus{color:#ffd324 !important}.has-background-warning{background-color:#ffdd57 !important}.has-text-danger{color:#da0b00 !important}a.has-text-danger:hover,a.has-text-danger:focus{color:#a70800 !important}.has-background-danger{background-color:#da0b00 !important}.has-text-black-bis{color:#121212 !important}.has-background-black-bis{background-color:#121212 !important}.has-text-black-ter{color:#242424 !important}.has-background-black-ter{background-color:#242424 !important}.has-text-grey-darker{color:#363636 !important}.has-background-grey-darker{background-color:#363636 !important}.has-text-grey-dark{color:#4a4a4a !important}.has-background-grey-dark{background-color:#4a4a4a !important}.has-text-grey{color:#6b6b6b !important}.has-background-grey{background-color:#6b6b6b !important}.has-text-grey-light{color:#b5b5b5 !important}.has-background-grey-light{background-color:#b5b5b5 !important}.has-text-grey-lighter{color:#dbdbdb !important}.has-background-grey-lighter{background-color:#dbdbdb !important}.has-text-white-ter{color:#f5f5f5 !important}.has-background-white-ter{background-color:#f5f5f5 !important}.has-text-white-bis{color:#fafafa !important}.has-background-white-bis{background-color:#fafafa !important}.has-text-weight-light{font-weight:300 !important}.has-text-weight-normal{font-weight:400 !important}.has-text-weight-medium{font-weight:500 !important}.has-text-weight-semibold{font-weight:600 !important}.has-text-weight-bold{font-weight:700 !important}.is-family-primary{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif !important}.is-family-secondary{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif !important}.is-family-sans-serif{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif !important}.is-family-monospace{font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace !important}.is-family-code{font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace !important}.is-block{display:block !important}@media screen and (max-width: 768px){.is-block-mobile{display:block !important}}@media screen and (min-width: 769px),print{.is-block-tablet{display:block !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-block-tablet-only{display:block !important}}@media screen and (max-width: 1055px){.is-block-touch{display:block !important}}@media screen and (min-width: 1056px){.is-block-desktop{display:block !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-block-desktop-only{display:block !important}}@media screen and (min-width: 1216px){.is-block-widescreen{display:block !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-block-widescreen-only{display:block !important}}@media screen and (min-width: 1408px){.is-block-fullhd{display:block !important}}.is-flex{display:flex !important}@media screen and (max-width: 768px){.is-flex-mobile{display:flex !important}}@media screen and (min-width: 769px),print{.is-flex-tablet{display:flex !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-flex-tablet-only{display:flex !important}}@media screen and (max-width: 1055px){.is-flex-touch{display:flex !important}}@media screen and (min-width: 1056px){.is-flex-desktop{display:flex !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-flex-desktop-only{display:flex !important}}@media screen and (min-width: 1216px){.is-flex-widescreen{display:flex !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-flex-widescreen-only{display:flex !important}}@media screen and (min-width: 1408px){.is-flex-fullhd{display:flex !important}}.is-inline{display:inline !important}@media screen and (max-width: 768px){.is-inline-mobile{display:inline !important}}@media screen and (min-width: 769px),print{.is-inline-tablet{display:inline !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-inline-tablet-only{display:inline !important}}@media screen and (max-width: 1055px){.is-inline-touch{display:inline !important}}@media screen and (min-width: 1056px){.is-inline-desktop{display:inline !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-inline-desktop-only{display:inline !important}}@media screen and (min-width: 1216px){.is-inline-widescreen{display:inline !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-inline-widescreen-only{display:inline !important}}@media screen and (min-width: 1408px){.is-inline-fullhd{display:inline !important}}.is-inline-block{display:inline-block !important}@media screen and (max-width: 768px){.is-inline-block-mobile{display:inline-block !important}}@media screen and (min-width: 769px),print{.is-inline-block-tablet{display:inline-block !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-inline-block-tablet-only{display:inline-block !important}}@media screen and (max-width: 1055px){.is-inline-block-touch{display:inline-block !important}}@media screen and (min-width: 1056px){.is-inline-block-desktop{display:inline-block !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-inline-block-desktop-only{display:inline-block !important}}@media screen and (min-width: 1216px){.is-inline-block-widescreen{display:inline-block !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-inline-block-widescreen-only{display:inline-block !important}}@media screen and (min-width: 1408px){.is-inline-block-fullhd{display:inline-block !important}}.is-inline-flex{display:inline-flex !important}@media screen and (max-width: 768px){.is-inline-flex-mobile{display:inline-flex !important}}@media screen and (min-width: 769px),print{.is-inline-flex-tablet{display:inline-flex !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-inline-flex-tablet-only{display:inline-flex !important}}@media screen and (max-width: 1055px){.is-inline-flex-touch{display:inline-flex !important}}@media screen and (min-width: 1056px){.is-inline-flex-desktop{display:inline-flex !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-inline-flex-desktop-only{display:inline-flex !important}}@media screen and (min-width: 1216px){.is-inline-flex-widescreen{display:inline-flex !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-inline-flex-widescreen-only{display:inline-flex !important}}@media screen and (min-width: 1408px){.is-inline-flex-fullhd{display:inline-flex !important}}.is-hidden{display:none !important}.is-sr-only{border:none !important;clip:rect(0, 0, 0, 0) !important;height:0.01em !important;overflow:hidden !important;padding:0 !important;position:absolute !important;white-space:nowrap !important;width:0.01em !important}@media screen and (max-width: 768px){.is-hidden-mobile{display:none !important}}@media screen and (min-width: 769px),print{.is-hidden-tablet{display:none !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-hidden-tablet-only{display:none !important}}@media screen and (max-width: 1055px){.is-hidden-touch{display:none !important}}@media screen and (min-width: 1056px){.is-hidden-desktop{display:none !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-hidden-desktop-only{display:none !important}}@media screen and (min-width: 1216px){.is-hidden-widescreen{display:none !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-hidden-widescreen-only{display:none !important}}@media screen and (min-width: 1408px){.is-hidden-fullhd{display:none !important}}.is-invisible{visibility:hidden !important}@media screen and (max-width: 768px){.is-invisible-mobile{visibility:hidden !important}}@media screen and (min-width: 769px),print{.is-invisible-tablet{visibility:hidden !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-invisible-tablet-only{visibility:hidden !important}}@media screen and (max-width: 1055px){.is-invisible-touch{visibility:hidden !important}}@media screen and (min-width: 1056px){.is-invisible-desktop{visibility:hidden !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-invisible-desktop-only{visibility:hidden !important}}@media screen and (min-width: 1216px){.is-invisible-widescreen{visibility:hidden !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-invisible-widescreen-only{visibility:hidden !important}}@media screen and (min-width: 1408px){.is-invisible-fullhd{visibility:hidden !important}}.is-marginless{margin:0 !important}.is-paddingless{padding:0 !important}.is-radiusless{border-radius:0 !important}.is-shadowless{box-shadow:none !important}.is-relative{position:relative !important}.box{background-color:#fff;border-radius:6px;box-shadow:0 2px 3px rgba(10,10,10,0.1),0 0 0 1px rgba(10,10,10,0.1);color:#222;display:block;padding:1.25rem}a.box:hover,a.box:focus{box-shadow:0 2px 3px rgba(10,10,10,0.1),0 0 0 1px #2e63b8}a.box:active{box-shadow:inset 0 1px 2px rgba(10,10,10,0.2),0 0 0 1px #2e63b8}.button{background-color:#fff;border-color:#dbdbdb;border-width:1px;color:#363636;cursor:pointer;justify-content:center;padding-bottom:calc(0.375em - 1px);padding-left:.75em;padding-right:.75em;padding-top:calc(0.375em - 1px);text-align:center;white-space:nowrap}.button strong{color:inherit}.button .icon,.button .icon.is-small,.button #documenter .docs-sidebar form.docs-search>input.icon,#documenter .docs-sidebar .button form.docs-search>input.icon,.button .icon.is-medium,.button .icon.is-large{height:1.5em;width:1.5em}.button .icon:first-child:not(:last-child){margin-left:calc(-0.375em - 1px);margin-right:0.1875em}.button .icon:last-child:not(:first-child){margin-left:0.1875em;margin-right:calc(-0.375em - 1px)}.button .icon:first-child:last-child{margin-left:calc(-0.375em - 1px);margin-right:calc(-0.375em - 1px)}.button:hover,.button.is-hovered{border-color:#b5b5b5;color:#363636}.button:focus,.button.is-focused{border-color:#3c5dcd;color:#363636}.button:focus:not(:active),.button.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(46,99,184,0.25)}.button:active,.button.is-active{border-color:#4a4a4a;color:#363636}.button.is-text{background-color:transparent;border-color:transparent;color:#222;text-decoration:underline}.button.is-text:hover,.button.is-text.is-hovered,.button.is-text:focus,.button.is-text.is-focused{background-color:#f5f5f5;color:#222}.button.is-text:active,.button.is-text.is-active{background-color:#e8e8e8;color:#222}.button.is-text[disabled],fieldset[disabled] .button.is-text{background-color:transparent;border-color:transparent;box-shadow:none}.button.is-white{background-color:#fff;border-color:transparent;color:#0a0a0a}.button.is-white:hover,.button.is-white.is-hovered{background-color:#f9f9f9;border-color:transparent;color:#0a0a0a}.button.is-white:focus,.button.is-white.is-focused{border-color:transparent;color:#0a0a0a}.button.is-white:focus:not(:active),.button.is-white.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(255,255,255,0.25)}.button.is-white:active,.button.is-white.is-active{background-color:#f2f2f2;border-color:transparent;color:#0a0a0a}.button.is-white[disabled],fieldset[disabled] .button.is-white{background-color:#fff;border-color:transparent;box-shadow:none}.button.is-white.is-inverted{background-color:#0a0a0a;color:#fff}.button.is-white.is-inverted:hover,.button.is-white.is-inverted.is-hovered{background-color:#000}.button.is-white.is-inverted[disabled],fieldset[disabled] .button.is-white.is-inverted{background-color:#0a0a0a;border-color:transparent;box-shadow:none;color:#fff}.button.is-white.is-loading::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}.button.is-white.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-white.is-outlined:hover,.button.is-white.is-outlined.is-hovered,.button.is-white.is-outlined:focus,.button.is-white.is-outlined.is-focused{background-color:#fff;border-color:#fff;color:#0a0a0a}.button.is-white.is-outlined.is-loading::after{border-color:transparent transparent #fff #fff !important}.button.is-white.is-outlined.is-loading:hover::after,.button.is-white.is-outlined.is-loading.is-hovered::after,.button.is-white.is-outlined.is-loading:focus::after,.button.is-white.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}.button.is-white.is-outlined[disabled],fieldset[disabled] .button.is-white.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-white.is-inverted.is-outlined{background-color:transparent;border-color:#0a0a0a;color:#0a0a0a}.button.is-white.is-inverted.is-outlined:hover,.button.is-white.is-inverted.is-outlined.is-hovered,.button.is-white.is-inverted.is-outlined:focus,.button.is-white.is-inverted.is-outlined.is-focused{background-color:#0a0a0a;color:#fff}.button.is-white.is-inverted.is-outlined.is-loading:hover::after,.button.is-white.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-white.is-inverted.is-outlined.is-loading:focus::after,.button.is-white.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}.button.is-white.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-white.is-inverted.is-outlined{background-color:transparent;border-color:#0a0a0a;box-shadow:none;color:#0a0a0a}.button.is-black{background-color:#0a0a0a;border-color:transparent;color:#fff}.button.is-black:hover,.button.is-black.is-hovered{background-color:#040404;border-color:transparent;color:#fff}.button.is-black:focus,.button.is-black.is-focused{border-color:transparent;color:#fff}.button.is-black:focus:not(:active),.button.is-black.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(10,10,10,0.25)}.button.is-black:active,.button.is-black.is-active{background-color:#000;border-color:transparent;color:#fff}.button.is-black[disabled],fieldset[disabled] .button.is-black{background-color:#0a0a0a;border-color:transparent;box-shadow:none}.button.is-black.is-inverted{background-color:#fff;color:#0a0a0a}.button.is-black.is-inverted:hover,.button.is-black.is-inverted.is-hovered{background-color:#f2f2f2}.button.is-black.is-inverted[disabled],fieldset[disabled] .button.is-black.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#0a0a0a}.button.is-black.is-loading::after{border-color:transparent transparent #fff #fff !important}.button.is-black.is-outlined{background-color:transparent;border-color:#0a0a0a;color:#0a0a0a}.button.is-black.is-outlined:hover,.button.is-black.is-outlined.is-hovered,.button.is-black.is-outlined:focus,.button.is-black.is-outlined.is-focused{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}.button.is-black.is-outlined.is-loading::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}.button.is-black.is-outlined.is-loading:hover::after,.button.is-black.is-outlined.is-loading.is-hovered::after,.button.is-black.is-outlined.is-loading:focus::after,.button.is-black.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}.button.is-black.is-outlined[disabled],fieldset[disabled] .button.is-black.is-outlined{background-color:transparent;border-color:#0a0a0a;box-shadow:none;color:#0a0a0a}.button.is-black.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-black.is-inverted.is-outlined:hover,.button.is-black.is-inverted.is-outlined.is-hovered,.button.is-black.is-inverted.is-outlined:focus,.button.is-black.is-inverted.is-outlined.is-focused{background-color:#fff;color:#0a0a0a}.button.is-black.is-inverted.is-outlined.is-loading:hover::after,.button.is-black.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-black.is-inverted.is-outlined.is-loading:focus::after,.button.is-black.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}.button.is-black.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-black.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-light{background-color:#f5f5f5;border-color:transparent;color:#363636}.button.is-light:hover,.button.is-light.is-hovered{background-color:#eee;border-color:transparent;color:#363636}.button.is-light:focus,.button.is-light.is-focused{border-color:transparent;color:#363636}.button.is-light:focus:not(:active),.button.is-light.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(245,245,245,0.25)}.button.is-light:active,.button.is-light.is-active{background-color:#e8e8e8;border-color:transparent;color:#363636}.button.is-light[disabled],fieldset[disabled] .button.is-light{background-color:#f5f5f5;border-color:transparent;box-shadow:none}.button.is-light.is-inverted{background-color:#363636;color:#f5f5f5}.button.is-light.is-inverted:hover,.button.is-light.is-inverted.is-hovered{background-color:#292929}.button.is-light.is-inverted[disabled],fieldset[disabled] .button.is-light.is-inverted{background-color:#363636;border-color:transparent;box-shadow:none;color:#f5f5f5}.button.is-light.is-loading::after{border-color:transparent transparent #363636 #363636 !important}.button.is-light.is-outlined{background-color:transparent;border-color:#f5f5f5;color:#f5f5f5}.button.is-light.is-outlined:hover,.button.is-light.is-outlined.is-hovered,.button.is-light.is-outlined:focus,.button.is-light.is-outlined.is-focused{background-color:#f5f5f5;border-color:#f5f5f5;color:#363636}.button.is-light.is-outlined.is-loading::after{border-color:transparent transparent #f5f5f5 #f5f5f5 !important}.button.is-light.is-outlined.is-loading:hover::after,.button.is-light.is-outlined.is-loading.is-hovered::after,.button.is-light.is-outlined.is-loading:focus::after,.button.is-light.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #363636 #363636 !important}.button.is-light.is-outlined[disabled],fieldset[disabled] .button.is-light.is-outlined{background-color:transparent;border-color:#f5f5f5;box-shadow:none;color:#f5f5f5}.button.is-light.is-inverted.is-outlined{background-color:transparent;border-color:#363636;color:#363636}.button.is-light.is-inverted.is-outlined:hover,.button.is-light.is-inverted.is-outlined.is-hovered,.button.is-light.is-inverted.is-outlined:focus,.button.is-light.is-inverted.is-outlined.is-focused{background-color:#363636;color:#f5f5f5}.button.is-light.is-inverted.is-outlined.is-loading:hover::after,.button.is-light.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-light.is-inverted.is-outlined.is-loading:focus::after,.button.is-light.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #f5f5f5 #f5f5f5 !important}.button.is-light.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-light.is-inverted.is-outlined{background-color:transparent;border-color:#363636;box-shadow:none;color:#363636}.button.is-dark,.content kbd.button{background-color:#363636;border-color:transparent;color:#f5f5f5}.button.is-dark:hover,.content kbd.button:hover,.button.is-dark.is-hovered,.content kbd.button.is-hovered{background-color:#2f2f2f;border-color:transparent;color:#f5f5f5}.button.is-dark:focus,.content kbd.button:focus,.button.is-dark.is-focused,.content kbd.button.is-focused{border-color:transparent;color:#f5f5f5}.button.is-dark:focus:not(:active),.content kbd.button:focus:not(:active),.button.is-dark.is-focused:not(:active),.content kbd.button.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(54,54,54,0.25)}.button.is-dark:active,.content kbd.button:active,.button.is-dark.is-active,.content kbd.button.is-active{background-color:#292929;border-color:transparent;color:#f5f5f5}.button.is-dark[disabled],.content kbd.button[disabled],fieldset[disabled] .button.is-dark,fieldset[disabled] .content kbd.button,.content fieldset[disabled] kbd.button{background-color:#363636;border-color:transparent;box-shadow:none}.button.is-dark.is-inverted,.content kbd.button.is-inverted{background-color:#f5f5f5;color:#363636}.button.is-dark.is-inverted:hover,.content kbd.button.is-inverted:hover,.button.is-dark.is-inverted.is-hovered,.content kbd.button.is-inverted.is-hovered{background-color:#e8e8e8}.button.is-dark.is-inverted[disabled],.content kbd.button.is-inverted[disabled],fieldset[disabled] .button.is-dark.is-inverted,fieldset[disabled] .content kbd.button.is-inverted,.content fieldset[disabled] kbd.button.is-inverted{background-color:#f5f5f5;border-color:transparent;box-shadow:none;color:#363636}.button.is-dark.is-loading::after,.content kbd.button.is-loading::after{border-color:transparent transparent #f5f5f5 #f5f5f5 !important}.button.is-dark.is-outlined,.content kbd.button.is-outlined{background-color:transparent;border-color:#363636;color:#363636}.button.is-dark.is-outlined:hover,.content kbd.button.is-outlined:hover,.button.is-dark.is-outlined.is-hovered,.content kbd.button.is-outlined.is-hovered,.button.is-dark.is-outlined:focus,.content kbd.button.is-outlined:focus,.button.is-dark.is-outlined.is-focused,.content kbd.button.is-outlined.is-focused{background-color:#363636;border-color:#363636;color:#f5f5f5}.button.is-dark.is-outlined.is-loading::after,.content kbd.button.is-outlined.is-loading::after{border-color:transparent transparent #363636 #363636 !important}.button.is-dark.is-outlined.is-loading:hover::after,.content kbd.button.is-outlined.is-loading:hover::after,.button.is-dark.is-outlined.is-loading.is-hovered::after,.content kbd.button.is-outlined.is-loading.is-hovered::after,.button.is-dark.is-outlined.is-loading:focus::after,.content kbd.button.is-outlined.is-loading:focus::after,.button.is-dark.is-outlined.is-loading.is-focused::after,.content kbd.button.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #f5f5f5 #f5f5f5 !important}.button.is-dark.is-outlined[disabled],.content kbd.button.is-outlined[disabled],fieldset[disabled] .button.is-dark.is-outlined,fieldset[disabled] .content kbd.button.is-outlined,.content fieldset[disabled] kbd.button.is-outlined{background-color:transparent;border-color:#363636;box-shadow:none;color:#363636}.button.is-dark.is-inverted.is-outlined,.content kbd.button.is-inverted.is-outlined{background-color:transparent;border-color:#f5f5f5;color:#f5f5f5}.button.is-dark.is-inverted.is-outlined:hover,.content kbd.button.is-inverted.is-outlined:hover,.button.is-dark.is-inverted.is-outlined.is-hovered,.content kbd.button.is-inverted.is-outlined.is-hovered,.button.is-dark.is-inverted.is-outlined:focus,.content kbd.button.is-inverted.is-outlined:focus,.button.is-dark.is-inverted.is-outlined.is-focused,.content kbd.button.is-inverted.is-outlined.is-focused{background-color:#f5f5f5;color:#363636}.button.is-dark.is-inverted.is-outlined.is-loading:hover::after,.content kbd.button.is-inverted.is-outlined.is-loading:hover::after,.button.is-dark.is-inverted.is-outlined.is-loading.is-hovered::after,.content kbd.button.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-dark.is-inverted.is-outlined.is-loading:focus::after,.content kbd.button.is-inverted.is-outlined.is-loading:focus::after,.button.is-dark.is-inverted.is-outlined.is-loading.is-focused::after,.content kbd.button.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #363636 #363636 !important}.button.is-dark.is-inverted.is-outlined[disabled],.content kbd.button.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-dark.is-inverted.is-outlined,fieldset[disabled] .content kbd.button.is-inverted.is-outlined,.content fieldset[disabled] kbd.button.is-inverted.is-outlined{background-color:transparent;border-color:#f5f5f5;box-shadow:none;color:#f5f5f5}.button.is-primary,.docstring>section>a.button.docs-sourcelink{background-color:#4eb5de;border-color:transparent;color:#fff}.button.is-primary:hover,.docstring>section>a.button.docs-sourcelink:hover,.button.is-primary.is-hovered,.docstring>section>a.button.is-hovered.docs-sourcelink{background-color:#43b1dc;border-color:transparent;color:#fff}.button.is-primary:focus,.docstring>section>a.button.docs-sourcelink:focus,.button.is-primary.is-focused,.docstring>section>a.button.is-focused.docs-sourcelink{border-color:transparent;color:#fff}.button.is-primary:focus:not(:active),.docstring>section>a.button.docs-sourcelink:focus:not(:active),.button.is-primary.is-focused:not(:active),.docstring>section>a.button.is-focused.docs-sourcelink:not(:active){box-shadow:0 0 0 0.125em rgba(78,181,222,0.25)}.button.is-primary:active,.docstring>section>a.button.docs-sourcelink:active,.button.is-primary.is-active,.docstring>section>a.button.is-active.docs-sourcelink{background-color:#39acda;border-color:transparent;color:#fff}.button.is-primary[disabled],.docstring>section>a.button.docs-sourcelink[disabled],fieldset[disabled] .button.is-primary,fieldset[disabled] .docstring>section>a.button.docs-sourcelink{background-color:#4eb5de;border-color:transparent;box-shadow:none}.button.is-primary.is-inverted,.docstring>section>a.button.is-inverted.docs-sourcelink{background-color:#fff;color:#4eb5de}.button.is-primary.is-inverted:hover,.docstring>section>a.button.is-inverted.docs-sourcelink:hover,.button.is-primary.is-inverted.is-hovered,.docstring>section>a.button.is-inverted.is-hovered.docs-sourcelink{background-color:#f2f2f2}.button.is-primary.is-inverted[disabled],.docstring>section>a.button.is-inverted.docs-sourcelink[disabled],fieldset[disabled] .button.is-primary.is-inverted,fieldset[disabled] .docstring>section>a.button.is-inverted.docs-sourcelink{background-color:#fff;border-color:transparent;box-shadow:none;color:#4eb5de}.button.is-primary.is-loading::after,.docstring>section>a.button.is-loading.docs-sourcelink::after{border-color:transparent transparent #fff #fff !important}.button.is-primary.is-outlined,.docstring>section>a.button.is-outlined.docs-sourcelink{background-color:transparent;border-color:#4eb5de;color:#4eb5de}.button.is-primary.is-outlined:hover,.docstring>section>a.button.is-outlined.docs-sourcelink:hover,.button.is-primary.is-outlined.is-hovered,.docstring>section>a.button.is-outlined.is-hovered.docs-sourcelink,.button.is-primary.is-outlined:focus,.docstring>section>a.button.is-outlined.docs-sourcelink:focus,.button.is-primary.is-outlined.is-focused,.docstring>section>a.button.is-outlined.is-focused.docs-sourcelink{background-color:#4eb5de;border-color:#4eb5de;color:#fff}.button.is-primary.is-outlined.is-loading::after,.docstring>section>a.button.is-outlined.is-loading.docs-sourcelink::after{border-color:transparent transparent #4eb5de #4eb5de !important}.button.is-primary.is-outlined.is-loading:hover::after,.docstring>section>a.button.is-outlined.is-loading.docs-sourcelink:hover::after,.button.is-primary.is-outlined.is-loading.is-hovered::after,.docstring>section>a.button.is-outlined.is-loading.is-hovered.docs-sourcelink::after,.button.is-primary.is-outlined.is-loading:focus::after,.docstring>section>a.button.is-outlined.is-loading.docs-sourcelink:focus::after,.button.is-primary.is-outlined.is-loading.is-focused::after,.docstring>section>a.button.is-outlined.is-loading.is-focused.docs-sourcelink::after{border-color:transparent transparent #fff #fff !important}.button.is-primary.is-outlined[disabled],.docstring>section>a.button.is-outlined.docs-sourcelink[disabled],fieldset[disabled] .button.is-primary.is-outlined,fieldset[disabled] .docstring>section>a.button.is-outlined.docs-sourcelink{background-color:transparent;border-color:#4eb5de;box-shadow:none;color:#4eb5de}.button.is-primary.is-inverted.is-outlined,.docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink{background-color:transparent;border-color:#fff;color:#fff}.button.is-primary.is-inverted.is-outlined:hover,.docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink:hover,.button.is-primary.is-inverted.is-outlined.is-hovered,.docstring>section>a.button.is-inverted.is-outlined.is-hovered.docs-sourcelink,.button.is-primary.is-inverted.is-outlined:focus,.docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink:focus,.button.is-primary.is-inverted.is-outlined.is-focused,.docstring>section>a.button.is-inverted.is-outlined.is-focused.docs-sourcelink{background-color:#fff;color:#4eb5de}.button.is-primary.is-inverted.is-outlined.is-loading:hover::after,.docstring>section>a.button.is-inverted.is-outlined.is-loading.docs-sourcelink:hover::after,.button.is-primary.is-inverted.is-outlined.is-loading.is-hovered::after,.docstring>section>a.button.is-inverted.is-outlined.is-loading.is-hovered.docs-sourcelink::after,.button.is-primary.is-inverted.is-outlined.is-loading:focus::after,.docstring>section>a.button.is-inverted.is-outlined.is-loading.docs-sourcelink:focus::after,.button.is-primary.is-inverted.is-outlined.is-loading.is-focused::after,.docstring>section>a.button.is-inverted.is-outlined.is-loading.is-focused.docs-sourcelink::after{border-color:transparent transparent #4eb5de #4eb5de !important}.button.is-primary.is-inverted.is-outlined[disabled],.docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink[disabled],fieldset[disabled] .button.is-primary.is-inverted.is-outlined,fieldset[disabled] .docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-link{background-color:#2e63b8;border-color:transparent;color:#fff}.button.is-link:hover,.button.is-link.is-hovered{background-color:#2b5eae;border-color:transparent;color:#fff}.button.is-link:focus,.button.is-link.is-focused{border-color:transparent;color:#fff}.button.is-link:focus:not(:active),.button.is-link.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(46,99,184,0.25)}.button.is-link:active,.button.is-link.is-active{background-color:#2958a4;border-color:transparent;color:#fff}.button.is-link[disabled],fieldset[disabled] .button.is-link{background-color:#2e63b8;border-color:transparent;box-shadow:none}.button.is-link.is-inverted{background-color:#fff;color:#2e63b8}.button.is-link.is-inverted:hover,.button.is-link.is-inverted.is-hovered{background-color:#f2f2f2}.button.is-link.is-inverted[disabled],fieldset[disabled] .button.is-link.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#2e63b8}.button.is-link.is-loading::after{border-color:transparent transparent #fff #fff !important}.button.is-link.is-outlined{background-color:transparent;border-color:#2e63b8;color:#2e63b8}.button.is-link.is-outlined:hover,.button.is-link.is-outlined.is-hovered,.button.is-link.is-outlined:focus,.button.is-link.is-outlined.is-focused{background-color:#2e63b8;border-color:#2e63b8;color:#fff}.button.is-link.is-outlined.is-loading::after{border-color:transparent transparent #2e63b8 #2e63b8 !important}.button.is-link.is-outlined.is-loading:hover::after,.button.is-link.is-outlined.is-loading.is-hovered::after,.button.is-link.is-outlined.is-loading:focus::after,.button.is-link.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}.button.is-link.is-outlined[disabled],fieldset[disabled] .button.is-link.is-outlined{background-color:transparent;border-color:#2e63b8;box-shadow:none;color:#2e63b8}.button.is-link.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-link.is-inverted.is-outlined:hover,.button.is-link.is-inverted.is-outlined.is-hovered,.button.is-link.is-inverted.is-outlined:focus,.button.is-link.is-inverted.is-outlined.is-focused{background-color:#fff;color:#2e63b8}.button.is-link.is-inverted.is-outlined.is-loading:hover::after,.button.is-link.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-link.is-inverted.is-outlined.is-loading:focus::after,.button.is-link.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #2e63b8 #2e63b8 !important}.button.is-link.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-link.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-info{background-color:#209cee;border-color:transparent;color:#fff}.button.is-info:hover,.button.is-info.is-hovered{background-color:#1497ed;border-color:transparent;color:#fff}.button.is-info:focus,.button.is-info.is-focused{border-color:transparent;color:#fff}.button.is-info:focus:not(:active),.button.is-info.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(32,156,238,0.25)}.button.is-info:active,.button.is-info.is-active{background-color:#1190e3;border-color:transparent;color:#fff}.button.is-info[disabled],fieldset[disabled] .button.is-info{background-color:#209cee;border-color:transparent;box-shadow:none}.button.is-info.is-inverted{background-color:#fff;color:#209cee}.button.is-info.is-inverted:hover,.button.is-info.is-inverted.is-hovered{background-color:#f2f2f2}.button.is-info.is-inverted[disabled],fieldset[disabled] .button.is-info.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#209cee}.button.is-info.is-loading::after{border-color:transparent transparent #fff #fff !important}.button.is-info.is-outlined{background-color:transparent;border-color:#209cee;color:#209cee}.button.is-info.is-outlined:hover,.button.is-info.is-outlined.is-hovered,.button.is-info.is-outlined:focus,.button.is-info.is-outlined.is-focused{background-color:#209cee;border-color:#209cee;color:#fff}.button.is-info.is-outlined.is-loading::after{border-color:transparent transparent #209cee #209cee !important}.button.is-info.is-outlined.is-loading:hover::after,.button.is-info.is-outlined.is-loading.is-hovered::after,.button.is-info.is-outlined.is-loading:focus::after,.button.is-info.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}.button.is-info.is-outlined[disabled],fieldset[disabled] .button.is-info.is-outlined{background-color:transparent;border-color:#209cee;box-shadow:none;color:#209cee}.button.is-info.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-info.is-inverted.is-outlined:hover,.button.is-info.is-inverted.is-outlined.is-hovered,.button.is-info.is-inverted.is-outlined:focus,.button.is-info.is-inverted.is-outlined.is-focused{background-color:#fff;color:#209cee}.button.is-info.is-inverted.is-outlined.is-loading:hover::after,.button.is-info.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-info.is-inverted.is-outlined.is-loading:focus::after,.button.is-info.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #209cee #209cee !important}.button.is-info.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-info.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-success{background-color:#22c35b;border-color:transparent;color:#fff}.button.is-success:hover,.button.is-success.is-hovered{background-color:#20b856;border-color:transparent;color:#fff}.button.is-success:focus,.button.is-success.is-focused{border-color:transparent;color:#fff}.button.is-success:focus:not(:active),.button.is-success.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(34,195,91,0.25)}.button.is-success:active,.button.is-success.is-active{background-color:#1ead51;border-color:transparent;color:#fff}.button.is-success[disabled],fieldset[disabled] .button.is-success{background-color:#22c35b;border-color:transparent;box-shadow:none}.button.is-success.is-inverted{background-color:#fff;color:#22c35b}.button.is-success.is-inverted:hover,.button.is-success.is-inverted.is-hovered{background-color:#f2f2f2}.button.is-success.is-inverted[disabled],fieldset[disabled] .button.is-success.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#22c35b}.button.is-success.is-loading::after{border-color:transparent transparent #fff #fff !important}.button.is-success.is-outlined{background-color:transparent;border-color:#22c35b;color:#22c35b}.button.is-success.is-outlined:hover,.button.is-success.is-outlined.is-hovered,.button.is-success.is-outlined:focus,.button.is-success.is-outlined.is-focused{background-color:#22c35b;border-color:#22c35b;color:#fff}.button.is-success.is-outlined.is-loading::after{border-color:transparent transparent #22c35b #22c35b !important}.button.is-success.is-outlined.is-loading:hover::after,.button.is-success.is-outlined.is-loading.is-hovered::after,.button.is-success.is-outlined.is-loading:focus::after,.button.is-success.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}.button.is-success.is-outlined[disabled],fieldset[disabled] .button.is-success.is-outlined{background-color:transparent;border-color:#22c35b;box-shadow:none;color:#22c35b}.button.is-success.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-success.is-inverted.is-outlined:hover,.button.is-success.is-inverted.is-outlined.is-hovered,.button.is-success.is-inverted.is-outlined:focus,.button.is-success.is-inverted.is-outlined.is-focused{background-color:#fff;color:#22c35b}.button.is-success.is-inverted.is-outlined.is-loading:hover::after,.button.is-success.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-success.is-inverted.is-outlined.is-loading:focus::after,.button.is-success.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #22c35b #22c35b !important}.button.is-success.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-success.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-warning{background-color:#ffdd57;border-color:transparent;color:rgba(0,0,0,0.7)}.button.is-warning:hover,.button.is-warning.is-hovered{background-color:#ffda4a;border-color:transparent;color:rgba(0,0,0,0.7)}.button.is-warning:focus,.button.is-warning.is-focused{border-color:transparent;color:rgba(0,0,0,0.7)}.button.is-warning:focus:not(:active),.button.is-warning.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(255,221,87,0.25)}.button.is-warning:active,.button.is-warning.is-active{background-color:#ffd83e;border-color:transparent;color:rgba(0,0,0,0.7)}.button.is-warning[disabled],fieldset[disabled] .button.is-warning{background-color:#ffdd57;border-color:transparent;box-shadow:none}.button.is-warning.is-inverted{background-color:rgba(0,0,0,0.7);color:#ffdd57}.button.is-warning.is-inverted:hover,.button.is-warning.is-inverted.is-hovered{background-color:rgba(0,0,0,0.7)}.button.is-warning.is-inverted[disabled],fieldset[disabled] .button.is-warning.is-inverted{background-color:rgba(0,0,0,0.7);border-color:transparent;box-shadow:none;color:#ffdd57}.button.is-warning.is-loading::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}.button.is-warning.is-outlined{background-color:transparent;border-color:#ffdd57;color:#ffdd57}.button.is-warning.is-outlined:hover,.button.is-warning.is-outlined.is-hovered,.button.is-warning.is-outlined:focus,.button.is-warning.is-outlined.is-focused{background-color:#ffdd57;border-color:#ffdd57;color:rgba(0,0,0,0.7)}.button.is-warning.is-outlined.is-loading::after{border-color:transparent transparent #ffdd57 #ffdd57 !important}.button.is-warning.is-outlined.is-loading:hover::after,.button.is-warning.is-outlined.is-loading.is-hovered::after,.button.is-warning.is-outlined.is-loading:focus::after,.button.is-warning.is-outlined.is-loading.is-focused::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}.button.is-warning.is-outlined[disabled],fieldset[disabled] .button.is-warning.is-outlined{background-color:transparent;border-color:#ffdd57;box-shadow:none;color:#ffdd57}.button.is-warning.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);color:rgba(0,0,0,0.7)}.button.is-warning.is-inverted.is-outlined:hover,.button.is-warning.is-inverted.is-outlined.is-hovered,.button.is-warning.is-inverted.is-outlined:focus,.button.is-warning.is-inverted.is-outlined.is-focused{background-color:rgba(0,0,0,0.7);color:#ffdd57}.button.is-warning.is-inverted.is-outlined.is-loading:hover::after,.button.is-warning.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-warning.is-inverted.is-outlined.is-loading:focus::after,.button.is-warning.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #ffdd57 #ffdd57 !important}.button.is-warning.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-warning.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);box-shadow:none;color:rgba(0,0,0,0.7)}.button.is-danger{background-color:#da0b00;border-color:transparent;color:#fff}.button.is-danger:hover,.button.is-danger.is-hovered{background-color:#cd0a00;border-color:transparent;color:#fff}.button.is-danger:focus,.button.is-danger.is-focused{border-color:transparent;color:#fff}.button.is-danger:focus:not(:active),.button.is-danger.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(218,11,0,0.25)}.button.is-danger:active,.button.is-danger.is-active{background-color:#c10a00;border-color:transparent;color:#fff}.button.is-danger[disabled],fieldset[disabled] .button.is-danger{background-color:#da0b00;border-color:transparent;box-shadow:none}.button.is-danger.is-inverted{background-color:#fff;color:#da0b00}.button.is-danger.is-inverted:hover,.button.is-danger.is-inverted.is-hovered{background-color:#f2f2f2}.button.is-danger.is-inverted[disabled],fieldset[disabled] .button.is-danger.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#da0b00}.button.is-danger.is-loading::after{border-color:transparent transparent #fff #fff !important}.button.is-danger.is-outlined{background-color:transparent;border-color:#da0b00;color:#da0b00}.button.is-danger.is-outlined:hover,.button.is-danger.is-outlined.is-hovered,.button.is-danger.is-outlined:focus,.button.is-danger.is-outlined.is-focused{background-color:#da0b00;border-color:#da0b00;color:#fff}.button.is-danger.is-outlined.is-loading::after{border-color:transparent transparent #da0b00 #da0b00 !important}.button.is-danger.is-outlined.is-loading:hover::after,.button.is-danger.is-outlined.is-loading.is-hovered::after,.button.is-danger.is-outlined.is-loading:focus::after,.button.is-danger.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}.button.is-danger.is-outlined[disabled],fieldset[disabled] .button.is-danger.is-outlined{background-color:transparent;border-color:#da0b00;box-shadow:none;color:#da0b00}.button.is-danger.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-danger.is-inverted.is-outlined:hover,.button.is-danger.is-inverted.is-outlined.is-hovered,.button.is-danger.is-inverted.is-outlined:focus,.button.is-danger.is-inverted.is-outlined.is-focused{background-color:#fff;color:#da0b00}.button.is-danger.is-inverted.is-outlined.is-loading:hover::after,.button.is-danger.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-danger.is-inverted.is-outlined.is-loading:focus::after,.button.is-danger.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #da0b00 #da0b00 !important}.button.is-danger.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-danger.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-small,#documenter .docs-sidebar form.docs-search>input.button{border-radius:2px;font-size:.75rem}.button.is-normal{font-size:1rem}.button.is-medium{font-size:1.25rem}.button.is-large{font-size:1.5rem}.button[disabled],fieldset[disabled] .button{background-color:#fff;border-color:#dbdbdb;box-shadow:none;opacity:.5}.button.is-fullwidth{display:flex;width:100%}.button.is-loading{color:transparent !important;pointer-events:none}.button.is-loading::after{position:absolute;left:calc(50% - (1em / 2));top:calc(50% - (1em / 2));position:absolute !important}.button.is-static{background-color:#f5f5f5;border-color:#dbdbdb;color:#6b6b6b;box-shadow:none;pointer-events:none}.button.is-rounded,#documenter .docs-sidebar form.docs-search>input.button{border-radius:290486px;padding-left:1em;padding-right:1em}.buttons{align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-start}.buttons .button{margin-bottom:0.5rem}.buttons .button:not(:last-child):not(.is-fullwidth){margin-right:0.5rem}.buttons:last-child{margin-bottom:-0.5rem}.buttons:not(:last-child){margin-bottom:1rem}.buttons.are-small .button:not(.is-normal):not(.is-medium):not(.is-large){border-radius:2px;font-size:.75rem}.buttons.are-medium .button:not(.is-small):not(.is-normal):not(.is-large){font-size:1.25rem}.buttons.are-large .button:not(.is-small):not(.is-normal):not(.is-medium){font-size:1.5rem}.buttons.has-addons .button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.buttons.has-addons .button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0;margin-right:-1px}.buttons.has-addons .button:last-child{margin-right:0}.buttons.has-addons .button:hover,.buttons.has-addons .button.is-hovered{z-index:2}.buttons.has-addons .button:focus,.buttons.has-addons .button.is-focused,.buttons.has-addons .button:active,.buttons.has-addons .button.is-active,.buttons.has-addons .button.is-selected{z-index:3}.buttons.has-addons .button:focus:hover,.buttons.has-addons .button.is-focused:hover,.buttons.has-addons .button:active:hover,.buttons.has-addons .button.is-active:hover,.buttons.has-addons .button.is-selected:hover{z-index:4}.buttons.has-addons .button.is-expanded{flex-grow:1;flex-shrink:1}.buttons.is-centered{justify-content:center}.buttons.is-centered:not(.has-addons) .button:not(.is-fullwidth){margin-left:0.25rem;margin-right:0.25rem}.buttons.is-right{justify-content:flex-end}.buttons.is-right:not(.has-addons) .button:not(.is-fullwidth){margin-left:0.25rem;margin-right:0.25rem}.container{flex-grow:1;margin:0 auto;position:relative;width:auto}@media screen and (min-width: 1056px){.container{max-width:992px}.container.is-fluid{margin-left:32px;margin-right:32px;max-width:none}}@media screen and (max-width: 1215px){.container.is-widescreen{max-width:1152px}}@media screen and (max-width: 1407px){.container.is-fullhd{max-width:1344px}}@media screen and (min-width: 1216px){.container{max-width:1152px}}@media screen and (min-width: 1408px){.container{max-width:1344px}}.content li+li{margin-top:0.25em}.content p:not(:last-child),.content dl:not(:last-child),.content ol:not(:last-child),.content ul:not(:last-child),.content blockquote:not(:last-child),.content pre:not(:last-child),.content table:not(:last-child){margin-bottom:1em}.content h1,.content h2,.content h3,.content h4,.content h5,.content h6{color:#222;font-weight:600;line-height:1.125}.content h1{font-size:2em;margin-bottom:0.5em}.content h1:not(:first-child){margin-top:1em}.content h2{font-size:1.75em;margin-bottom:0.5714em}.content h2:not(:first-child){margin-top:1.1428em}.content h3{font-size:1.5em;margin-bottom:0.6666em}.content h3:not(:first-child){margin-top:1.3333em}.content h4{font-size:1.25em;margin-bottom:0.8em}.content h5{font-size:1.125em;margin-bottom:0.8888em}.content h6{font-size:1em;margin-bottom:1em}.content blockquote{background-color:#f5f5f5;border-left:5px solid #dbdbdb;padding:1.25em 1.5em}.content ol{list-style-position:outside;margin-left:2em;margin-top:1em}.content ol:not([type]){list-style-type:decimal}.content ol.is-lower-alpha:not([type]){list-style-type:lower-alpha}.content ol.is-lower-roman:not([type]){list-style-type:lower-roman}.content ol.is-upper-alpha:not([type]){list-style-type:upper-alpha}.content ol.is-upper-roman:not([type]){list-style-type:upper-roman}.content ul{list-style:disc outside;margin-left:2em;margin-top:1em}.content ul ul{list-style-type:circle;margin-top:0.5em}.content ul ul ul{list-style-type:square}.content dd{margin-left:2em}.content figure{margin-left:2em;margin-right:2em;text-align:center}.content figure:not(:first-child){margin-top:2em}.content figure:not(:last-child){margin-bottom:2em}.content figure img{display:inline-block}.content figure figcaption{font-style:italic}.content pre{-webkit-overflow-scrolling:touch;overflow-x:auto;padding:0;white-space:pre;word-wrap:normal}.content sup,.content sub{font-size:75%}.content table{width:100%}.content table td,.content table th{border:1px solid #dbdbdb;border-width:0 0 1px;padding:0.5em 0.75em;vertical-align:top}.content table th{color:#222}.content table th:not([align]){text-align:left}.content table thead td,.content table thead th{border-width:0 0 2px;color:#222}.content table tfoot td,.content table tfoot th{border-width:2px 0 0;color:#222}.content table tbody tr:last-child td,.content table tbody tr:last-child th{border-bottom-width:0}.content .tabs li+li{margin-top:0}.content.is-small,#documenter .docs-sidebar form.docs-search>input.content{font-size:.75rem}.content.is-medium{font-size:1.25rem}.content.is-large{font-size:1.5rem}.icon{align-items:center;display:inline-flex;justify-content:center;height:1.5rem;width:1.5rem}.icon.is-small,#documenter .docs-sidebar form.docs-search>input.icon{height:1rem;width:1rem}.icon.is-medium{height:2rem;width:2rem}.icon.is-large{height:3rem;width:3rem}.image,#documenter .docs-sidebar .docs-logo>img{display:block;position:relative}.image img,#documenter .docs-sidebar .docs-logo>img img{display:block;height:auto;width:100%}.image img.is-rounded,#documenter .docs-sidebar .docs-logo>img img.is-rounded{border-radius:290486px}.image.is-square img,#documenter .docs-sidebar .docs-logo>img.is-square img,.image.is-square .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-square .has-ratio,.image.is-1by1 img,#documenter .docs-sidebar .docs-logo>img.is-1by1 img,.image.is-1by1 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-1by1 .has-ratio,.image.is-5by4 img,#documenter .docs-sidebar .docs-logo>img.is-5by4 img,.image.is-5by4 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-5by4 .has-ratio,.image.is-4by3 img,#documenter .docs-sidebar .docs-logo>img.is-4by3 img,.image.is-4by3 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-4by3 .has-ratio,.image.is-3by2 img,#documenter .docs-sidebar .docs-logo>img.is-3by2 img,.image.is-3by2 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-3by2 .has-ratio,.image.is-5by3 img,#documenter .docs-sidebar .docs-logo>img.is-5by3 img,.image.is-5by3 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-5by3 .has-ratio,.image.is-16by9 img,#documenter .docs-sidebar .docs-logo>img.is-16by9 img,.image.is-16by9 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-16by9 .has-ratio,.image.is-2by1 img,#documenter .docs-sidebar .docs-logo>img.is-2by1 img,.image.is-2by1 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-2by1 .has-ratio,.image.is-3by1 img,#documenter .docs-sidebar .docs-logo>img.is-3by1 img,.image.is-3by1 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-3by1 .has-ratio,.image.is-4by5 img,#documenter .docs-sidebar .docs-logo>img.is-4by5 img,.image.is-4by5 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-4by5 .has-ratio,.image.is-3by4 img,#documenter .docs-sidebar .docs-logo>img.is-3by4 img,.image.is-3by4 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-3by4 .has-ratio,.image.is-2by3 img,#documenter .docs-sidebar .docs-logo>img.is-2by3 img,.image.is-2by3 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-2by3 .has-ratio,.image.is-3by5 img,#documenter .docs-sidebar .docs-logo>img.is-3by5 img,.image.is-3by5 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-3by5 .has-ratio,.image.is-9by16 img,#documenter .docs-sidebar .docs-logo>img.is-9by16 img,.image.is-9by16 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-9by16 .has-ratio,.image.is-1by2 img,#documenter .docs-sidebar .docs-logo>img.is-1by2 img,.image.is-1by2 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-1by2 .has-ratio,.image.is-1by3 img,#documenter .docs-sidebar .docs-logo>img.is-1by3 img,.image.is-1by3 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-1by3 .has-ratio{height:100%;width:100%}.image.is-square,#documenter .docs-sidebar .docs-logo>img.is-square,.image.is-1by1,#documenter .docs-sidebar .docs-logo>img.is-1by1{padding-top:100%}.image.is-5by4,#documenter .docs-sidebar .docs-logo>img.is-5by4{padding-top:80%}.image.is-4by3,#documenter .docs-sidebar .docs-logo>img.is-4by3{padding-top:75%}.image.is-3by2,#documenter .docs-sidebar .docs-logo>img.is-3by2{padding-top:66.6666%}.image.is-5by3,#documenter .docs-sidebar .docs-logo>img.is-5by3{padding-top:60%}.image.is-16by9,#documenter .docs-sidebar .docs-logo>img.is-16by9{padding-top:56.25%}.image.is-2by1,#documenter .docs-sidebar .docs-logo>img.is-2by1{padding-top:50%}.image.is-3by1,#documenter .docs-sidebar .docs-logo>img.is-3by1{padding-top:33.3333%}.image.is-4by5,#documenter .docs-sidebar .docs-logo>img.is-4by5{padding-top:125%}.image.is-3by4,#documenter .docs-sidebar .docs-logo>img.is-3by4{padding-top:133.3333%}.image.is-2by3,#documenter .docs-sidebar .docs-logo>img.is-2by3{padding-top:150%}.image.is-3by5,#documenter .docs-sidebar .docs-logo>img.is-3by5{padding-top:166.6666%}.image.is-9by16,#documenter .docs-sidebar .docs-logo>img.is-9by16{padding-top:177.7777%}.image.is-1by2,#documenter .docs-sidebar .docs-logo>img.is-1by2{padding-top:200%}.image.is-1by3,#documenter .docs-sidebar .docs-logo>img.is-1by3{padding-top:300%}.image.is-16x16,#documenter .docs-sidebar .docs-logo>img.is-16x16{height:16px;width:16px}.image.is-24x24,#documenter .docs-sidebar .docs-logo>img.is-24x24{height:24px;width:24px}.image.is-32x32,#documenter .docs-sidebar .docs-logo>img.is-32x32{height:32px;width:32px}.image.is-48x48,#documenter .docs-sidebar .docs-logo>img.is-48x48{height:48px;width:48px}.image.is-64x64,#documenter .docs-sidebar .docs-logo>img.is-64x64{height:64px;width:64px}.image.is-96x96,#documenter .docs-sidebar .docs-logo>img.is-96x96{height:96px;width:96px}.image.is-128x128,#documenter .docs-sidebar .docs-logo>img.is-128x128{height:128px;width:128px}.notification{background-color:#f5f5f5;border-radius:4px;padding:1.25rem 2.5rem 1.25rem 1.5rem;position:relative}.notification a:not(.button):not(.dropdown-item){color:currentColor;text-decoration:underline}.notification strong{color:currentColor}.notification code,.notification pre{background:#fff}.notification pre code{background:transparent}.notification>.delete{position:absolute;right:0.5rem;top:0.5rem}.notification .title,.notification .subtitle,.notification .content{color:currentColor}.notification.is-white{background-color:#fff;color:#0a0a0a}.notification.is-black{background-color:#0a0a0a;color:#fff}.notification.is-light{background-color:#f5f5f5;color:#363636}.notification.is-dark,.content kbd.notification{background-color:#363636;color:#f5f5f5}.notification.is-primary,.docstring>section>a.notification.docs-sourcelink{background-color:#4eb5de;color:#fff}.notification.is-link{background-color:#2e63b8;color:#fff}.notification.is-info{background-color:#209cee;color:#fff}.notification.is-success{background-color:#22c35b;color:#fff}.notification.is-warning{background-color:#ffdd57;color:rgba(0,0,0,0.7)}.notification.is-danger{background-color:#da0b00;color:#fff}.progress{-moz-appearance:none;-webkit-appearance:none;border:none;border-radius:290486px;display:block;height:1rem;overflow:hidden;padding:0;width:100%}.progress::-webkit-progress-bar{background-color:#dbdbdb}.progress::-webkit-progress-value{background-color:#222}.progress::-moz-progress-bar{background-color:#222}.progress::-ms-fill{background-color:#222;border:none}.progress.is-white::-webkit-progress-value{background-color:#fff}.progress.is-white::-moz-progress-bar{background-color:#fff}.progress.is-white::-ms-fill{background-color:#fff}.progress.is-white:indeterminate{background-image:linear-gradient(to right, #fff 30%, #dbdbdb 30%)}.progress.is-black::-webkit-progress-value{background-color:#0a0a0a}.progress.is-black::-moz-progress-bar{background-color:#0a0a0a}.progress.is-black::-ms-fill{background-color:#0a0a0a}.progress.is-black:indeterminate{background-image:linear-gradient(to right, #0a0a0a 30%, #dbdbdb 30%)}.progress.is-light::-webkit-progress-value{background-color:#f5f5f5}.progress.is-light::-moz-progress-bar{background-color:#f5f5f5}.progress.is-light::-ms-fill{background-color:#f5f5f5}.progress.is-light:indeterminate{background-image:linear-gradient(to right, #f5f5f5 30%, #dbdbdb 30%)}.progress.is-dark::-webkit-progress-value,.content kbd.progress::-webkit-progress-value{background-color:#363636}.progress.is-dark::-moz-progress-bar,.content kbd.progress::-moz-progress-bar{background-color:#363636}.progress.is-dark::-ms-fill,.content kbd.progress::-ms-fill{background-color:#363636}.progress.is-dark:indeterminate,.content kbd.progress:indeterminate{background-image:linear-gradient(to right, #363636 30%, #dbdbdb 30%)}.progress.is-primary::-webkit-progress-value,.docstring>section>a.progress.docs-sourcelink::-webkit-progress-value{background-color:#4eb5de}.progress.is-primary::-moz-progress-bar,.docstring>section>a.progress.docs-sourcelink::-moz-progress-bar{background-color:#4eb5de}.progress.is-primary::-ms-fill,.docstring>section>a.progress.docs-sourcelink::-ms-fill{background-color:#4eb5de}.progress.is-primary:indeterminate,.docstring>section>a.progress.docs-sourcelink:indeterminate{background-image:linear-gradient(to right, #4eb5de 30%, #dbdbdb 30%)}.progress.is-link::-webkit-progress-value{background-color:#2e63b8}.progress.is-link::-moz-progress-bar{background-color:#2e63b8}.progress.is-link::-ms-fill{background-color:#2e63b8}.progress.is-link:indeterminate{background-image:linear-gradient(to right, #2e63b8 30%, #dbdbdb 30%)}.progress.is-info::-webkit-progress-value{background-color:#209cee}.progress.is-info::-moz-progress-bar{background-color:#209cee}.progress.is-info::-ms-fill{background-color:#209cee}.progress.is-info:indeterminate{background-image:linear-gradient(to right, #209cee 30%, #dbdbdb 30%)}.progress.is-success::-webkit-progress-value{background-color:#22c35b}.progress.is-success::-moz-progress-bar{background-color:#22c35b}.progress.is-success::-ms-fill{background-color:#22c35b}.progress.is-success:indeterminate{background-image:linear-gradient(to right, #22c35b 30%, #dbdbdb 30%)}.progress.is-warning::-webkit-progress-value{background-color:#ffdd57}.progress.is-warning::-moz-progress-bar{background-color:#ffdd57}.progress.is-warning::-ms-fill{background-color:#ffdd57}.progress.is-warning:indeterminate{background-image:linear-gradient(to right, #ffdd57 30%, #dbdbdb 30%)}.progress.is-danger::-webkit-progress-value{background-color:#da0b00}.progress.is-danger::-moz-progress-bar{background-color:#da0b00}.progress.is-danger::-ms-fill{background-color:#da0b00}.progress.is-danger:indeterminate{background-image:linear-gradient(to right, #da0b00 30%, #dbdbdb 30%)}.progress:indeterminate{animation-duration:1.5s;animation-iteration-count:infinite;animation-name:moveIndeterminate;animation-timing-function:linear;background-color:#dbdbdb;background-image:linear-gradient(to right, #222 30%, #dbdbdb 30%);background-position:top left;background-repeat:no-repeat;background-size:150% 150%}.progress:indeterminate::-webkit-progress-bar{background-color:transparent}.progress:indeterminate::-moz-progress-bar{background-color:transparent}.progress.is-small,#documenter .docs-sidebar form.docs-search>input.progress{height:.75rem}.progress.is-medium{height:1.25rem}.progress.is-large{height:1.5rem}@keyframes moveIndeterminate{from{background-position:200% 0}to{background-position:-200% 0}}.table{background-color:#fff;color:#363636}.table td,.table th{border:1px solid #dbdbdb;border-width:0 0 1px;padding:0.5em 0.75em;vertical-align:top}.table td.is-white,.table th.is-white{background-color:#fff;border-color:#fff;color:#0a0a0a}.table td.is-black,.table th.is-black{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}.table td.is-light,.table th.is-light{background-color:#f5f5f5;border-color:#f5f5f5;color:#363636}.table td.is-dark,.table th.is-dark{background-color:#363636;border-color:#363636;color:#f5f5f5}.table td.is-primary,.table th.is-primary{background-color:#4eb5de;border-color:#4eb5de;color:#fff}.table td.is-link,.table th.is-link{background-color:#2e63b8;border-color:#2e63b8;color:#fff}.table td.is-info,.table th.is-info{background-color:#209cee;border-color:#209cee;color:#fff}.table td.is-success,.table th.is-success{background-color:#22c35b;border-color:#22c35b;color:#fff}.table td.is-warning,.table th.is-warning{background-color:#ffdd57;border-color:#ffdd57;color:rgba(0,0,0,0.7)}.table td.is-danger,.table th.is-danger{background-color:#da0b00;border-color:#da0b00;color:#fff}.table td.is-narrow,.table th.is-narrow{white-space:nowrap;width:1%}.table td.is-selected,.table th.is-selected{background-color:#4eb5de;color:#fff}.table td.is-selected a,.table td.is-selected strong,.table th.is-selected a,.table th.is-selected strong{color:currentColor}.table th{color:#222}.table th:not([align]){text-align:left}.table tr.is-selected{background-color:#4eb5de;color:#fff}.table tr.is-selected a,.table tr.is-selected strong{color:currentColor}.table tr.is-selected td,.table tr.is-selected th{border-color:#fff;color:currentColor}.table thead{background-color:rgba(0,0,0,0)}.table thead td,.table thead th{border-width:0 0 2px;color:#222}.table tfoot{background-color:rgba(0,0,0,0)}.table tfoot td,.table tfoot th{border-width:2px 0 0;color:#222}.table tbody{background-color:rgba(0,0,0,0)}.table tbody tr:last-child td,.table tbody tr:last-child th{border-bottom-width:0}.table.is-bordered td,.table.is-bordered th{border-width:1px}.table.is-bordered tr:last-child td,.table.is-bordered tr:last-child th{border-bottom-width:1px}.table.is-fullwidth{width:100%}.table.is-hoverable tbody tr:not(.is-selected):hover{background-color:#fafafa}.table.is-hoverable.is-striped tbody tr:not(.is-selected):hover{background-color:#fafafa}.table.is-hoverable.is-striped tbody tr:not(.is-selected):hover:nth-child(even){background-color:#f5f5f5}.table.is-narrow td,.table.is-narrow th{padding:0.25em 0.5em}.table.is-striped tbody tr:not(.is-selected):nth-child(even){background-color:#fafafa}.table-container{-webkit-overflow-scrolling:touch;overflow:auto;overflow-y:hidden;max-width:100%}.tags{align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-start}.tags .tag,.tags .content kbd,.content .tags kbd,.tags .docstring>section>a.docs-sourcelink{margin-bottom:0.5rem}.tags .tag:not(:last-child),.tags .content kbd:not(:last-child),.content .tags kbd:not(:last-child),.tags .docstring>section>a.docs-sourcelink:not(:last-child){margin-right:0.5rem}.tags:last-child{margin-bottom:-0.5rem}.tags:not(:last-child){margin-bottom:1rem}.tags.are-medium .tag:not(.is-normal):not(.is-large),.tags.are-medium .content kbd:not(.is-normal):not(.is-large),.content .tags.are-medium kbd:not(.is-normal):not(.is-large),.tags.are-medium .docstring>section>a.docs-sourcelink:not(.is-normal):not(.is-large){font-size:1rem}.tags.are-large .tag:not(.is-normal):not(.is-medium),.tags.are-large .content kbd:not(.is-normal):not(.is-medium),.content .tags.are-large kbd:not(.is-normal):not(.is-medium),.tags.are-large .docstring>section>a.docs-sourcelink:not(.is-normal):not(.is-medium){font-size:1.25rem}.tags.is-centered{justify-content:center}.tags.is-centered .tag,.tags.is-centered .content kbd,.content .tags.is-centered kbd,.tags.is-centered .docstring>section>a.docs-sourcelink{margin-right:0.25rem;margin-left:0.25rem}.tags.is-right{justify-content:flex-end}.tags.is-right .tag:not(:first-child),.tags.is-right .content kbd:not(:first-child),.content .tags.is-right kbd:not(:first-child),.tags.is-right .docstring>section>a.docs-sourcelink:not(:first-child){margin-left:0.5rem}.tags.is-right .tag:not(:last-child),.tags.is-right .content kbd:not(:last-child),.content .tags.is-right kbd:not(:last-child),.tags.is-right .docstring>section>a.docs-sourcelink:not(:last-child){margin-right:0}.tags.has-addons .tag,.tags.has-addons .content kbd,.content .tags.has-addons kbd,.tags.has-addons .docstring>section>a.docs-sourcelink{margin-right:0}.tags.has-addons .tag:not(:first-child),.tags.has-addons .content kbd:not(:first-child),.content .tags.has-addons kbd:not(:first-child),.tags.has-addons .docstring>section>a.docs-sourcelink:not(:first-child){margin-left:0;border-bottom-left-radius:0;border-top-left-radius:0}.tags.has-addons .tag:not(:last-child),.tags.has-addons .content kbd:not(:last-child),.content .tags.has-addons kbd:not(:last-child),.tags.has-addons .docstring>section>a.docs-sourcelink:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.tag:not(body),.content kbd:not(body),.docstring>section>a.docs-sourcelink:not(body){align-items:center;background-color:#f5f5f5;border-radius:4px;color:#222;display:inline-flex;font-size:.75rem;height:2em;justify-content:center;line-height:1.5;padding-left:0.75em;padding-right:0.75em;white-space:nowrap}.tag:not(body) .delete,.content kbd:not(body) .delete,.docstring>section>a.docs-sourcelink:not(body) .delete{margin-left:0.25rem;margin-right:-0.375rem}.tag.is-white:not(body),.content kbd.is-white:not(body),.docstring>section>a.docs-sourcelink.is-white:not(body){background-color:#fff;color:#0a0a0a}.tag.is-black:not(body),.content kbd.is-black:not(body),.docstring>section>a.docs-sourcelink.is-black:not(body){background-color:#0a0a0a;color:#fff}.tag.is-light:not(body),.content kbd.is-light:not(body),.docstring>section>a.docs-sourcelink.is-light:not(body){background-color:#f5f5f5;color:#363636}.tag.is-dark:not(body),.content kbd:not(body),.docstring>section>a.docs-sourcelink.is-dark:not(body),.content .docstring>section>kbd:not(body){background-color:#363636;color:#f5f5f5}.tag.is-primary:not(body),.content kbd.is-primary:not(body),.docstring>section>a.docs-sourcelink:not(body){background-color:#4eb5de;color:#fff}.tag.is-link:not(body),.content kbd.is-link:not(body),.docstring>section>a.docs-sourcelink.is-link:not(body){background-color:#2e63b8;color:#fff}.tag.is-info:not(body),.content kbd.is-info:not(body),.docstring>section>a.docs-sourcelink.is-info:not(body){background-color:#209cee;color:#fff}.tag.is-success:not(body),.content kbd.is-success:not(body),.docstring>section>a.docs-sourcelink.is-success:not(body){background-color:#22c35b;color:#fff}.tag.is-warning:not(body),.content kbd.is-warning:not(body),.docstring>section>a.docs-sourcelink.is-warning:not(body){background-color:#ffdd57;color:rgba(0,0,0,0.7)}.tag.is-danger:not(body),.content kbd.is-danger:not(body),.docstring>section>a.docs-sourcelink.is-danger:not(body){background-color:#da0b00;color:#fff}.tag.is-normal:not(body),.content kbd.is-normal:not(body),.docstring>section>a.docs-sourcelink.is-normal:not(body){font-size:.75rem}.tag.is-medium:not(body),.content kbd.is-medium:not(body),.docstring>section>a.docs-sourcelink.is-medium:not(body){font-size:1rem}.tag.is-large:not(body),.content kbd.is-large:not(body),.docstring>section>a.docs-sourcelink.is-large:not(body){font-size:1.25rem}.tag:not(body) .icon:first-child:not(:last-child),.content kbd:not(body) .icon:first-child:not(:last-child),.docstring>section>a.docs-sourcelink:not(body) .icon:first-child:not(:last-child){margin-left:-0.375em;margin-right:0.1875em}.tag:not(body) .icon:last-child:not(:first-child),.content kbd:not(body) .icon:last-child:not(:first-child),.docstring>section>a.docs-sourcelink:not(body) .icon:last-child:not(:first-child){margin-left:0.1875em;margin-right:-0.375em}.tag:not(body) .icon:first-child:last-child,.content kbd:not(body) .icon:first-child:last-child,.docstring>section>a.docs-sourcelink:not(body) .icon:first-child:last-child{margin-left:-0.375em;margin-right:-0.375em}.tag.is-delete:not(body),.content kbd.is-delete:not(body),.docstring>section>a.docs-sourcelink.is-delete:not(body){margin-left:1px;padding:0;position:relative;width:2em}.tag.is-delete:not(body)::before,.content kbd.is-delete:not(body)::before,.docstring>section>a.docs-sourcelink.is-delete:not(body)::before,.tag.is-delete:not(body)::after,.content kbd.is-delete:not(body)::after,.docstring>section>a.docs-sourcelink.is-delete:not(body)::after{background-color:currentColor;content:"";display:block;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) rotate(45deg);transform-origin:center center}.tag.is-delete:not(body)::before,.content kbd.is-delete:not(body)::before,.docstring>section>a.docs-sourcelink.is-delete:not(body)::before{height:1px;width:50%}.tag.is-delete:not(body)::after,.content kbd.is-delete:not(body)::after,.docstring>section>a.docs-sourcelink.is-delete:not(body)::after{height:50%;width:1px}.tag.is-delete:not(body):hover,.content kbd.is-delete:not(body):hover,.docstring>section>a.docs-sourcelink.is-delete:not(body):hover,.tag.is-delete:not(body):focus,.content kbd.is-delete:not(body):focus,.docstring>section>a.docs-sourcelink.is-delete:not(body):focus{background-color:#e8e8e8}.tag.is-delete:not(body):active,.content kbd.is-delete:not(body):active,.docstring>section>a.docs-sourcelink.is-delete:not(body):active{background-color:#dbdbdb}.tag.is-rounded:not(body),#documenter .docs-sidebar form.docs-search>input:not(body),.content kbd.is-rounded:not(body),#documenter .docs-sidebar .content form.docs-search>input:not(body),.docstring>section>a.docs-sourcelink.is-rounded:not(body){border-radius:290486px}a.tag:hover,.docstring>section>a.docs-sourcelink:hover{text-decoration:underline}.title,.subtitle{word-break:break-word}.title em,.title span,.subtitle em,.subtitle span{font-weight:inherit}.title sub,.subtitle sub{font-size:.75em}.title sup,.subtitle sup{font-size:.75em}.title .tag,.title .content kbd,.content .title kbd,.title .docstring>section>a.docs-sourcelink,.subtitle .tag,.subtitle .content kbd,.content .subtitle kbd,.subtitle .docstring>section>a.docs-sourcelink{vertical-align:middle}.title{color:#363636;font-size:2rem;font-weight:600;line-height:1.125}.title strong{color:inherit;font-weight:inherit}.title+.highlight{margin-top:-0.75rem}.title:not(.is-spaced)+.subtitle{margin-top:-1.25rem}.title.is-1{font-size:3rem}.title.is-2{font-size:2.5rem}.title.is-3{font-size:2rem}.title.is-4{font-size:1.5rem}.title.is-5{font-size:1.25rem}.title.is-6{font-size:1rem}.title.is-7{font-size:.75rem}.subtitle{color:#4a4a4a;font-size:1.25rem;font-weight:400;line-height:1.25}.subtitle strong{color:#363636;font-weight:600}.subtitle:not(.is-spaced)+.title{margin-top:-1.25rem}.subtitle.is-1{font-size:3rem}.subtitle.is-2{font-size:2.5rem}.subtitle.is-3{font-size:2rem}.subtitle.is-4{font-size:1.5rem}.subtitle.is-5{font-size:1.25rem}.subtitle.is-6{font-size:1rem}.subtitle.is-7{font-size:.75rem}.heading{display:block;font-size:11px;letter-spacing:1px;margin-bottom:5px;text-transform:uppercase}.highlight{font-weight:400;max-width:100%;overflow:hidden;padding:0}.highlight pre{overflow:auto;max-width:100%}.number{align-items:center;background-color:#f5f5f5;border-radius:290486px;display:inline-flex;font-size:1.25rem;height:2em;justify-content:center;margin-right:1.5rem;min-width:2.5em;padding:0.25rem 0.5rem;text-align:center;vertical-align:top}.select select,.textarea,.input,#documenter .docs-sidebar form.docs-search>input{background-color:#fff;border-color:#dbdbdb;border-radius:4px;color:#363636}.select select::-moz-placeholder,.textarea::-moz-placeholder,.input::-moz-placeholder,#documenter .docs-sidebar form.docs-search>input::-moz-placeholder{color:rgba(54,54,54,0.3)}.select select::-webkit-input-placeholder,.textarea::-webkit-input-placeholder,.input::-webkit-input-placeholder,#documenter .docs-sidebar form.docs-search>input::-webkit-input-placeholder{color:rgba(54,54,54,0.3)}.select select:-moz-placeholder,.textarea:-moz-placeholder,.input:-moz-placeholder,#documenter .docs-sidebar form.docs-search>input:-moz-placeholder{color:rgba(54,54,54,0.3)}.select select:-ms-input-placeholder,.textarea:-ms-input-placeholder,.input:-ms-input-placeholder,#documenter .docs-sidebar form.docs-search>input:-ms-input-placeholder{color:rgba(54,54,54,0.3)}.select select:hover,.textarea:hover,.input:hover,#documenter .docs-sidebar form.docs-search>input:hover,.select select.is-hovered,.is-hovered.textarea,.is-hovered.input,#documenter .docs-sidebar form.docs-search>input.is-hovered{border-color:#b5b5b5}.select select:focus,.textarea:focus,.input:focus,#documenter .docs-sidebar form.docs-search>input:focus,.select select.is-focused,.is-focused.textarea,.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.select select:active,.textarea:active,.input:active,#documenter .docs-sidebar form.docs-search>input:active,.select select.is-active,.is-active.textarea,.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active{border-color:#2e63b8;box-shadow:0 0 0 0.125em rgba(46,99,184,0.25)}.select select[disabled],.textarea[disabled],.input[disabled],#documenter .docs-sidebar form.docs-search>input[disabled],fieldset[disabled] .select select,.select fieldset[disabled] select,fieldset[disabled] .textarea,fieldset[disabled] .input,fieldset[disabled] #documenter .docs-sidebar form.docs-search>input,#documenter .docs-sidebar fieldset[disabled] form.docs-search>input{background-color:#f5f5f5;border-color:#f5f5f5;box-shadow:none;color:#6b6b6b}.select select[disabled]::-moz-placeholder,.textarea[disabled]::-moz-placeholder,.input[disabled]::-moz-placeholder,#documenter .docs-sidebar form.docs-search>input[disabled]::-moz-placeholder,fieldset[disabled] .select select::-moz-placeholder,.select fieldset[disabled] select::-moz-placeholder,fieldset[disabled] .textarea::-moz-placeholder,fieldset[disabled] .input::-moz-placeholder,fieldset[disabled] #documenter .docs-sidebar form.docs-search>input::-moz-placeholder,#documenter .docs-sidebar fieldset[disabled] form.docs-search>input::-moz-placeholder{color:rgba(107,107,107,0.3)}.select select[disabled]::-webkit-input-placeholder,.textarea[disabled]::-webkit-input-placeholder,.input[disabled]::-webkit-input-placeholder,#documenter .docs-sidebar form.docs-search>input[disabled]::-webkit-input-placeholder,fieldset[disabled] .select select::-webkit-input-placeholder,.select fieldset[disabled] select::-webkit-input-placeholder,fieldset[disabled] .textarea::-webkit-input-placeholder,fieldset[disabled] .input::-webkit-input-placeholder,fieldset[disabled] #documenter .docs-sidebar form.docs-search>input::-webkit-input-placeholder,#documenter .docs-sidebar fieldset[disabled] form.docs-search>input::-webkit-input-placeholder{color:rgba(107,107,107,0.3)}.select select[disabled]:-moz-placeholder,.textarea[disabled]:-moz-placeholder,.input[disabled]:-moz-placeholder,#documenter .docs-sidebar form.docs-search>input[disabled]:-moz-placeholder,fieldset[disabled] .select select:-moz-placeholder,.select fieldset[disabled] select:-moz-placeholder,fieldset[disabled] .textarea:-moz-placeholder,fieldset[disabled] .input:-moz-placeholder,fieldset[disabled] #documenter .docs-sidebar form.docs-search>input:-moz-placeholder,#documenter .docs-sidebar fieldset[disabled] form.docs-search>input:-moz-placeholder{color:rgba(107,107,107,0.3)}.select select[disabled]:-ms-input-placeholder,.textarea[disabled]:-ms-input-placeholder,.input[disabled]:-ms-input-placeholder,#documenter .docs-sidebar form.docs-search>input[disabled]:-ms-input-placeholder,fieldset[disabled] .select select:-ms-input-placeholder,.select fieldset[disabled] select:-ms-input-placeholder,fieldset[disabled] .textarea:-ms-input-placeholder,fieldset[disabled] .input:-ms-input-placeholder,fieldset[disabled] #documenter .docs-sidebar form.docs-search>input:-ms-input-placeholder,#documenter .docs-sidebar fieldset[disabled] form.docs-search>input:-ms-input-placeholder{color:rgba(107,107,107,0.3)}.textarea,.input,#documenter .docs-sidebar form.docs-search>input{box-shadow:inset 0 1px 2px rgba(10,10,10,0.1);max-width:100%;width:100%}.textarea[readonly],.input[readonly],#documenter .docs-sidebar form.docs-search>input[readonly]{box-shadow:none}.is-white.textarea,.is-white.input,#documenter .docs-sidebar form.docs-search>input.is-white{border-color:#fff}.is-white.textarea:focus,.is-white.input:focus,#documenter .docs-sidebar form.docs-search>input.is-white:focus,.is-white.is-focused.textarea,.is-white.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.is-white.textarea:active,.is-white.input:active,#documenter .docs-sidebar form.docs-search>input.is-white:active,.is-white.is-active.textarea,.is-white.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(255,255,255,0.25)}.is-black.textarea,.is-black.input,#documenter .docs-sidebar form.docs-search>input.is-black{border-color:#0a0a0a}.is-black.textarea:focus,.is-black.input:focus,#documenter .docs-sidebar form.docs-search>input.is-black:focus,.is-black.is-focused.textarea,.is-black.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.is-black.textarea:active,.is-black.input:active,#documenter .docs-sidebar form.docs-search>input.is-black:active,.is-black.is-active.textarea,.is-black.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(10,10,10,0.25)}.is-light.textarea,.is-light.input,#documenter .docs-sidebar form.docs-search>input.is-light{border-color:#f5f5f5}.is-light.textarea:focus,.is-light.input:focus,#documenter .docs-sidebar form.docs-search>input.is-light:focus,.is-light.is-focused.textarea,.is-light.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.is-light.textarea:active,.is-light.input:active,#documenter .docs-sidebar form.docs-search>input.is-light:active,.is-light.is-active.textarea,.is-light.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(245,245,245,0.25)}.is-dark.textarea,.content kbd.textarea,.is-dark.input,#documenter .docs-sidebar form.docs-search>input.is-dark,.content kbd.input{border-color:#363636}.is-dark.textarea:focus,.content kbd.textarea:focus,.is-dark.input:focus,#documenter .docs-sidebar form.docs-search>input.is-dark:focus,.content kbd.input:focus,.is-dark.is-focused.textarea,.content kbd.is-focused.textarea,.is-dark.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.content kbd.is-focused.input,#documenter .docs-sidebar .content form.docs-search>input.is-focused,.is-dark.textarea:active,.content kbd.textarea:active,.is-dark.input:active,#documenter .docs-sidebar form.docs-search>input.is-dark:active,.content kbd.input:active,.is-dark.is-active.textarea,.content kbd.is-active.textarea,.is-dark.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active,.content kbd.is-active.input,#documenter .docs-sidebar .content form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(54,54,54,0.25)}.is-primary.textarea,.docstring>section>a.textarea.docs-sourcelink,.is-primary.input,#documenter .docs-sidebar form.docs-search>input.is-primary,.docstring>section>a.input.docs-sourcelink{border-color:#4eb5de}.is-primary.textarea:focus,.docstring>section>a.textarea.docs-sourcelink:focus,.is-primary.input:focus,#documenter .docs-sidebar form.docs-search>input.is-primary:focus,.docstring>section>a.input.docs-sourcelink:focus,.is-primary.is-focused.textarea,.docstring>section>a.is-focused.textarea.docs-sourcelink,.is-primary.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.docstring>section>a.is-focused.input.docs-sourcelink,.is-primary.textarea:active,.docstring>section>a.textarea.docs-sourcelink:active,.is-primary.input:active,#documenter .docs-sidebar form.docs-search>input.is-primary:active,.docstring>section>a.input.docs-sourcelink:active,.is-primary.is-active.textarea,.docstring>section>a.is-active.textarea.docs-sourcelink,.is-primary.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active,.docstring>section>a.is-active.input.docs-sourcelink{box-shadow:0 0 0 0.125em rgba(78,181,222,0.25)}.is-link.textarea,.is-link.input,#documenter .docs-sidebar form.docs-search>input.is-link{border-color:#2e63b8}.is-link.textarea:focus,.is-link.input:focus,#documenter .docs-sidebar form.docs-search>input.is-link:focus,.is-link.is-focused.textarea,.is-link.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.is-link.textarea:active,.is-link.input:active,#documenter .docs-sidebar form.docs-search>input.is-link:active,.is-link.is-active.textarea,.is-link.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(46,99,184,0.25)}.is-info.textarea,.is-info.input,#documenter .docs-sidebar form.docs-search>input.is-info{border-color:#209cee}.is-info.textarea:focus,.is-info.input:focus,#documenter .docs-sidebar form.docs-search>input.is-info:focus,.is-info.is-focused.textarea,.is-info.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.is-info.textarea:active,.is-info.input:active,#documenter .docs-sidebar form.docs-search>input.is-info:active,.is-info.is-active.textarea,.is-info.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(32,156,238,0.25)}.is-success.textarea,.is-success.input,#documenter .docs-sidebar form.docs-search>input.is-success{border-color:#22c35b}.is-success.textarea:focus,.is-success.input:focus,#documenter .docs-sidebar form.docs-search>input.is-success:focus,.is-success.is-focused.textarea,.is-success.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.is-success.textarea:active,.is-success.input:active,#documenter .docs-sidebar form.docs-search>input.is-success:active,.is-success.is-active.textarea,.is-success.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(34,195,91,0.25)}.is-warning.textarea,.is-warning.input,#documenter .docs-sidebar form.docs-search>input.is-warning{border-color:#ffdd57}.is-warning.textarea:focus,.is-warning.input:focus,#documenter .docs-sidebar form.docs-search>input.is-warning:focus,.is-warning.is-focused.textarea,.is-warning.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.is-warning.textarea:active,.is-warning.input:active,#documenter .docs-sidebar form.docs-search>input.is-warning:active,.is-warning.is-active.textarea,.is-warning.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(255,221,87,0.25)}.is-danger.textarea,.is-danger.input,#documenter .docs-sidebar form.docs-search>input.is-danger{border-color:#da0b00}.is-danger.textarea:focus,.is-danger.input:focus,#documenter .docs-sidebar form.docs-search>input.is-danger:focus,.is-danger.is-focused.textarea,.is-danger.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.is-danger.textarea:active,.is-danger.input:active,#documenter .docs-sidebar form.docs-search>input.is-danger:active,.is-danger.is-active.textarea,.is-danger.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(218,11,0,0.25)}.is-small.textarea,.is-small.input,#documenter .docs-sidebar form.docs-search>input{border-radius:2px;font-size:.75rem}.is-medium.textarea,.is-medium.input,#documenter .docs-sidebar form.docs-search>input.is-medium{font-size:1.25rem}.is-large.textarea,.is-large.input,#documenter .docs-sidebar form.docs-search>input.is-large{font-size:1.5rem}.is-fullwidth.textarea,.is-fullwidth.input,#documenter .docs-sidebar form.docs-search>input.is-fullwidth{display:block;width:100%}.is-inline.textarea,.is-inline.input,#documenter .docs-sidebar form.docs-search>input.is-inline{display:inline;width:auto}.input.is-rounded,#documenter .docs-sidebar form.docs-search>input{border-radius:290486px;padding-left:1em;padding-right:1em}.input.is-static,#documenter .docs-sidebar form.docs-search>input.is-static{background-color:transparent;border-color:transparent;box-shadow:none;padding-left:0;padding-right:0}.textarea{display:block;max-width:100%;min-width:100%;padding:0.625em;resize:vertical}.textarea:not([rows]){max-height:600px;min-height:120px}.textarea[rows]{height:initial}.textarea.has-fixed-size{resize:none}.radio,.checkbox{cursor:pointer;display:inline-block;line-height:1.25;position:relative}.radio input,.checkbox input{cursor:pointer}.radio:hover,.checkbox:hover{color:#363636}.radio[disabled],.checkbox[disabled],fieldset[disabled] .radio,fieldset[disabled] .checkbox{color:#6b6b6b;cursor:not-allowed}.radio+.radio{margin-left:0.5em}.select{display:inline-block;max-width:100%;position:relative;vertical-align:top}.select:not(.is-multiple){height:2.25em}.select:not(.is-multiple):not(.is-loading)::after{border-color:#2e63b8;right:1.125em;z-index:4}.select.is-rounded select,#documenter .docs-sidebar form.docs-search>input.select select{border-radius:290486px;padding-left:1em}.select select{cursor:pointer;display:block;font-size:1em;max-width:100%;outline:none}.select select::-ms-expand{display:none}.select select[disabled]:hover,fieldset[disabled] .select select:hover{border-color:#f5f5f5}.select select:not([multiple]){padding-right:2.5em}.select select[multiple]{height:auto;padding:0}.select select[multiple] option{padding:0.5em 1em}.select:not(.is-multiple):not(.is-loading):hover::after{border-color:#363636}.select.is-white:not(:hover)::after{border-color:#fff}.select.is-white select{border-color:#fff}.select.is-white select:hover,.select.is-white select.is-hovered{border-color:#f2f2f2}.select.is-white select:focus,.select.is-white select.is-focused,.select.is-white select:active,.select.is-white select.is-active{box-shadow:0 0 0 0.125em rgba(255,255,255,0.25)}.select.is-black:not(:hover)::after{border-color:#0a0a0a}.select.is-black select{border-color:#0a0a0a}.select.is-black select:hover,.select.is-black select.is-hovered{border-color:#000}.select.is-black select:focus,.select.is-black select.is-focused,.select.is-black select:active,.select.is-black select.is-active{box-shadow:0 0 0 0.125em rgba(10,10,10,0.25)}.select.is-light:not(:hover)::after{border-color:#f5f5f5}.select.is-light select{border-color:#f5f5f5}.select.is-light select:hover,.select.is-light select.is-hovered{border-color:#e8e8e8}.select.is-light select:focus,.select.is-light select.is-focused,.select.is-light select:active,.select.is-light select.is-active{box-shadow:0 0 0 0.125em rgba(245,245,245,0.25)}.select.is-dark:not(:hover)::after,.content kbd.select:not(:hover)::after{border-color:#363636}.select.is-dark select,.content kbd.select select{border-color:#363636}.select.is-dark select:hover,.content kbd.select select:hover,.select.is-dark select.is-hovered,.content kbd.select select.is-hovered{border-color:#292929}.select.is-dark select:focus,.content kbd.select select:focus,.select.is-dark select.is-focused,.content kbd.select select.is-focused,.select.is-dark select:active,.content kbd.select select:active,.select.is-dark select.is-active,.content kbd.select select.is-active{box-shadow:0 0 0 0.125em rgba(54,54,54,0.25)}.select.is-primary:not(:hover)::after,.docstring>section>a.select.docs-sourcelink:not(:hover)::after{border-color:#4eb5de}.select.is-primary select,.docstring>section>a.select.docs-sourcelink select{border-color:#4eb5de}.select.is-primary select:hover,.docstring>section>a.select.docs-sourcelink select:hover,.select.is-primary select.is-hovered,.docstring>section>a.select.docs-sourcelink select.is-hovered{border-color:#39acda}.select.is-primary select:focus,.docstring>section>a.select.docs-sourcelink select:focus,.select.is-primary select.is-focused,.docstring>section>a.select.docs-sourcelink select.is-focused,.select.is-primary select:active,.docstring>section>a.select.docs-sourcelink select:active,.select.is-primary select.is-active,.docstring>section>a.select.docs-sourcelink select.is-active{box-shadow:0 0 0 0.125em rgba(78,181,222,0.25)}.select.is-link:not(:hover)::after{border-color:#2e63b8}.select.is-link select{border-color:#2e63b8}.select.is-link select:hover,.select.is-link select.is-hovered{border-color:#2958a4}.select.is-link select:focus,.select.is-link select.is-focused,.select.is-link select:active,.select.is-link select.is-active{box-shadow:0 0 0 0.125em rgba(46,99,184,0.25)}.select.is-info:not(:hover)::after{border-color:#209cee}.select.is-info select{border-color:#209cee}.select.is-info select:hover,.select.is-info select.is-hovered{border-color:#1190e3}.select.is-info select:focus,.select.is-info select.is-focused,.select.is-info select:active,.select.is-info select.is-active{box-shadow:0 0 0 0.125em rgba(32,156,238,0.25)}.select.is-success:not(:hover)::after{border-color:#22c35b}.select.is-success select{border-color:#22c35b}.select.is-success select:hover,.select.is-success select.is-hovered{border-color:#1ead51}.select.is-success select:focus,.select.is-success select.is-focused,.select.is-success select:active,.select.is-success select.is-active{box-shadow:0 0 0 0.125em rgba(34,195,91,0.25)}.select.is-warning:not(:hover)::after{border-color:#ffdd57}.select.is-warning select{border-color:#ffdd57}.select.is-warning select:hover,.select.is-warning select.is-hovered{border-color:#ffd83e}.select.is-warning select:focus,.select.is-warning select.is-focused,.select.is-warning select:active,.select.is-warning select.is-active{box-shadow:0 0 0 0.125em rgba(255,221,87,0.25)}.select.is-danger:not(:hover)::after{border-color:#da0b00}.select.is-danger select{border-color:#da0b00}.select.is-danger select:hover,.select.is-danger select.is-hovered{border-color:#c10a00}.select.is-danger select:focus,.select.is-danger select.is-focused,.select.is-danger select:active,.select.is-danger select.is-active{box-shadow:0 0 0 0.125em rgba(218,11,0,0.25)}.select.is-small,#documenter .docs-sidebar form.docs-search>input.select{border-radius:2px;font-size:.75rem}.select.is-medium{font-size:1.25rem}.select.is-large{font-size:1.5rem}.select.is-disabled::after{border-color:#6b6b6b}.select.is-fullwidth{width:100%}.select.is-fullwidth select{width:100%}.select.is-loading::after{margin-top:0;position:absolute;right:0.625em;top:0.625em;transform:none}.select.is-loading.is-small:after,#documenter .docs-sidebar form.docs-search>input.is-loading:after{font-size:.75rem}.select.is-loading.is-medium:after{font-size:1.25rem}.select.is-loading.is-large:after{font-size:1.5rem}.file{align-items:stretch;display:flex;justify-content:flex-start;position:relative}.file.is-white .file-cta{background-color:#fff;border-color:transparent;color:#0a0a0a}.file.is-white:hover .file-cta,.file.is-white.is-hovered .file-cta{background-color:#f9f9f9;border-color:transparent;color:#0a0a0a}.file.is-white:focus .file-cta,.file.is-white.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(255,255,255,0.25);color:#0a0a0a}.file.is-white:active .file-cta,.file.is-white.is-active .file-cta{background-color:#f2f2f2;border-color:transparent;color:#0a0a0a}.file.is-black .file-cta{background-color:#0a0a0a;border-color:transparent;color:#fff}.file.is-black:hover .file-cta,.file.is-black.is-hovered .file-cta{background-color:#040404;border-color:transparent;color:#fff}.file.is-black:focus .file-cta,.file.is-black.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(10,10,10,0.25);color:#fff}.file.is-black:active .file-cta,.file.is-black.is-active .file-cta{background-color:#000;border-color:transparent;color:#fff}.file.is-light .file-cta{background-color:#f5f5f5;border-color:transparent;color:#363636}.file.is-light:hover .file-cta,.file.is-light.is-hovered .file-cta{background-color:#eee;border-color:transparent;color:#363636}.file.is-light:focus .file-cta,.file.is-light.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(245,245,245,0.25);color:#363636}.file.is-light:active .file-cta,.file.is-light.is-active .file-cta{background-color:#e8e8e8;border-color:transparent;color:#363636}.file.is-dark .file-cta,.content kbd.file .file-cta{background-color:#363636;border-color:transparent;color:#f5f5f5}.file.is-dark:hover .file-cta,.content kbd.file:hover .file-cta,.file.is-dark.is-hovered .file-cta,.content kbd.file.is-hovered .file-cta{background-color:#2f2f2f;border-color:transparent;color:#f5f5f5}.file.is-dark:focus .file-cta,.content kbd.file:focus .file-cta,.file.is-dark.is-focused .file-cta,.content kbd.file.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(54,54,54,0.25);color:#f5f5f5}.file.is-dark:active .file-cta,.content kbd.file:active .file-cta,.file.is-dark.is-active .file-cta,.content kbd.file.is-active .file-cta{background-color:#292929;border-color:transparent;color:#f5f5f5}.file.is-primary .file-cta,.docstring>section>a.file.docs-sourcelink .file-cta{background-color:#4eb5de;border-color:transparent;color:#fff}.file.is-primary:hover .file-cta,.docstring>section>a.file.docs-sourcelink:hover .file-cta,.file.is-primary.is-hovered .file-cta,.docstring>section>a.file.is-hovered.docs-sourcelink .file-cta{background-color:#43b1dc;border-color:transparent;color:#fff}.file.is-primary:focus .file-cta,.docstring>section>a.file.docs-sourcelink:focus .file-cta,.file.is-primary.is-focused .file-cta,.docstring>section>a.file.is-focused.docs-sourcelink .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(78,181,222,0.25);color:#fff}.file.is-primary:active .file-cta,.docstring>section>a.file.docs-sourcelink:active .file-cta,.file.is-primary.is-active .file-cta,.docstring>section>a.file.is-active.docs-sourcelink .file-cta{background-color:#39acda;border-color:transparent;color:#fff}.file.is-link .file-cta{background-color:#2e63b8;border-color:transparent;color:#fff}.file.is-link:hover .file-cta,.file.is-link.is-hovered .file-cta{background-color:#2b5eae;border-color:transparent;color:#fff}.file.is-link:focus .file-cta,.file.is-link.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(46,99,184,0.25);color:#fff}.file.is-link:active .file-cta,.file.is-link.is-active .file-cta{background-color:#2958a4;border-color:transparent;color:#fff}.file.is-info .file-cta{background-color:#209cee;border-color:transparent;color:#fff}.file.is-info:hover .file-cta,.file.is-info.is-hovered .file-cta{background-color:#1497ed;border-color:transparent;color:#fff}.file.is-info:focus .file-cta,.file.is-info.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(32,156,238,0.25);color:#fff}.file.is-info:active .file-cta,.file.is-info.is-active .file-cta{background-color:#1190e3;border-color:transparent;color:#fff}.file.is-success .file-cta{background-color:#22c35b;border-color:transparent;color:#fff}.file.is-success:hover .file-cta,.file.is-success.is-hovered .file-cta{background-color:#20b856;border-color:transparent;color:#fff}.file.is-success:focus .file-cta,.file.is-success.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(34,195,91,0.25);color:#fff}.file.is-success:active .file-cta,.file.is-success.is-active .file-cta{background-color:#1ead51;border-color:transparent;color:#fff}.file.is-warning .file-cta{background-color:#ffdd57;border-color:transparent;color:rgba(0,0,0,0.7)}.file.is-warning:hover .file-cta,.file.is-warning.is-hovered .file-cta{background-color:#ffda4a;border-color:transparent;color:rgba(0,0,0,0.7)}.file.is-warning:focus .file-cta,.file.is-warning.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(255,221,87,0.25);color:rgba(0,0,0,0.7)}.file.is-warning:active .file-cta,.file.is-warning.is-active .file-cta{background-color:#ffd83e;border-color:transparent;color:rgba(0,0,0,0.7)}.file.is-danger .file-cta{background-color:#da0b00;border-color:transparent;color:#fff}.file.is-danger:hover .file-cta,.file.is-danger.is-hovered .file-cta{background-color:#cd0a00;border-color:transparent;color:#fff}.file.is-danger:focus .file-cta,.file.is-danger.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(218,11,0,0.25);color:#fff}.file.is-danger:active .file-cta,.file.is-danger.is-active .file-cta{background-color:#c10a00;border-color:transparent;color:#fff}.file.is-small,#documenter .docs-sidebar form.docs-search>input.file{font-size:.75rem}.file.is-medium{font-size:1.25rem}.file.is-medium .file-icon .fa{font-size:21px}.file.is-large{font-size:1.5rem}.file.is-large .file-icon .fa{font-size:28px}.file.has-name .file-cta{border-bottom-right-radius:0;border-top-right-radius:0}.file.has-name .file-name{border-bottom-left-radius:0;border-top-left-radius:0}.file.has-name.is-empty .file-cta{border-radius:4px}.file.has-name.is-empty .file-name{display:none}.file.is-boxed .file-label{flex-direction:column}.file.is-boxed .file-cta{flex-direction:column;height:auto;padding:1em 3em}.file.is-boxed .file-name{border-width:0 1px 1px}.file.is-boxed .file-icon{height:1.5em;width:1.5em}.file.is-boxed .file-icon .fa{font-size:21px}.file.is-boxed.is-small .file-icon .fa,#documenter .docs-sidebar form.docs-search>input.is-boxed .file-icon .fa{font-size:14px}.file.is-boxed.is-medium .file-icon .fa{font-size:28px}.file.is-boxed.is-large .file-icon .fa{font-size:35px}.file.is-boxed.has-name .file-cta{border-radius:4px 4px 0 0}.file.is-boxed.has-name .file-name{border-radius:0 0 4px 4px;border-width:0 1px 1px}.file.is-centered{justify-content:center}.file.is-fullwidth .file-label{width:100%}.file.is-fullwidth .file-name{flex-grow:1;max-width:none}.file.is-right{justify-content:flex-end}.file.is-right .file-cta{border-radius:0 4px 4px 0}.file.is-right .file-name{border-radius:4px 0 0 4px;border-width:1px 0 1px 1px;order:-1}.file-label{align-items:stretch;display:flex;cursor:pointer;justify-content:flex-start;overflow:hidden;position:relative}.file-label:hover .file-cta{background-color:#eee;color:#363636}.file-label:hover .file-name{border-color:#d5d5d5}.file-label:active .file-cta{background-color:#e8e8e8;color:#363636}.file-label:active .file-name{border-color:#cfcfcf}.file-input{height:100%;left:0;opacity:0;outline:none;position:absolute;top:0;width:100%}.file-cta,.file-name{border-color:#dbdbdb;border-radius:4px;font-size:1em;padding-left:1em;padding-right:1em;white-space:nowrap}.file-cta{background-color:#f5f5f5;color:#4a4a4a}.file-name{border-color:#dbdbdb;border-style:solid;border-width:1px 1px 1px 0;display:block;max-width:16em;overflow:hidden;text-align:left;text-overflow:ellipsis}.file-icon{align-items:center;display:flex;height:1em;justify-content:center;margin-right:0.5em;width:1em}.file-icon .fa{font-size:14px}.label{color:#363636;display:block;font-size:1rem;font-weight:700}.label:not(:last-child){margin-bottom:0.5em}.label.is-small,#documenter .docs-sidebar form.docs-search>input.label{font-size:.75rem}.label.is-medium{font-size:1.25rem}.label.is-large{font-size:1.5rem}.help{display:block;font-size:.75rem;margin-top:0.25rem}.help.is-white{color:#fff}.help.is-black{color:#0a0a0a}.help.is-light{color:#f5f5f5}.help.is-dark,.content kbd.help{color:#363636}.help.is-primary,.docstring>section>a.help.docs-sourcelink{color:#4eb5de}.help.is-link{color:#2e63b8}.help.is-info{color:#209cee}.help.is-success{color:#22c35b}.help.is-warning{color:#ffdd57}.help.is-danger{color:#da0b00}.field:not(:last-child){margin-bottom:0.75rem}.field.has-addons{display:flex;justify-content:flex-start}.field.has-addons .control:not(:last-child){margin-right:-1px}.field.has-addons .control:not(:first-child):not(:last-child) .button,.field.has-addons .control:not(:first-child):not(:last-child) .input,.field.has-addons .control:not(:first-child):not(:last-child) #documenter .docs-sidebar form.docs-search>input,#documenter .docs-sidebar .field.has-addons .control:not(:first-child):not(:last-child) form.docs-search>input,.field.has-addons .control:not(:first-child):not(:last-child) .select select{border-radius:0}.field.has-addons .control:first-child:not(:only-child) .button,.field.has-addons .control:first-child:not(:only-child) .input,.field.has-addons .control:first-child:not(:only-child) #documenter .docs-sidebar form.docs-search>input,#documenter .docs-sidebar .field.has-addons .control:first-child:not(:only-child) form.docs-search>input,.field.has-addons .control:first-child:not(:only-child) .select select{border-bottom-right-radius:0;border-top-right-radius:0}.field.has-addons .control:last-child:not(:only-child) .button,.field.has-addons .control:last-child:not(:only-child) .input,.field.has-addons .control:last-child:not(:only-child) #documenter .docs-sidebar form.docs-search>input,#documenter .docs-sidebar .field.has-addons .control:last-child:not(:only-child) form.docs-search>input,.field.has-addons .control:last-child:not(:only-child) .select select{border-bottom-left-radius:0;border-top-left-radius:0}.field.has-addons .control .button:not([disabled]):hover,.field.has-addons .control .button.is-hovered:not([disabled]),.field.has-addons .control .input:not([disabled]):hover,.field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):hover,#documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):hover,.field.has-addons .control .input.is-hovered:not([disabled]),.field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-hovered:not([disabled]),#documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-hovered:not([disabled]),.field.has-addons .control .select select:not([disabled]):hover,.field.has-addons .control .select select.is-hovered:not([disabled]){z-index:2}.field.has-addons .control .button:not([disabled]):focus,.field.has-addons .control .button.is-focused:not([disabled]),.field.has-addons .control .button:not([disabled]):active,.field.has-addons .control .button.is-active:not([disabled]),.field.has-addons .control .input:not([disabled]):focus,.field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):focus,#documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):focus,.field.has-addons .control .input.is-focused:not([disabled]),.field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-focused:not([disabled]),#documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-focused:not([disabled]),.field.has-addons .control .input:not([disabled]):active,.field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):active,#documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):active,.field.has-addons .control .input.is-active:not([disabled]),.field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-active:not([disabled]),#documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-active:not([disabled]),.field.has-addons .control .select select:not([disabled]):focus,.field.has-addons .control .select select.is-focused:not([disabled]),.field.has-addons .control .select select:not([disabled]):active,.field.has-addons .control .select select.is-active:not([disabled]){z-index:3}.field.has-addons .control .button:not([disabled]):focus:hover,.field.has-addons .control .button.is-focused:not([disabled]):hover,.field.has-addons .control .button:not([disabled]):active:hover,.field.has-addons .control .button.is-active:not([disabled]):hover,.field.has-addons .control .input:not([disabled]):focus:hover,.field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):focus:hover,#documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):focus:hover,.field.has-addons .control .input.is-focused:not([disabled]):hover,.field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-focused:not([disabled]):hover,#documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-focused:not([disabled]):hover,.field.has-addons .control .input:not([disabled]):active:hover,.field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):active:hover,#documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):active:hover,.field.has-addons .control .input.is-active:not([disabled]):hover,.field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-active:not([disabled]):hover,#documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-active:not([disabled]):hover,.field.has-addons .control .select select:not([disabled]):focus:hover,.field.has-addons .control .select select.is-focused:not([disabled]):hover,.field.has-addons .control .select select:not([disabled]):active:hover,.field.has-addons .control .select select.is-active:not([disabled]):hover{z-index:4}.field.has-addons .control.is-expanded{flex-grow:1;flex-shrink:1}.field.has-addons.has-addons-centered{justify-content:center}.field.has-addons.has-addons-right{justify-content:flex-end}.field.has-addons.has-addons-fullwidth .control{flex-grow:1;flex-shrink:0}.field.is-grouped{display:flex;justify-content:flex-start}.field.is-grouped>.control{flex-shrink:0}.field.is-grouped>.control:not(:last-child){margin-bottom:0;margin-right:0.75rem}.field.is-grouped>.control.is-expanded{flex-grow:1;flex-shrink:1}.field.is-grouped.is-grouped-centered{justify-content:center}.field.is-grouped.is-grouped-right{justify-content:flex-end}.field.is-grouped.is-grouped-multiline{flex-wrap:wrap}.field.is-grouped.is-grouped-multiline>.control:last-child,.field.is-grouped.is-grouped-multiline>.control:not(:last-child){margin-bottom:0.75rem}.field.is-grouped.is-grouped-multiline:last-child{margin-bottom:-0.75rem}.field.is-grouped.is-grouped-multiline:not(:last-child){margin-bottom:0}@media screen and (min-width: 769px),print{.field.is-horizontal{display:flex}}.field-label .label{font-size:inherit}@media screen and (max-width: 768px){.field-label{margin-bottom:0.5rem}}@media screen and (min-width: 769px),print{.field-label{flex-basis:0;flex-grow:1;flex-shrink:0;margin-right:1.5rem;text-align:right}.field-label.is-small,#documenter .docs-sidebar form.docs-search>input.field-label{font-size:.75rem;padding-top:0.375em}.field-label.is-normal{padding-top:0.375em}.field-label.is-medium{font-size:1.25rem;padding-top:0.375em}.field-label.is-large{font-size:1.5rem;padding-top:0.375em}}.field-body .field .field{margin-bottom:0}@media screen and (min-width: 769px),print{.field-body{display:flex;flex-basis:0;flex-grow:5;flex-shrink:1}.field-body .field{margin-bottom:0}.field-body>.field{flex-shrink:1}.field-body>.field:not(.is-narrow){flex-grow:1}.field-body>.field:not(:last-child){margin-right:0.75rem}}.control{box-sizing:border-box;clear:both;font-size:1rem;position:relative;text-align:left}.control.has-icons-left .input:focus~.icon,.control.has-icons-left #documenter .docs-sidebar form.docs-search>input:focus~.icon,#documenter .docs-sidebar .control.has-icons-left form.docs-search>input:focus~.icon,.control.has-icons-left .select:focus~.icon,.control.has-icons-right .input:focus~.icon,.control.has-icons-right #documenter .docs-sidebar form.docs-search>input:focus~.icon,#documenter .docs-sidebar .control.has-icons-right form.docs-search>input:focus~.icon,.control.has-icons-right .select:focus~.icon{color:#6b6b6b}.control.has-icons-left .input.is-small~.icon,.control.has-icons-left #documenter .docs-sidebar form.docs-search>input~.icon,#documenter .docs-sidebar .control.has-icons-left form.docs-search>input~.icon,.control.has-icons-left .select.is-small~.icon,.control.has-icons-right .input.is-small~.icon,.control.has-icons-right #documenter .docs-sidebar form.docs-search>input~.icon,#documenter .docs-sidebar .control.has-icons-right form.docs-search>input~.icon,.control.has-icons-right .select.is-small~.icon{font-size:.75rem}.control.has-icons-left .input.is-medium~.icon,.control.has-icons-left #documenter .docs-sidebar form.docs-search>input.is-medium~.icon,#documenter .docs-sidebar .control.has-icons-left form.docs-search>input.is-medium~.icon,.control.has-icons-left .select.is-medium~.icon,.control.has-icons-right .input.is-medium~.icon,.control.has-icons-right #documenter .docs-sidebar form.docs-search>input.is-medium~.icon,#documenter .docs-sidebar .control.has-icons-right form.docs-search>input.is-medium~.icon,.control.has-icons-right .select.is-medium~.icon{font-size:1.25rem}.control.has-icons-left .input.is-large~.icon,.control.has-icons-left #documenter .docs-sidebar form.docs-search>input.is-large~.icon,#documenter .docs-sidebar .control.has-icons-left form.docs-search>input.is-large~.icon,.control.has-icons-left .select.is-large~.icon,.control.has-icons-right .input.is-large~.icon,.control.has-icons-right #documenter .docs-sidebar form.docs-search>input.is-large~.icon,#documenter .docs-sidebar .control.has-icons-right form.docs-search>input.is-large~.icon,.control.has-icons-right .select.is-large~.icon{font-size:1.5rem}.control.has-icons-left .icon,.control.has-icons-right .icon{color:#dbdbdb;height:2.25em;pointer-events:none;position:absolute;top:0;width:2.25em;z-index:4}.control.has-icons-left .input,.control.has-icons-left #documenter .docs-sidebar form.docs-search>input,#documenter .docs-sidebar .control.has-icons-left form.docs-search>input,.control.has-icons-left .select select{padding-left:2.25em}.control.has-icons-left .icon.is-left{left:0}.control.has-icons-right .input,.control.has-icons-right #documenter .docs-sidebar form.docs-search>input,#documenter .docs-sidebar .control.has-icons-right form.docs-search>input,.control.has-icons-right .select select{padding-right:2.25em}.control.has-icons-right .icon.is-right{right:0}.control.is-loading::after{position:absolute !important;right:0.625em;top:0.625em;z-index:4}.control.is-loading.is-small:after,#documenter .docs-sidebar form.docs-search>input.is-loading:after{font-size:.75rem}.control.is-loading.is-medium:after{font-size:1.25rem}.control.is-loading.is-large:after{font-size:1.5rem}.breadcrumb{font-size:1rem;white-space:nowrap}.breadcrumb a{align-items:center;color:#2e63b8;display:flex;justify-content:center;padding:0 .75em}.breadcrumb a:hover{color:#363636}.breadcrumb li{align-items:center;display:flex}.breadcrumb li:first-child a{padding-left:0}.breadcrumb li.is-active a{color:#222;cursor:default;pointer-events:none}.breadcrumb li+li::before{color:#b5b5b5;content:"\0002f"}.breadcrumb ul,.breadcrumb ol{align-items:flex-start;display:flex;flex-wrap:wrap;justify-content:flex-start}.breadcrumb .icon:first-child{margin-right:0.5em}.breadcrumb .icon:last-child{margin-left:0.5em}.breadcrumb.is-centered ol,.breadcrumb.is-centered ul{justify-content:center}.breadcrumb.is-right ol,.breadcrumb.is-right ul{justify-content:flex-end}.breadcrumb.is-small,#documenter .docs-sidebar form.docs-search>input.breadcrumb{font-size:.75rem}.breadcrumb.is-medium{font-size:1.25rem}.breadcrumb.is-large{font-size:1.5rem}.breadcrumb.has-arrow-separator li+li::before{content:"\02192"}.breadcrumb.has-bullet-separator li+li::before{content:"\02022"}.breadcrumb.has-dot-separator li+li::before{content:"\000b7"}.breadcrumb.has-succeeds-separator li+li::before{content:"\0227B"}.card{background-color:#fff;box-shadow:0 2px 3px rgba(10,10,10,0.1),0 0 0 1px rgba(10,10,10,0.1);color:#222;max-width:100%;position:relative}.card-header{background-color:rgba(0,0,0,0);align-items:stretch;box-shadow:0 1px 2px rgba(10,10,10,0.1);display:flex}.card-header-title{align-items:center;color:#222;display:flex;flex-grow:1;font-weight:700;padding:.75rem}.card-header-title.is-centered{justify-content:center}.card-header-icon{align-items:center;cursor:pointer;display:flex;justify-content:center;padding:.75rem}.card-image{display:block;position:relative}.card-content{background-color:rgba(0,0,0,0);padding:1.5rem}.card-footer{background-color:rgba(0,0,0,0);border-top:1px solid #dbdbdb;align-items:stretch;display:flex}.card-footer-item{align-items:center;display:flex;flex-basis:0;flex-grow:1;flex-shrink:0;justify-content:center;padding:.75rem}.card-footer-item:not(:last-child){border-right:1px solid #dbdbdb}.card .media:not(:last-child){margin-bottom:1.5rem}.dropdown{display:inline-flex;position:relative;vertical-align:top}.dropdown.is-active .dropdown-menu,.dropdown.is-hoverable:hover .dropdown-menu{display:block}.dropdown.is-right .dropdown-menu{left:auto;right:0}.dropdown.is-up .dropdown-menu{bottom:100%;padding-bottom:4px;padding-top:initial;top:auto}.dropdown-menu{display:none;left:0;min-width:12rem;padding-top:4px;position:absolute;top:100%;z-index:20}.dropdown-content{background-color:#fff;border-radius:4px;box-shadow:0 2px 3px rgba(10,10,10,0.1),0 0 0 1px rgba(10,10,10,0.1);padding-bottom:.5rem;padding-top:.5rem}.dropdown-item{color:#4a4a4a;display:block;font-size:0.875rem;line-height:1.5;padding:0.375rem 1rem;position:relative}a.dropdown-item,button.dropdown-item{padding-right:3rem;text-align:left;white-space:nowrap;width:100%}a.dropdown-item:hover,button.dropdown-item:hover{background-color:#f5f5f5;color:#0a0a0a}a.dropdown-item.is-active,button.dropdown-item.is-active{background-color:#2e63b8;color:#fff}.dropdown-divider{background-color:#dbdbdb;border:none;display:block;height:1px;margin:0.5rem 0}.level{align-items:center;justify-content:space-between}.level code{border-radius:4px}.level img{display:inline-block;vertical-align:top}.level.is-mobile{display:flex}.level.is-mobile .level-left,.level.is-mobile .level-right{display:flex}.level.is-mobile .level-left+.level-right{margin-top:0}.level.is-mobile .level-item:not(:last-child){margin-bottom:0;margin-right:.75rem}.level.is-mobile .level-item:not(.is-narrow){flex-grow:1}@media screen and (min-width: 769px),print{.level{display:flex}.level>.level-item:not(.is-narrow){flex-grow:1}}.level-item{align-items:center;display:flex;flex-basis:auto;flex-grow:0;flex-shrink:0;justify-content:center}.level-item .title,.level-item .subtitle{margin-bottom:0}@media screen and (max-width: 768px){.level-item:not(:last-child){margin-bottom:.75rem}}.level-left,.level-right{flex-basis:auto;flex-grow:0;flex-shrink:0}.level-left .level-item.is-flexible,.level-right .level-item.is-flexible{flex-grow:1}@media screen and (min-width: 769px),print{.level-left .level-item:not(:last-child),.level-right .level-item:not(:last-child){margin-right:.75rem}}.level-left{align-items:center;justify-content:flex-start}@media screen and (max-width: 768px){.level-left+.level-right{margin-top:1.5rem}}@media screen and (min-width: 769px),print{.level-left{display:flex}}.level-right{align-items:center;justify-content:flex-end}@media screen and (min-width: 769px),print{.level-right{display:flex}}.list{background-color:#fff;border-radius:4px;box-shadow:0 2px 3px rgba(10,10,10,0.1),0 0 0 1px rgba(10,10,10,0.1)}.list-item{display:block;padding:0.5em 1em}.list-item:not(a){color:#222}.list-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-item:last-child{border-bottom-left-radius:4px;border-bottom-right-radius:4px}.list-item:not(:last-child){border-bottom:1px solid #dbdbdb}.list-item.is-active{background-color:#2e63b8;color:#fff}a.list-item{background-color:#f5f5f5;cursor:pointer}.media{align-items:flex-start;display:flex;text-align:left}.media .content:not(:last-child){margin-bottom:0.75rem}.media .media{border-top:1px solid rgba(219,219,219,0.5);display:flex;padding-top:0.75rem}.media .media .content:not(:last-child),.media .media .control:not(:last-child){margin-bottom:0.5rem}.media .media .media{padding-top:0.5rem}.media .media .media+.media{margin-top:0.5rem}.media+.media{border-top:1px solid rgba(219,219,219,0.5);margin-top:1rem;padding-top:1rem}.media.is-large+.media{margin-top:1.5rem;padding-top:1.5rem}.media-left,.media-right{flex-basis:auto;flex-grow:0;flex-shrink:0}.media-left{margin-right:1rem}.media-right{margin-left:1rem}.media-content{flex-basis:auto;flex-grow:1;flex-shrink:1;text-align:left}@media screen and (max-width: 768px){.media-content{overflow-x:auto}}.menu{font-size:1rem}.menu.is-small,#documenter .docs-sidebar form.docs-search>input.menu{font-size:.75rem}.menu.is-medium{font-size:1.25rem}.menu.is-large{font-size:1.5rem}.menu-list{line-height:1.25}.menu-list a{border-radius:2px;color:#222;display:block;padding:0.5em 0.75em}.menu-list a:hover{background-color:#f5f5f5;color:#222}.menu-list a.is-active{background-color:#2e63b8;color:#fff}.menu-list li ul{border-left:1px solid #dbdbdb;margin:.75em;padding-left:.75em}.menu-label{color:#6b6b6b;font-size:.75em;letter-spacing:.1em;text-transform:uppercase}.menu-label:not(:first-child){margin-top:1em}.menu-label:not(:last-child){margin-bottom:1em}.message{background-color:#f5f5f5;border-radius:4px;font-size:1rem}.message strong{color:currentColor}.message a:not(.button):not(.tag):not(.dropdown-item){color:currentColor;text-decoration:underline}.message.is-small,#documenter .docs-sidebar form.docs-search>input.message{font-size:.75rem}.message.is-medium{font-size:1.25rem}.message.is-large{font-size:1.5rem}.message.is-white{background-color:#fff}.message.is-white .message-header{background-color:#fff;color:#0a0a0a}.message.is-white .message-body{border-color:#fff;color:#4d4d4d}.message.is-black{background-color:#fafafa}.message.is-black .message-header{background-color:#0a0a0a;color:#fff}.message.is-black .message-body{border-color:#0a0a0a;color:#090909}.message.is-light{background-color:#fafafa}.message.is-light .message-header{background-color:#f5f5f5;color:#363636}.message.is-light .message-body{border-color:#f5f5f5;color:#505050}.message.is-dark,.content kbd.message{background-color:#fafafa}.message.is-dark .message-header,.content kbd.message .message-header{background-color:#363636;color:#f5f5f5}.message.is-dark .message-body,.content kbd.message .message-body{border-color:#363636;color:#2a2a2a}.message.is-primary,.docstring>section>a.message.docs-sourcelink{background-color:#f6fbfd}.message.is-primary .message-header,.docstring>section>a.message.docs-sourcelink .message-header{background-color:#4eb5de;color:#fff}.message.is-primary .message-body,.docstring>section>a.message.docs-sourcelink .message-body{border-color:#4eb5de;color:#1f556a}.message.is-link{background-color:#f7f9fd}.message.is-link .message-header{background-color:#2e63b8;color:#fff}.message.is-link .message-body{border-color:#2e63b8;color:#264981}.message.is-info{background-color:#f6fbfe}.message.is-info .message-header{background-color:#209cee;color:#fff}.message.is-info .message-body{border-color:#209cee;color:#12537d}.message.is-success{background-color:#f6fdf9}.message.is-success .message-header{background-color:#22c35b;color:#fff}.message.is-success .message-body{border-color:#22c35b;color:#0f361d}.message.is-warning{background-color:#fffdf5}.message.is-warning .message-header{background-color:#ffdd57;color:rgba(0,0,0,0.7)}.message.is-warning .message-body{border-color:#ffdd57;color:#3c3108}.message.is-danger{background-color:#fff5f5}.message.is-danger .message-header{background-color:#da0b00;color:#fff}.message.is-danger .message-body{border-color:#da0b00;color:#9b0c04}.message-header{align-items:center;background-color:#222;border-radius:4px 4px 0 0;color:#fff;display:flex;font-weight:700;justify-content:space-between;line-height:1.25;padding:0.75em 1em;position:relative}.message-header .delete{flex-grow:0;flex-shrink:0;margin-left:0.75em}.message-header+.message-body{border-width:0;border-top-left-radius:0;border-top-right-radius:0}.message-body{border-color:#dbdbdb;border-radius:4px;border-style:solid;border-width:0 0 0 4px;color:#222;padding:1.25em 1.5em}.message-body code,.message-body pre{background-color:#fff}.message-body pre code{background-color:rgba(0,0,0,0)}.modal{align-items:center;display:none;flex-direction:column;justify-content:center;overflow:hidden;position:fixed;z-index:40}.modal.is-active{display:flex}.modal-background{background-color:rgba(10,10,10,0.86)}.modal-content,.modal-card{margin:0 20px;max-height:calc(100vh - 160px);overflow:auto;position:relative;width:100%}@media screen and (min-width: 769px),print{.modal-content,.modal-card{margin:0 auto;max-height:calc(100vh - 40px);width:640px}}.modal-close{background:none;height:40px;position:fixed;right:20px;top:20px;width:40px}.modal-card{display:flex;flex-direction:column;max-height:calc(100vh - 40px);overflow:hidden;-ms-overflow-y:visible}.modal-card-head,.modal-card-foot{align-items:center;background-color:#f5f5f5;display:flex;flex-shrink:0;justify-content:flex-start;padding:20px;position:relative}.modal-card-head{border-bottom:1px solid #dbdbdb;border-top-left-radius:6px;border-top-right-radius:6px}.modal-card-title{color:#222;flex-grow:1;flex-shrink:0;font-size:1.5rem;line-height:1}.modal-card-foot{border-bottom-left-radius:6px;border-bottom-right-radius:6px;border-top:1px solid #dbdbdb}.modal-card-foot .button:not(:last-child){margin-right:0.5em}.modal-card-body{-webkit-overflow-scrolling:touch;background-color:#fff;flex-grow:1;flex-shrink:1;overflow:auto;padding:20px}.navbar{background-color:#fff;min-height:3.25rem;position:relative;z-index:30}.navbar.is-white{background-color:#fff;color:#0a0a0a}.navbar.is-white .navbar-brand>.navbar-item,.navbar.is-white .navbar-brand .navbar-link{color:#0a0a0a}.navbar.is-white .navbar-brand>a.navbar-item:focus,.navbar.is-white .navbar-brand>a.navbar-item:hover,.navbar.is-white .navbar-brand>a.navbar-item.is-active,.navbar.is-white .navbar-brand .navbar-link:focus,.navbar.is-white .navbar-brand .navbar-link:hover,.navbar.is-white .navbar-brand .navbar-link.is-active{background-color:#f2f2f2;color:#0a0a0a}.navbar.is-white .navbar-brand .navbar-link::after{border-color:#0a0a0a}.navbar.is-white .navbar-burger{color:#0a0a0a}@media screen and (min-width: 1056px){.navbar.is-white .navbar-start>.navbar-item,.navbar.is-white .navbar-start .navbar-link,.navbar.is-white .navbar-end>.navbar-item,.navbar.is-white .navbar-end .navbar-link{color:#0a0a0a}.navbar.is-white .navbar-start>a.navbar-item:focus,.navbar.is-white .navbar-start>a.navbar-item:hover,.navbar.is-white .navbar-start>a.navbar-item.is-active,.navbar.is-white .navbar-start .navbar-link:focus,.navbar.is-white .navbar-start .navbar-link:hover,.navbar.is-white .navbar-start .navbar-link.is-active,.navbar.is-white .navbar-end>a.navbar-item:focus,.navbar.is-white .navbar-end>a.navbar-item:hover,.navbar.is-white .navbar-end>a.navbar-item.is-active,.navbar.is-white .navbar-end .navbar-link:focus,.navbar.is-white .navbar-end .navbar-link:hover,.navbar.is-white .navbar-end .navbar-link.is-active{background-color:#f2f2f2;color:#0a0a0a}.navbar.is-white .navbar-start .navbar-link::after,.navbar.is-white .navbar-end .navbar-link::after{border-color:#0a0a0a}.navbar.is-white .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-white .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-white .navbar-item.has-dropdown.is-active .navbar-link{background-color:#f2f2f2;color:#0a0a0a}.navbar.is-white .navbar-dropdown a.navbar-item.is-active{background-color:#fff;color:#0a0a0a}}.navbar.is-black{background-color:#0a0a0a;color:#fff}.navbar.is-black .navbar-brand>.navbar-item,.navbar.is-black .navbar-brand .navbar-link{color:#fff}.navbar.is-black .navbar-brand>a.navbar-item:focus,.navbar.is-black .navbar-brand>a.navbar-item:hover,.navbar.is-black .navbar-brand>a.navbar-item.is-active,.navbar.is-black .navbar-brand .navbar-link:focus,.navbar.is-black .navbar-brand .navbar-link:hover,.navbar.is-black .navbar-brand .navbar-link.is-active{background-color:#000;color:#fff}.navbar.is-black .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-black .navbar-burger{color:#fff}@media screen and (min-width: 1056px){.navbar.is-black .navbar-start>.navbar-item,.navbar.is-black .navbar-start .navbar-link,.navbar.is-black .navbar-end>.navbar-item,.navbar.is-black .navbar-end .navbar-link{color:#fff}.navbar.is-black .navbar-start>a.navbar-item:focus,.navbar.is-black .navbar-start>a.navbar-item:hover,.navbar.is-black .navbar-start>a.navbar-item.is-active,.navbar.is-black .navbar-start .navbar-link:focus,.navbar.is-black .navbar-start .navbar-link:hover,.navbar.is-black .navbar-start .navbar-link.is-active,.navbar.is-black .navbar-end>a.navbar-item:focus,.navbar.is-black .navbar-end>a.navbar-item:hover,.navbar.is-black .navbar-end>a.navbar-item.is-active,.navbar.is-black .navbar-end .navbar-link:focus,.navbar.is-black .navbar-end .navbar-link:hover,.navbar.is-black .navbar-end .navbar-link.is-active{background-color:#000;color:#fff}.navbar.is-black .navbar-start .navbar-link::after,.navbar.is-black .navbar-end .navbar-link::after{border-color:#fff}.navbar.is-black .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-black .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-black .navbar-item.has-dropdown.is-active .navbar-link{background-color:#000;color:#fff}.navbar.is-black .navbar-dropdown a.navbar-item.is-active{background-color:#0a0a0a;color:#fff}}.navbar.is-light{background-color:#f5f5f5;color:#363636}.navbar.is-light .navbar-brand>.navbar-item,.navbar.is-light .navbar-brand .navbar-link{color:#363636}.navbar.is-light .navbar-brand>a.navbar-item:focus,.navbar.is-light .navbar-brand>a.navbar-item:hover,.navbar.is-light .navbar-brand>a.navbar-item.is-active,.navbar.is-light .navbar-brand .navbar-link:focus,.navbar.is-light .navbar-brand .navbar-link:hover,.navbar.is-light .navbar-brand .navbar-link.is-active{background-color:#e8e8e8;color:#363636}.navbar.is-light .navbar-brand .navbar-link::after{border-color:#363636}.navbar.is-light .navbar-burger{color:#363636}@media screen and (min-width: 1056px){.navbar.is-light .navbar-start>.navbar-item,.navbar.is-light .navbar-start .navbar-link,.navbar.is-light .navbar-end>.navbar-item,.navbar.is-light .navbar-end .navbar-link{color:#363636}.navbar.is-light .navbar-start>a.navbar-item:focus,.navbar.is-light .navbar-start>a.navbar-item:hover,.navbar.is-light .navbar-start>a.navbar-item.is-active,.navbar.is-light .navbar-start .navbar-link:focus,.navbar.is-light .navbar-start .navbar-link:hover,.navbar.is-light .navbar-start .navbar-link.is-active,.navbar.is-light .navbar-end>a.navbar-item:focus,.navbar.is-light .navbar-end>a.navbar-item:hover,.navbar.is-light .navbar-end>a.navbar-item.is-active,.navbar.is-light .navbar-end .navbar-link:focus,.navbar.is-light .navbar-end .navbar-link:hover,.navbar.is-light .navbar-end .navbar-link.is-active{background-color:#e8e8e8;color:#363636}.navbar.is-light .navbar-start .navbar-link::after,.navbar.is-light .navbar-end .navbar-link::after{border-color:#363636}.navbar.is-light .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-light .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-light .navbar-item.has-dropdown.is-active .navbar-link{background-color:#e8e8e8;color:#363636}.navbar.is-light .navbar-dropdown a.navbar-item.is-active{background-color:#f5f5f5;color:#363636}}.navbar.is-dark,.content kbd.navbar{background-color:#363636;color:#f5f5f5}.navbar.is-dark .navbar-brand>.navbar-item,.content kbd.navbar .navbar-brand>.navbar-item,.navbar.is-dark .navbar-brand .navbar-link,.content kbd.navbar .navbar-brand .navbar-link{color:#f5f5f5}.navbar.is-dark .navbar-brand>a.navbar-item:focus,.content kbd.navbar .navbar-brand>a.navbar-item:focus,.navbar.is-dark .navbar-brand>a.navbar-item:hover,.content kbd.navbar .navbar-brand>a.navbar-item:hover,.navbar.is-dark .navbar-brand>a.navbar-item.is-active,.content kbd.navbar .navbar-brand>a.navbar-item.is-active,.navbar.is-dark .navbar-brand .navbar-link:focus,.content kbd.navbar .navbar-brand .navbar-link:focus,.navbar.is-dark .navbar-brand .navbar-link:hover,.content kbd.navbar .navbar-brand .navbar-link:hover,.navbar.is-dark .navbar-brand .navbar-link.is-active,.content kbd.navbar .navbar-brand .navbar-link.is-active{background-color:#292929;color:#f5f5f5}.navbar.is-dark .navbar-brand .navbar-link::after,.content kbd.navbar .navbar-brand .navbar-link::after{border-color:#f5f5f5}.navbar.is-dark .navbar-burger,.content kbd.navbar .navbar-burger{color:#f5f5f5}@media screen and (min-width: 1056px){.navbar.is-dark .navbar-start>.navbar-item,.content kbd.navbar .navbar-start>.navbar-item,.navbar.is-dark .navbar-start .navbar-link,.content kbd.navbar .navbar-start .navbar-link,.navbar.is-dark .navbar-end>.navbar-item,.content kbd.navbar .navbar-end>.navbar-item,.navbar.is-dark .navbar-end .navbar-link,.content kbd.navbar .navbar-end .navbar-link{color:#f5f5f5}.navbar.is-dark .navbar-start>a.navbar-item:focus,.content kbd.navbar .navbar-start>a.navbar-item:focus,.navbar.is-dark .navbar-start>a.navbar-item:hover,.content kbd.navbar .navbar-start>a.navbar-item:hover,.navbar.is-dark .navbar-start>a.navbar-item.is-active,.content kbd.navbar .navbar-start>a.navbar-item.is-active,.navbar.is-dark .navbar-start .navbar-link:focus,.content kbd.navbar .navbar-start .navbar-link:focus,.navbar.is-dark .navbar-start .navbar-link:hover,.content kbd.navbar .navbar-start .navbar-link:hover,.navbar.is-dark .navbar-start .navbar-link.is-active,.content kbd.navbar .navbar-start .navbar-link.is-active,.navbar.is-dark .navbar-end>a.navbar-item:focus,.content kbd.navbar .navbar-end>a.navbar-item:focus,.navbar.is-dark .navbar-end>a.navbar-item:hover,.content kbd.navbar .navbar-end>a.navbar-item:hover,.navbar.is-dark .navbar-end>a.navbar-item.is-active,.content kbd.navbar .navbar-end>a.navbar-item.is-active,.navbar.is-dark .navbar-end .navbar-link:focus,.content kbd.navbar .navbar-end .navbar-link:focus,.navbar.is-dark .navbar-end .navbar-link:hover,.content kbd.navbar .navbar-end .navbar-link:hover,.navbar.is-dark .navbar-end .navbar-link.is-active,.content kbd.navbar .navbar-end .navbar-link.is-active{background-color:#292929;color:#f5f5f5}.navbar.is-dark .navbar-start .navbar-link::after,.content kbd.navbar .navbar-start .navbar-link::after,.navbar.is-dark .navbar-end .navbar-link::after,.content kbd.navbar .navbar-end .navbar-link::after{border-color:#f5f5f5}.navbar.is-dark .navbar-item.has-dropdown:focus .navbar-link,.content kbd.navbar .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-dark .navbar-item.has-dropdown:hover .navbar-link,.content kbd.navbar .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-dark .navbar-item.has-dropdown.is-active .navbar-link,.content kbd.navbar .navbar-item.has-dropdown.is-active .navbar-link{background-color:#292929;color:#f5f5f5}.navbar.is-dark .navbar-dropdown a.navbar-item.is-active,.content kbd.navbar .navbar-dropdown a.navbar-item.is-active{background-color:#363636;color:#f5f5f5}}.navbar.is-primary,.docstring>section>a.navbar.docs-sourcelink{background-color:#4eb5de;color:#fff}.navbar.is-primary .navbar-brand>.navbar-item,.docstring>section>a.navbar.docs-sourcelink .navbar-brand>.navbar-item,.navbar.is-primary .navbar-brand .navbar-link,.docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link{color:#fff}.navbar.is-primary .navbar-brand>a.navbar-item:focus,.docstring>section>a.navbar.docs-sourcelink .navbar-brand>a.navbar-item:focus,.navbar.is-primary .navbar-brand>a.navbar-item:hover,.docstring>section>a.navbar.docs-sourcelink .navbar-brand>a.navbar-item:hover,.navbar.is-primary .navbar-brand>a.navbar-item.is-active,.docstring>section>a.navbar.docs-sourcelink .navbar-brand>a.navbar-item.is-active,.navbar.is-primary .navbar-brand .navbar-link:focus,.docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link:focus,.navbar.is-primary .navbar-brand .navbar-link:hover,.docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link:hover,.navbar.is-primary .navbar-brand .navbar-link.is-active,.docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link.is-active{background-color:#39acda;color:#fff}.navbar.is-primary .navbar-brand .navbar-link::after,.docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-primary .navbar-burger,.docstring>section>a.navbar.docs-sourcelink .navbar-burger{color:#fff}@media screen and (min-width: 1056px){.navbar.is-primary .navbar-start>.navbar-item,.docstring>section>a.navbar.docs-sourcelink .navbar-start>.navbar-item,.navbar.is-primary .navbar-start .navbar-link,.docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link,.navbar.is-primary .navbar-end>.navbar-item,.docstring>section>a.navbar.docs-sourcelink .navbar-end>.navbar-item,.navbar.is-primary .navbar-end .navbar-link,.docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link{color:#fff}.navbar.is-primary .navbar-start>a.navbar-item:focus,.docstring>section>a.navbar.docs-sourcelink .navbar-start>a.navbar-item:focus,.navbar.is-primary .navbar-start>a.navbar-item:hover,.docstring>section>a.navbar.docs-sourcelink .navbar-start>a.navbar-item:hover,.navbar.is-primary .navbar-start>a.navbar-item.is-active,.docstring>section>a.navbar.docs-sourcelink .navbar-start>a.navbar-item.is-active,.navbar.is-primary .navbar-start .navbar-link:focus,.docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link:focus,.navbar.is-primary .navbar-start .navbar-link:hover,.docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link:hover,.navbar.is-primary .navbar-start .navbar-link.is-active,.docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link.is-active,.navbar.is-primary .navbar-end>a.navbar-item:focus,.docstring>section>a.navbar.docs-sourcelink .navbar-end>a.navbar-item:focus,.navbar.is-primary .navbar-end>a.navbar-item:hover,.docstring>section>a.navbar.docs-sourcelink .navbar-end>a.navbar-item:hover,.navbar.is-primary .navbar-end>a.navbar-item.is-active,.docstring>section>a.navbar.docs-sourcelink .navbar-end>a.navbar-item.is-active,.navbar.is-primary .navbar-end .navbar-link:focus,.docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link:focus,.navbar.is-primary .navbar-end .navbar-link:hover,.docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link:hover,.navbar.is-primary .navbar-end .navbar-link.is-active,.docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link.is-active{background-color:#39acda;color:#fff}.navbar.is-primary .navbar-start .navbar-link::after,.docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link::after,.navbar.is-primary .navbar-end .navbar-link::after,.docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link::after{border-color:#fff}.navbar.is-primary .navbar-item.has-dropdown:focus .navbar-link,.docstring>section>a.navbar.docs-sourcelink .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-primary .navbar-item.has-dropdown:hover .navbar-link,.docstring>section>a.navbar.docs-sourcelink .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-primary .navbar-item.has-dropdown.is-active .navbar-link,.docstring>section>a.navbar.docs-sourcelink .navbar-item.has-dropdown.is-active .navbar-link{background-color:#39acda;color:#fff}.navbar.is-primary .navbar-dropdown a.navbar-item.is-active,.docstring>section>a.navbar.docs-sourcelink .navbar-dropdown a.navbar-item.is-active{background-color:#4eb5de;color:#fff}}.navbar.is-link{background-color:#2e63b8;color:#fff}.navbar.is-link .navbar-brand>.navbar-item,.navbar.is-link .navbar-brand .navbar-link{color:#fff}.navbar.is-link .navbar-brand>a.navbar-item:focus,.navbar.is-link .navbar-brand>a.navbar-item:hover,.navbar.is-link .navbar-brand>a.navbar-item.is-active,.navbar.is-link .navbar-brand .navbar-link:focus,.navbar.is-link .navbar-brand .navbar-link:hover,.navbar.is-link .navbar-brand .navbar-link.is-active{background-color:#2958a4;color:#fff}.navbar.is-link .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-link .navbar-burger{color:#fff}@media screen and (min-width: 1056px){.navbar.is-link .navbar-start>.navbar-item,.navbar.is-link .navbar-start .navbar-link,.navbar.is-link .navbar-end>.navbar-item,.navbar.is-link .navbar-end .navbar-link{color:#fff}.navbar.is-link .navbar-start>a.navbar-item:focus,.navbar.is-link .navbar-start>a.navbar-item:hover,.navbar.is-link .navbar-start>a.navbar-item.is-active,.navbar.is-link .navbar-start .navbar-link:focus,.navbar.is-link .navbar-start .navbar-link:hover,.navbar.is-link .navbar-start .navbar-link.is-active,.navbar.is-link .navbar-end>a.navbar-item:focus,.navbar.is-link .navbar-end>a.navbar-item:hover,.navbar.is-link .navbar-end>a.navbar-item.is-active,.navbar.is-link .navbar-end .navbar-link:focus,.navbar.is-link .navbar-end .navbar-link:hover,.navbar.is-link .navbar-end .navbar-link.is-active{background-color:#2958a4;color:#fff}.navbar.is-link .navbar-start .navbar-link::after,.navbar.is-link .navbar-end .navbar-link::after{border-color:#fff}.navbar.is-link .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-link .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-link .navbar-item.has-dropdown.is-active .navbar-link{background-color:#2958a4;color:#fff}.navbar.is-link .navbar-dropdown a.navbar-item.is-active{background-color:#2e63b8;color:#fff}}.navbar.is-info{background-color:#209cee;color:#fff}.navbar.is-info .navbar-brand>.navbar-item,.navbar.is-info .navbar-brand .navbar-link{color:#fff}.navbar.is-info .navbar-brand>a.navbar-item:focus,.navbar.is-info .navbar-brand>a.navbar-item:hover,.navbar.is-info .navbar-brand>a.navbar-item.is-active,.navbar.is-info .navbar-brand .navbar-link:focus,.navbar.is-info .navbar-brand .navbar-link:hover,.navbar.is-info .navbar-brand .navbar-link.is-active{background-color:#1190e3;color:#fff}.navbar.is-info .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-info .navbar-burger{color:#fff}@media screen and (min-width: 1056px){.navbar.is-info .navbar-start>.navbar-item,.navbar.is-info .navbar-start .navbar-link,.navbar.is-info .navbar-end>.navbar-item,.navbar.is-info .navbar-end .navbar-link{color:#fff}.navbar.is-info .navbar-start>a.navbar-item:focus,.navbar.is-info .navbar-start>a.navbar-item:hover,.navbar.is-info .navbar-start>a.navbar-item.is-active,.navbar.is-info .navbar-start .navbar-link:focus,.navbar.is-info .navbar-start .navbar-link:hover,.navbar.is-info .navbar-start .navbar-link.is-active,.navbar.is-info .navbar-end>a.navbar-item:focus,.navbar.is-info .navbar-end>a.navbar-item:hover,.navbar.is-info .navbar-end>a.navbar-item.is-active,.navbar.is-info .navbar-end .navbar-link:focus,.navbar.is-info .navbar-end .navbar-link:hover,.navbar.is-info .navbar-end .navbar-link.is-active{background-color:#1190e3;color:#fff}.navbar.is-info .navbar-start .navbar-link::after,.navbar.is-info .navbar-end .navbar-link::after{border-color:#fff}.navbar.is-info .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-info .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-info .navbar-item.has-dropdown.is-active .navbar-link{background-color:#1190e3;color:#fff}.navbar.is-info .navbar-dropdown a.navbar-item.is-active{background-color:#209cee;color:#fff}}.navbar.is-success{background-color:#22c35b;color:#fff}.navbar.is-success .navbar-brand>.navbar-item,.navbar.is-success .navbar-brand .navbar-link{color:#fff}.navbar.is-success .navbar-brand>a.navbar-item:focus,.navbar.is-success .navbar-brand>a.navbar-item:hover,.navbar.is-success .navbar-brand>a.navbar-item.is-active,.navbar.is-success .navbar-brand .navbar-link:focus,.navbar.is-success .navbar-brand .navbar-link:hover,.navbar.is-success .navbar-brand .navbar-link.is-active{background-color:#1ead51;color:#fff}.navbar.is-success .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-success .navbar-burger{color:#fff}@media screen and (min-width: 1056px){.navbar.is-success .navbar-start>.navbar-item,.navbar.is-success .navbar-start .navbar-link,.navbar.is-success .navbar-end>.navbar-item,.navbar.is-success .navbar-end .navbar-link{color:#fff}.navbar.is-success .navbar-start>a.navbar-item:focus,.navbar.is-success .navbar-start>a.navbar-item:hover,.navbar.is-success .navbar-start>a.navbar-item.is-active,.navbar.is-success .navbar-start .navbar-link:focus,.navbar.is-success .navbar-start .navbar-link:hover,.navbar.is-success .navbar-start .navbar-link.is-active,.navbar.is-success .navbar-end>a.navbar-item:focus,.navbar.is-success .navbar-end>a.navbar-item:hover,.navbar.is-success .navbar-end>a.navbar-item.is-active,.navbar.is-success .navbar-end .navbar-link:focus,.navbar.is-success .navbar-end .navbar-link:hover,.navbar.is-success .navbar-end .navbar-link.is-active{background-color:#1ead51;color:#fff}.navbar.is-success .navbar-start .navbar-link::after,.navbar.is-success .navbar-end .navbar-link::after{border-color:#fff}.navbar.is-success .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-success .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-success .navbar-item.has-dropdown.is-active .navbar-link{background-color:#1ead51;color:#fff}.navbar.is-success .navbar-dropdown a.navbar-item.is-active{background-color:#22c35b;color:#fff}}.navbar.is-warning{background-color:#ffdd57;color:rgba(0,0,0,0.7)}.navbar.is-warning .navbar-brand>.navbar-item,.navbar.is-warning .navbar-brand .navbar-link{color:rgba(0,0,0,0.7)}.navbar.is-warning .navbar-brand>a.navbar-item:focus,.navbar.is-warning .navbar-brand>a.navbar-item:hover,.navbar.is-warning .navbar-brand>a.navbar-item.is-active,.navbar.is-warning .navbar-brand .navbar-link:focus,.navbar.is-warning .navbar-brand .navbar-link:hover,.navbar.is-warning .navbar-brand .navbar-link.is-active{background-color:#ffd83e;color:rgba(0,0,0,0.7)}.navbar.is-warning .navbar-brand .navbar-link::after{border-color:rgba(0,0,0,0.7)}.navbar.is-warning .navbar-burger{color:rgba(0,0,0,0.7)}@media screen and (min-width: 1056px){.navbar.is-warning .navbar-start>.navbar-item,.navbar.is-warning .navbar-start .navbar-link,.navbar.is-warning .navbar-end>.navbar-item,.navbar.is-warning .navbar-end .navbar-link{color:rgba(0,0,0,0.7)}.navbar.is-warning .navbar-start>a.navbar-item:focus,.navbar.is-warning .navbar-start>a.navbar-item:hover,.navbar.is-warning .navbar-start>a.navbar-item.is-active,.navbar.is-warning .navbar-start .navbar-link:focus,.navbar.is-warning .navbar-start .navbar-link:hover,.navbar.is-warning .navbar-start .navbar-link.is-active,.navbar.is-warning .navbar-end>a.navbar-item:focus,.navbar.is-warning .navbar-end>a.navbar-item:hover,.navbar.is-warning .navbar-end>a.navbar-item.is-active,.navbar.is-warning .navbar-end .navbar-link:focus,.navbar.is-warning .navbar-end .navbar-link:hover,.navbar.is-warning .navbar-end .navbar-link.is-active{background-color:#ffd83e;color:rgba(0,0,0,0.7)}.navbar.is-warning .navbar-start .navbar-link::after,.navbar.is-warning .navbar-end .navbar-link::after{border-color:rgba(0,0,0,0.7)}.navbar.is-warning .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-warning .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-warning .navbar-item.has-dropdown.is-active .navbar-link{background-color:#ffd83e;color:rgba(0,0,0,0.7)}.navbar.is-warning .navbar-dropdown a.navbar-item.is-active{background-color:#ffdd57;color:rgba(0,0,0,0.7)}}.navbar.is-danger{background-color:#da0b00;color:#fff}.navbar.is-danger .navbar-brand>.navbar-item,.navbar.is-danger .navbar-brand .navbar-link{color:#fff}.navbar.is-danger .navbar-brand>a.navbar-item:focus,.navbar.is-danger .navbar-brand>a.navbar-item:hover,.navbar.is-danger .navbar-brand>a.navbar-item.is-active,.navbar.is-danger .navbar-brand .navbar-link:focus,.navbar.is-danger .navbar-brand .navbar-link:hover,.navbar.is-danger .navbar-brand .navbar-link.is-active{background-color:#c10a00;color:#fff}.navbar.is-danger .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-danger .navbar-burger{color:#fff}@media screen and (min-width: 1056px){.navbar.is-danger .navbar-start>.navbar-item,.navbar.is-danger .navbar-start .navbar-link,.navbar.is-danger .navbar-end>.navbar-item,.navbar.is-danger .navbar-end .navbar-link{color:#fff}.navbar.is-danger .navbar-start>a.navbar-item:focus,.navbar.is-danger .navbar-start>a.navbar-item:hover,.navbar.is-danger .navbar-start>a.navbar-item.is-active,.navbar.is-danger .navbar-start .navbar-link:focus,.navbar.is-danger .navbar-start .navbar-link:hover,.navbar.is-danger .navbar-start .navbar-link.is-active,.navbar.is-danger .navbar-end>a.navbar-item:focus,.navbar.is-danger .navbar-end>a.navbar-item:hover,.navbar.is-danger .navbar-end>a.navbar-item.is-active,.navbar.is-danger .navbar-end .navbar-link:focus,.navbar.is-danger .navbar-end .navbar-link:hover,.navbar.is-danger .navbar-end .navbar-link.is-active{background-color:#c10a00;color:#fff}.navbar.is-danger .navbar-start .navbar-link::after,.navbar.is-danger .navbar-end .navbar-link::after{border-color:#fff}.navbar.is-danger .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-danger .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-danger .navbar-item.has-dropdown.is-active .navbar-link{background-color:#c10a00;color:#fff}.navbar.is-danger .navbar-dropdown a.navbar-item.is-active{background-color:#da0b00;color:#fff}}.navbar>.container{align-items:stretch;display:flex;min-height:3.25rem;width:100%}.navbar.has-shadow{box-shadow:0 2px 0 0 #f5f5f5}.navbar.is-fixed-bottom,.navbar.is-fixed-top{left:0;position:fixed;right:0;z-index:30}.navbar.is-fixed-bottom{bottom:0}.navbar.is-fixed-bottom.has-shadow{box-shadow:0 -2px 0 0 #f5f5f5}.navbar.is-fixed-top{top:0}html.has-navbar-fixed-top,body.has-navbar-fixed-top{padding-top:3.25rem}html.has-navbar-fixed-bottom,body.has-navbar-fixed-bottom{padding-bottom:3.25rem}.navbar-brand,.navbar-tabs{align-items:stretch;display:flex;flex-shrink:0;min-height:3.25rem}.navbar-brand a.navbar-item:focus,.navbar-brand a.navbar-item:hover{background-color:transparent}.navbar-tabs{-webkit-overflow-scrolling:touch;max-width:100vw;overflow-x:auto;overflow-y:hidden}.navbar-burger{color:#4a4a4a;cursor:pointer;display:block;height:3.25rem;position:relative;width:3.25rem;margin-left:auto}.navbar-burger span{background-color:currentColor;display:block;height:1px;left:calc(50% - 8px);position:absolute;transform-origin:center;transition-duration:86ms;transition-property:background-color, opacity, transform;transition-timing-function:ease-out;width:16px}.navbar-burger span:nth-child(1){top:calc(50% - 6px)}.navbar-burger span:nth-child(2){top:calc(50% - 1px)}.navbar-burger span:nth-child(3){top:calc(50% + 4px)}.navbar-burger:hover{background-color:rgba(0,0,0,0.05)}.navbar-burger.is-active span:nth-child(1){transform:translateY(5px) rotate(45deg)}.navbar-burger.is-active span:nth-child(2){opacity:0}.navbar-burger.is-active span:nth-child(3){transform:translateY(-5px) rotate(-45deg)}.navbar-menu{display:none}.navbar-item,.navbar-link{color:#4a4a4a;display:block;line-height:1.5;padding:0.5rem 0.75rem;position:relative}.navbar-item .icon:only-child,.navbar-link .icon:only-child{margin-left:-0.25rem;margin-right:-0.25rem}a.navbar-item,.navbar-link{cursor:pointer}a.navbar-item:focus,a.navbar-item:focus-within,a.navbar-item:hover,a.navbar-item.is-active,.navbar-link:focus,.navbar-link:focus-within,.navbar-link:hover,.navbar-link.is-active{background-color:#fafafa;color:#2e63b8}.navbar-item{display:block;flex-grow:0;flex-shrink:0}.navbar-item img{max-height:1.75rem}.navbar-item.has-dropdown{padding:0}.navbar-item.is-expanded{flex-grow:1;flex-shrink:1}.navbar-item.is-tab{border-bottom:1px solid transparent;min-height:3.25rem;padding-bottom:calc(0.5rem - 1px)}.navbar-item.is-tab:focus,.navbar-item.is-tab:hover{background-color:rgba(0,0,0,0);border-bottom-color:#2e63b8}.navbar-item.is-tab.is-active{background-color:rgba(0,0,0,0);border-bottom-color:#2e63b8;border-bottom-style:solid;border-bottom-width:3px;color:#2e63b8;padding-bottom:calc(0.5rem - 3px)}.navbar-content{flex-grow:1;flex-shrink:1}.navbar-link:not(.is-arrowless){padding-right:2.5em}.navbar-link:not(.is-arrowless)::after{border-color:#2e63b8;margin-top:-0.375em;right:1.125em}.navbar-dropdown{font-size:0.875rem;padding-bottom:0.5rem;padding-top:0.5rem}.navbar-dropdown .navbar-item{padding-left:1.5rem;padding-right:1.5rem}.navbar-divider{background-color:#f5f5f5;border:none;display:none;height:2px;margin:0.5rem 0}@media screen and (max-width: 1055px){.navbar>.container{display:block}.navbar-brand .navbar-item,.navbar-tabs .navbar-item{align-items:center;display:flex}.navbar-link::after{display:none}.navbar-menu{background-color:#fff;box-shadow:0 8px 16px rgba(10,10,10,0.1);padding:0.5rem 0}.navbar-menu.is-active{display:block}.navbar.is-fixed-bottom-touch,.navbar.is-fixed-top-touch{left:0;position:fixed;right:0;z-index:30}.navbar.is-fixed-bottom-touch{bottom:0}.navbar.is-fixed-bottom-touch.has-shadow{box-shadow:0 -2px 3px rgba(10,10,10,0.1)}.navbar.is-fixed-top-touch{top:0}.navbar.is-fixed-top .navbar-menu,.navbar.is-fixed-top-touch .navbar-menu{-webkit-overflow-scrolling:touch;max-height:calc(100vh - 3.25rem);overflow:auto}html.has-navbar-fixed-top-touch,body.has-navbar-fixed-top-touch{padding-top:3.25rem}html.has-navbar-fixed-bottom-touch,body.has-navbar-fixed-bottom-touch{padding-bottom:3.25rem}}@media screen and (min-width: 1056px){.navbar,.navbar-menu,.navbar-start,.navbar-end{align-items:stretch;display:flex}.navbar{min-height:3.25rem}.navbar.is-spaced{padding:1rem 2rem}.navbar.is-spaced .navbar-start,.navbar.is-spaced .navbar-end{align-items:center}.navbar.is-spaced a.navbar-item,.navbar.is-spaced .navbar-link{border-radius:4px}.navbar.is-transparent a.navbar-item:focus,.navbar.is-transparent a.navbar-item:hover,.navbar.is-transparent a.navbar-item.is-active,.navbar.is-transparent .navbar-link:focus,.navbar.is-transparent .navbar-link:hover,.navbar.is-transparent .navbar-link.is-active{background-color:transparent !important}.navbar.is-transparent .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus .navbar-link,.navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus-within .navbar-link,.navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:hover .navbar-link{background-color:transparent !important}.navbar.is-transparent .navbar-dropdown a.navbar-item:focus,.navbar.is-transparent .navbar-dropdown a.navbar-item:hover{background-color:#f5f5f5;color:#0a0a0a}.navbar.is-transparent .navbar-dropdown a.navbar-item.is-active{background-color:#f5f5f5;color:#2e63b8}.navbar-burger{display:none}.navbar-item,.navbar-link{align-items:center;display:flex}.navbar-item{display:flex}.navbar-item.has-dropdown{align-items:stretch}.navbar-item.has-dropdown-up .navbar-link::after{transform:rotate(135deg) translate(0.25em, -0.25em)}.navbar-item.has-dropdown-up .navbar-dropdown{border-bottom:2px solid #dbdbdb;border-radius:6px 6px 0 0;border-top:none;bottom:100%;box-shadow:0 -8px 8px rgba(10,10,10,0.1);top:auto}.navbar-item.is-active .navbar-dropdown,.navbar-item.is-hoverable:focus .navbar-dropdown,.navbar-item.is-hoverable:focus-within .navbar-dropdown,.navbar-item.is-hoverable:hover .navbar-dropdown{display:block}.navbar.is-spaced .navbar-item.is-active .navbar-dropdown,.navbar-item.is-active .navbar-dropdown.is-boxed,.navbar.is-spaced .navbar-item.is-hoverable:focus .navbar-dropdown,.navbar-item.is-hoverable:focus .navbar-dropdown.is-boxed,.navbar.is-spaced .navbar-item.is-hoverable:focus-within .navbar-dropdown,.navbar-item.is-hoverable:focus-within .navbar-dropdown.is-boxed,.navbar.is-spaced .navbar-item.is-hoverable:hover .navbar-dropdown,.navbar-item.is-hoverable:hover .navbar-dropdown.is-boxed{opacity:1;pointer-events:auto;transform:translateY(0)}.navbar-menu{flex-grow:1;flex-shrink:0}.navbar-start{justify-content:flex-start;margin-right:auto}.navbar-end{justify-content:flex-end;margin-left:auto}.navbar-dropdown{background-color:#fff;border-bottom-left-radius:6px;border-bottom-right-radius:6px;border-top:2px solid #dbdbdb;box-shadow:0 8px 8px rgba(10,10,10,0.1);display:none;font-size:0.875rem;left:0;min-width:100%;position:absolute;top:100%;z-index:20}.navbar-dropdown .navbar-item{padding:0.375rem 1rem;white-space:nowrap}.navbar-dropdown a.navbar-item{padding-right:3rem}.navbar-dropdown a.navbar-item:focus,.navbar-dropdown a.navbar-item:hover{background-color:#f5f5f5;color:#0a0a0a}.navbar-dropdown a.navbar-item.is-active{background-color:#f5f5f5;color:#2e63b8}.navbar.is-spaced .navbar-dropdown,.navbar-dropdown.is-boxed{border-radius:6px;border-top:none;box-shadow:0 8px 8px rgba(10,10,10,0.1), 0 0 0 1px rgba(10,10,10,0.1);display:block;opacity:0;pointer-events:none;top:calc(100% + (-4px));transform:translateY(-5px);transition-duration:86ms;transition-property:opacity, transform}.navbar-dropdown.is-right{left:auto;right:0}.navbar-divider{display:block}.navbar>.container .navbar-brand,.container>.navbar .navbar-brand{margin-left:-.75rem}.navbar>.container .navbar-menu,.container>.navbar .navbar-menu{margin-right:-.75rem}.navbar.is-fixed-bottom-desktop,.navbar.is-fixed-top-desktop{left:0;position:fixed;right:0;z-index:30}.navbar.is-fixed-bottom-desktop{bottom:0}.navbar.is-fixed-bottom-desktop.has-shadow{box-shadow:0 -2px 3px rgba(10,10,10,0.1)}.navbar.is-fixed-top-desktop{top:0}html.has-navbar-fixed-top-desktop,body.has-navbar-fixed-top-desktop{padding-top:3.25rem}html.has-navbar-fixed-bottom-desktop,body.has-navbar-fixed-bottom-desktop{padding-bottom:3.25rem}html.has-spaced-navbar-fixed-top,body.has-spaced-navbar-fixed-top{padding-top:5.25rem}html.has-spaced-navbar-fixed-bottom,body.has-spaced-navbar-fixed-bottom{padding-bottom:5.25rem}a.navbar-item.is-active,.navbar-link.is-active{color:#0a0a0a}a.navbar-item.is-active:not(:focus):not(:hover),.navbar-link.is-active:not(:focus):not(:hover){background-color:rgba(0,0,0,0)}.navbar-item.has-dropdown:focus .navbar-link,.navbar-item.has-dropdown:hover .navbar-link,.navbar-item.has-dropdown.is-active .navbar-link{background-color:#fafafa}}.hero.is-fullheight-with-navbar{min-height:calc(100vh - 3.25rem)}.pagination{font-size:1rem;margin:-.25rem}.pagination.is-small,#documenter .docs-sidebar form.docs-search>input.pagination{font-size:.75rem}.pagination.is-medium{font-size:1.25rem}.pagination.is-large{font-size:1.5rem}.pagination.is-rounded .pagination-previous,#documenter .docs-sidebar form.docs-search>input.pagination .pagination-previous,.pagination.is-rounded .pagination-next,#documenter .docs-sidebar form.docs-search>input.pagination .pagination-next{padding-left:1em;padding-right:1em;border-radius:290486px}.pagination.is-rounded .pagination-link,#documenter .docs-sidebar form.docs-search>input.pagination .pagination-link{border-radius:290486px}.pagination,.pagination-list{align-items:center;display:flex;justify-content:center;text-align:center}.pagination-previous,.pagination-next,.pagination-link,.pagination-ellipsis{font-size:1em;justify-content:center;margin:.25rem;padding-left:.5em;padding-right:.5em;text-align:center}.pagination-previous,.pagination-next,.pagination-link{border-color:#dbdbdb;color:#363636;min-width:2.25em}.pagination-previous:hover,.pagination-next:hover,.pagination-link:hover{border-color:#b5b5b5;color:#363636}.pagination-previous:focus,.pagination-next:focus,.pagination-link:focus{border-color:#3c5dcd}.pagination-previous:active,.pagination-next:active,.pagination-link:active{box-shadow:inset 0 1px 2px rgba(10,10,10,0.2)}.pagination-previous[disabled],.pagination-next[disabled],.pagination-link[disabled]{background-color:#dbdbdb;border-color:#dbdbdb;box-shadow:none;color:#6b6b6b;opacity:0.5}.pagination-previous,.pagination-next{padding-left:0.75em;padding-right:0.75em;white-space:nowrap}.pagination-link.is-current{background-color:#2e63b8;border-color:#2e63b8;color:#fff}.pagination-ellipsis{color:#b5b5b5;pointer-events:none}.pagination-list{flex-wrap:wrap}@media screen and (max-width: 768px){.pagination{flex-wrap:wrap}.pagination-previous,.pagination-next{flex-grow:1;flex-shrink:1}.pagination-list li{flex-grow:1;flex-shrink:1}}@media screen and (min-width: 769px),print{.pagination-list{flex-grow:1;flex-shrink:1;justify-content:flex-start;order:1}.pagination-previous{order:2}.pagination-next{order:3}.pagination{justify-content:space-between}.pagination.is-centered .pagination-previous{order:1}.pagination.is-centered .pagination-list{justify-content:center;order:2}.pagination.is-centered .pagination-next{order:3}.pagination.is-right .pagination-previous{order:1}.pagination.is-right .pagination-next{order:2}.pagination.is-right .pagination-list{justify-content:flex-end;order:3}}.panel{font-size:1rem}.panel:not(:last-child){margin-bottom:1.5rem}.panel-heading,.panel-tabs,.panel-block{border-bottom:1px solid #dbdbdb;border-left:1px solid #dbdbdb;border-right:1px solid #dbdbdb}.panel-heading:first-child,.panel-tabs:first-child,.panel-block:first-child{border-top:1px solid #dbdbdb}.panel-heading{background-color:#f5f5f5;border-radius:4px 4px 0 0;color:#222;font-size:1.25em;font-weight:300;line-height:1.25;padding:0.5em 0.75em}.panel-tabs{align-items:flex-end;display:flex;font-size:.875em;justify-content:center}.panel-tabs a{border-bottom:1px solid #dbdbdb;margin-bottom:-1px;padding:0.5em}.panel-tabs a.is-active{border-bottom-color:#4a4a4a;color:#363636}.panel-list a{color:#222}.panel-list a:hover{color:#2e63b8}.panel-block{align-items:center;color:#222;display:flex;justify-content:flex-start;padding:0.5em 0.75em}.panel-block input[type="checkbox"]{margin-right:0.75em}.panel-block>.control{flex-grow:1;flex-shrink:1;width:100%}.panel-block.is-wrapped{flex-wrap:wrap}.panel-block.is-active{border-left-color:#2e63b8;color:#363636}.panel-block.is-active .panel-icon{color:#2e63b8}a.panel-block,label.panel-block{cursor:pointer}a.panel-block:hover,label.panel-block:hover{background-color:#f5f5f5}.panel-icon{display:inline-block;font-size:14px;height:1em;line-height:1em;text-align:center;vertical-align:top;width:1em;color:#6b6b6b;margin-right:0.75em}.panel-icon .fa{font-size:inherit;line-height:inherit}.tabs{-webkit-overflow-scrolling:touch;align-items:stretch;display:flex;font-size:1rem;justify-content:space-between;overflow:hidden;overflow-x:auto;white-space:nowrap}.tabs a{align-items:center;border-bottom-color:#dbdbdb;border-bottom-style:solid;border-bottom-width:1px;color:#222;display:flex;justify-content:center;margin-bottom:-1px;padding:0.5em 1em;vertical-align:top}.tabs a:hover{border-bottom-color:#222;color:#222}.tabs li{display:block}.tabs li.is-active a{border-bottom-color:#2e63b8;color:#2e63b8}.tabs ul{align-items:center;border-bottom-color:#dbdbdb;border-bottom-style:solid;border-bottom-width:1px;display:flex;flex-grow:1;flex-shrink:0;justify-content:flex-start}.tabs ul.is-left{padding-right:0.75em}.tabs ul.is-center{flex:none;justify-content:center;padding-left:0.75em;padding-right:0.75em}.tabs ul.is-right{justify-content:flex-end;padding-left:0.75em}.tabs .icon:first-child{margin-right:0.5em}.tabs .icon:last-child{margin-left:0.5em}.tabs.is-centered ul{justify-content:center}.tabs.is-right ul{justify-content:flex-end}.tabs.is-boxed a{border:1px solid transparent;border-radius:4px 4px 0 0}.tabs.is-boxed a:hover{background-color:#f5f5f5;border-bottom-color:#dbdbdb}.tabs.is-boxed li.is-active a{background-color:#fff;border-color:#dbdbdb;border-bottom-color:rgba(0,0,0,0) !important}.tabs.is-fullwidth li{flex-grow:1;flex-shrink:0}.tabs.is-toggle a{border-color:#dbdbdb;border-style:solid;border-width:1px;margin-bottom:0;position:relative}.tabs.is-toggle a:hover{background-color:#f5f5f5;border-color:#b5b5b5;z-index:2}.tabs.is-toggle li+li{margin-left:-1px}.tabs.is-toggle li:first-child a{border-radius:4px 0 0 4px}.tabs.is-toggle li:last-child a{border-radius:0 4px 4px 0}.tabs.is-toggle li.is-active a{background-color:#2e63b8;border-color:#2e63b8;color:#fff;z-index:1}.tabs.is-toggle ul{border-bottom:none}.tabs.is-toggle.is-toggle-rounded li:first-child a{border-bottom-left-radius:290486px;border-top-left-radius:290486px;padding-left:1.25em}.tabs.is-toggle.is-toggle-rounded li:last-child a{border-bottom-right-radius:290486px;border-top-right-radius:290486px;padding-right:1.25em}.tabs.is-small,#documenter .docs-sidebar form.docs-search>input.tabs{font-size:.75rem}.tabs.is-medium{font-size:1.25rem}.tabs.is-large{font-size:1.5rem}.column{display:block;flex-basis:0;flex-grow:1;flex-shrink:1;padding:.75rem}.columns.is-mobile>.column.is-narrow{flex:none}.columns.is-mobile>.column.is-full{flex:none;width:100%}.columns.is-mobile>.column.is-three-quarters{flex:none;width:75%}.columns.is-mobile>.column.is-two-thirds{flex:none;width:66.6666%}.columns.is-mobile>.column.is-half{flex:none;width:50%}.columns.is-mobile>.column.is-one-third{flex:none;width:33.3333%}.columns.is-mobile>.column.is-one-quarter{flex:none;width:25%}.columns.is-mobile>.column.is-one-fifth{flex:none;width:20%}.columns.is-mobile>.column.is-two-fifths{flex:none;width:40%}.columns.is-mobile>.column.is-three-fifths{flex:none;width:60%}.columns.is-mobile>.column.is-four-fifths{flex:none;width:80%}.columns.is-mobile>.column.is-offset-three-quarters{margin-left:75%}.columns.is-mobile>.column.is-offset-two-thirds{margin-left:66.6666%}.columns.is-mobile>.column.is-offset-half{margin-left:50%}.columns.is-mobile>.column.is-offset-one-third{margin-left:33.3333%}.columns.is-mobile>.column.is-offset-one-quarter{margin-left:25%}.columns.is-mobile>.column.is-offset-one-fifth{margin-left:20%}.columns.is-mobile>.column.is-offset-two-fifths{margin-left:40%}.columns.is-mobile>.column.is-offset-three-fifths{margin-left:60%}.columns.is-mobile>.column.is-offset-four-fifths{margin-left:80%}.columns.is-mobile>.column.is-0{flex:none;width:0%}.columns.is-mobile>.column.is-offset-0{margin-left:0%}.columns.is-mobile>.column.is-1{flex:none;width:8.3333333333%}.columns.is-mobile>.column.is-offset-1{margin-left:8.3333333333%}.columns.is-mobile>.column.is-2{flex:none;width:16.6666666667%}.columns.is-mobile>.column.is-offset-2{margin-left:16.6666666667%}.columns.is-mobile>.column.is-3{flex:none;width:25%}.columns.is-mobile>.column.is-offset-3{margin-left:25%}.columns.is-mobile>.column.is-4{flex:none;width:33.3333333333%}.columns.is-mobile>.column.is-offset-4{margin-left:33.3333333333%}.columns.is-mobile>.column.is-5{flex:none;width:41.6666666667%}.columns.is-mobile>.column.is-offset-5{margin-left:41.6666666667%}.columns.is-mobile>.column.is-6{flex:none;width:50%}.columns.is-mobile>.column.is-offset-6{margin-left:50%}.columns.is-mobile>.column.is-7{flex:none;width:58.3333333333%}.columns.is-mobile>.column.is-offset-7{margin-left:58.3333333333%}.columns.is-mobile>.column.is-8{flex:none;width:66.6666666667%}.columns.is-mobile>.column.is-offset-8{margin-left:66.6666666667%}.columns.is-mobile>.column.is-9{flex:none;width:75%}.columns.is-mobile>.column.is-offset-9{margin-left:75%}.columns.is-mobile>.column.is-10{flex:none;width:83.3333333333%}.columns.is-mobile>.column.is-offset-10{margin-left:83.3333333333%}.columns.is-mobile>.column.is-11{flex:none;width:91.6666666667%}.columns.is-mobile>.column.is-offset-11{margin-left:91.6666666667%}.columns.is-mobile>.column.is-12{flex:none;width:100%}.columns.is-mobile>.column.is-offset-12{margin-left:100%}@media screen and (max-width: 768px){.column.is-narrow-mobile{flex:none}.column.is-full-mobile{flex:none;width:100%}.column.is-three-quarters-mobile{flex:none;width:75%}.column.is-two-thirds-mobile{flex:none;width:66.6666%}.column.is-half-mobile{flex:none;width:50%}.column.is-one-third-mobile{flex:none;width:33.3333%}.column.is-one-quarter-mobile{flex:none;width:25%}.column.is-one-fifth-mobile{flex:none;width:20%}.column.is-two-fifths-mobile{flex:none;width:40%}.column.is-three-fifths-mobile{flex:none;width:60%}.column.is-four-fifths-mobile{flex:none;width:80%}.column.is-offset-three-quarters-mobile{margin-left:75%}.column.is-offset-two-thirds-mobile{margin-left:66.6666%}.column.is-offset-half-mobile{margin-left:50%}.column.is-offset-one-third-mobile{margin-left:33.3333%}.column.is-offset-one-quarter-mobile{margin-left:25%}.column.is-offset-one-fifth-mobile{margin-left:20%}.column.is-offset-two-fifths-mobile{margin-left:40%}.column.is-offset-three-fifths-mobile{margin-left:60%}.column.is-offset-four-fifths-mobile{margin-left:80%}.column.is-0-mobile{flex:none;width:0%}.column.is-offset-0-mobile{margin-left:0%}.column.is-1-mobile{flex:none;width:8.3333333333%}.column.is-offset-1-mobile{margin-left:8.3333333333%}.column.is-2-mobile{flex:none;width:16.6666666667%}.column.is-offset-2-mobile{margin-left:16.6666666667%}.column.is-3-mobile{flex:none;width:25%}.column.is-offset-3-mobile{margin-left:25%}.column.is-4-mobile{flex:none;width:33.3333333333%}.column.is-offset-4-mobile{margin-left:33.3333333333%}.column.is-5-mobile{flex:none;width:41.6666666667%}.column.is-offset-5-mobile{margin-left:41.6666666667%}.column.is-6-mobile{flex:none;width:50%}.column.is-offset-6-mobile{margin-left:50%}.column.is-7-mobile{flex:none;width:58.3333333333%}.column.is-offset-7-mobile{margin-left:58.3333333333%}.column.is-8-mobile{flex:none;width:66.6666666667%}.column.is-offset-8-mobile{margin-left:66.6666666667%}.column.is-9-mobile{flex:none;width:75%}.column.is-offset-9-mobile{margin-left:75%}.column.is-10-mobile{flex:none;width:83.3333333333%}.column.is-offset-10-mobile{margin-left:83.3333333333%}.column.is-11-mobile{flex:none;width:91.6666666667%}.column.is-offset-11-mobile{margin-left:91.6666666667%}.column.is-12-mobile{flex:none;width:100%}.column.is-offset-12-mobile{margin-left:100%}}@media screen and (min-width: 769px),print{.column.is-narrow,.column.is-narrow-tablet{flex:none}.column.is-full,.column.is-full-tablet{flex:none;width:100%}.column.is-three-quarters,.column.is-three-quarters-tablet{flex:none;width:75%}.column.is-two-thirds,.column.is-two-thirds-tablet{flex:none;width:66.6666%}.column.is-half,.column.is-half-tablet{flex:none;width:50%}.column.is-one-third,.column.is-one-third-tablet{flex:none;width:33.3333%}.column.is-one-quarter,.column.is-one-quarter-tablet{flex:none;width:25%}.column.is-one-fifth,.column.is-one-fifth-tablet{flex:none;width:20%}.column.is-two-fifths,.column.is-two-fifths-tablet{flex:none;width:40%}.column.is-three-fifths,.column.is-three-fifths-tablet{flex:none;width:60%}.column.is-four-fifths,.column.is-four-fifths-tablet{flex:none;width:80%}.column.is-offset-three-quarters,.column.is-offset-three-quarters-tablet{margin-left:75%}.column.is-offset-two-thirds,.column.is-offset-two-thirds-tablet{margin-left:66.6666%}.column.is-offset-half,.column.is-offset-half-tablet{margin-left:50%}.column.is-offset-one-third,.column.is-offset-one-third-tablet{margin-left:33.3333%}.column.is-offset-one-quarter,.column.is-offset-one-quarter-tablet{margin-left:25%}.column.is-offset-one-fifth,.column.is-offset-one-fifth-tablet{margin-left:20%}.column.is-offset-two-fifths,.column.is-offset-two-fifths-tablet{margin-left:40%}.column.is-offset-three-fifths,.column.is-offset-three-fifths-tablet{margin-left:60%}.column.is-offset-four-fifths,.column.is-offset-four-fifths-tablet{margin-left:80%}.column.is-0,.column.is-0-tablet{flex:none;width:0%}.column.is-offset-0,.column.is-offset-0-tablet{margin-left:0%}.column.is-1,.column.is-1-tablet{flex:none;width:8.3333333333%}.column.is-offset-1,.column.is-offset-1-tablet{margin-left:8.3333333333%}.column.is-2,.column.is-2-tablet{flex:none;width:16.6666666667%}.column.is-offset-2,.column.is-offset-2-tablet{margin-left:16.6666666667%}.column.is-3,.column.is-3-tablet{flex:none;width:25%}.column.is-offset-3,.column.is-offset-3-tablet{margin-left:25%}.column.is-4,.column.is-4-tablet{flex:none;width:33.3333333333%}.column.is-offset-4,.column.is-offset-4-tablet{margin-left:33.3333333333%}.column.is-5,.column.is-5-tablet{flex:none;width:41.6666666667%}.column.is-offset-5,.column.is-offset-5-tablet{margin-left:41.6666666667%}.column.is-6,.column.is-6-tablet{flex:none;width:50%}.column.is-offset-6,.column.is-offset-6-tablet{margin-left:50%}.column.is-7,.column.is-7-tablet{flex:none;width:58.3333333333%}.column.is-offset-7,.column.is-offset-7-tablet{margin-left:58.3333333333%}.column.is-8,.column.is-8-tablet{flex:none;width:66.6666666667%}.column.is-offset-8,.column.is-offset-8-tablet{margin-left:66.6666666667%}.column.is-9,.column.is-9-tablet{flex:none;width:75%}.column.is-offset-9,.column.is-offset-9-tablet{margin-left:75%}.column.is-10,.column.is-10-tablet{flex:none;width:83.3333333333%}.column.is-offset-10,.column.is-offset-10-tablet{margin-left:83.3333333333%}.column.is-11,.column.is-11-tablet{flex:none;width:91.6666666667%}.column.is-offset-11,.column.is-offset-11-tablet{margin-left:91.6666666667%}.column.is-12,.column.is-12-tablet{flex:none;width:100%}.column.is-offset-12,.column.is-offset-12-tablet{margin-left:100%}}@media screen and (max-width: 1055px){.column.is-narrow-touch{flex:none}.column.is-full-touch{flex:none;width:100%}.column.is-three-quarters-touch{flex:none;width:75%}.column.is-two-thirds-touch{flex:none;width:66.6666%}.column.is-half-touch{flex:none;width:50%}.column.is-one-third-touch{flex:none;width:33.3333%}.column.is-one-quarter-touch{flex:none;width:25%}.column.is-one-fifth-touch{flex:none;width:20%}.column.is-two-fifths-touch{flex:none;width:40%}.column.is-three-fifths-touch{flex:none;width:60%}.column.is-four-fifths-touch{flex:none;width:80%}.column.is-offset-three-quarters-touch{margin-left:75%}.column.is-offset-two-thirds-touch{margin-left:66.6666%}.column.is-offset-half-touch{margin-left:50%}.column.is-offset-one-third-touch{margin-left:33.3333%}.column.is-offset-one-quarter-touch{margin-left:25%}.column.is-offset-one-fifth-touch{margin-left:20%}.column.is-offset-two-fifths-touch{margin-left:40%}.column.is-offset-three-fifths-touch{margin-left:60%}.column.is-offset-four-fifths-touch{margin-left:80%}.column.is-0-touch{flex:none;width:0%}.column.is-offset-0-touch{margin-left:0%}.column.is-1-touch{flex:none;width:8.3333333333%}.column.is-offset-1-touch{margin-left:8.3333333333%}.column.is-2-touch{flex:none;width:16.6666666667%}.column.is-offset-2-touch{margin-left:16.6666666667%}.column.is-3-touch{flex:none;width:25%}.column.is-offset-3-touch{margin-left:25%}.column.is-4-touch{flex:none;width:33.3333333333%}.column.is-offset-4-touch{margin-left:33.3333333333%}.column.is-5-touch{flex:none;width:41.6666666667%}.column.is-offset-5-touch{margin-left:41.6666666667%}.column.is-6-touch{flex:none;width:50%}.column.is-offset-6-touch{margin-left:50%}.column.is-7-touch{flex:none;width:58.3333333333%}.column.is-offset-7-touch{margin-left:58.3333333333%}.column.is-8-touch{flex:none;width:66.6666666667%}.column.is-offset-8-touch{margin-left:66.6666666667%}.column.is-9-touch{flex:none;width:75%}.column.is-offset-9-touch{margin-left:75%}.column.is-10-touch{flex:none;width:83.3333333333%}.column.is-offset-10-touch{margin-left:83.3333333333%}.column.is-11-touch{flex:none;width:91.6666666667%}.column.is-offset-11-touch{margin-left:91.6666666667%}.column.is-12-touch{flex:none;width:100%}.column.is-offset-12-touch{margin-left:100%}}@media screen and (min-width: 1056px){.column.is-narrow-desktop{flex:none}.column.is-full-desktop{flex:none;width:100%}.column.is-three-quarters-desktop{flex:none;width:75%}.column.is-two-thirds-desktop{flex:none;width:66.6666%}.column.is-half-desktop{flex:none;width:50%}.column.is-one-third-desktop{flex:none;width:33.3333%}.column.is-one-quarter-desktop{flex:none;width:25%}.column.is-one-fifth-desktop{flex:none;width:20%}.column.is-two-fifths-desktop{flex:none;width:40%}.column.is-three-fifths-desktop{flex:none;width:60%}.column.is-four-fifths-desktop{flex:none;width:80%}.column.is-offset-three-quarters-desktop{margin-left:75%}.column.is-offset-two-thirds-desktop{margin-left:66.6666%}.column.is-offset-half-desktop{margin-left:50%}.column.is-offset-one-third-desktop{margin-left:33.3333%}.column.is-offset-one-quarter-desktop{margin-left:25%}.column.is-offset-one-fifth-desktop{margin-left:20%}.column.is-offset-two-fifths-desktop{margin-left:40%}.column.is-offset-three-fifths-desktop{margin-left:60%}.column.is-offset-four-fifths-desktop{margin-left:80%}.column.is-0-desktop{flex:none;width:0%}.column.is-offset-0-desktop{margin-left:0%}.column.is-1-desktop{flex:none;width:8.3333333333%}.column.is-offset-1-desktop{margin-left:8.3333333333%}.column.is-2-desktop{flex:none;width:16.6666666667%}.column.is-offset-2-desktop{margin-left:16.6666666667%}.column.is-3-desktop{flex:none;width:25%}.column.is-offset-3-desktop{margin-left:25%}.column.is-4-desktop{flex:none;width:33.3333333333%}.column.is-offset-4-desktop{margin-left:33.3333333333%}.column.is-5-desktop{flex:none;width:41.6666666667%}.column.is-offset-5-desktop{margin-left:41.6666666667%}.column.is-6-desktop{flex:none;width:50%}.column.is-offset-6-desktop{margin-left:50%}.column.is-7-desktop{flex:none;width:58.3333333333%}.column.is-offset-7-desktop{margin-left:58.3333333333%}.column.is-8-desktop{flex:none;width:66.6666666667%}.column.is-offset-8-desktop{margin-left:66.6666666667%}.column.is-9-desktop{flex:none;width:75%}.column.is-offset-9-desktop{margin-left:75%}.column.is-10-desktop{flex:none;width:83.3333333333%}.column.is-offset-10-desktop{margin-left:83.3333333333%}.column.is-11-desktop{flex:none;width:91.6666666667%}.column.is-offset-11-desktop{margin-left:91.6666666667%}.column.is-12-desktop{flex:none;width:100%}.column.is-offset-12-desktop{margin-left:100%}}@media screen and (min-width: 1216px){.column.is-narrow-widescreen{flex:none}.column.is-full-widescreen{flex:none;width:100%}.column.is-three-quarters-widescreen{flex:none;width:75%}.column.is-two-thirds-widescreen{flex:none;width:66.6666%}.column.is-half-widescreen{flex:none;width:50%}.column.is-one-third-widescreen{flex:none;width:33.3333%}.column.is-one-quarter-widescreen{flex:none;width:25%}.column.is-one-fifth-widescreen{flex:none;width:20%}.column.is-two-fifths-widescreen{flex:none;width:40%}.column.is-three-fifths-widescreen{flex:none;width:60%}.column.is-four-fifths-widescreen{flex:none;width:80%}.column.is-offset-three-quarters-widescreen{margin-left:75%}.column.is-offset-two-thirds-widescreen{margin-left:66.6666%}.column.is-offset-half-widescreen{margin-left:50%}.column.is-offset-one-third-widescreen{margin-left:33.3333%}.column.is-offset-one-quarter-widescreen{margin-left:25%}.column.is-offset-one-fifth-widescreen{margin-left:20%}.column.is-offset-two-fifths-widescreen{margin-left:40%}.column.is-offset-three-fifths-widescreen{margin-left:60%}.column.is-offset-four-fifths-widescreen{margin-left:80%}.column.is-0-widescreen{flex:none;width:0%}.column.is-offset-0-widescreen{margin-left:0%}.column.is-1-widescreen{flex:none;width:8.3333333333%}.column.is-offset-1-widescreen{margin-left:8.3333333333%}.column.is-2-widescreen{flex:none;width:16.6666666667%}.column.is-offset-2-widescreen{margin-left:16.6666666667%}.column.is-3-widescreen{flex:none;width:25%}.column.is-offset-3-widescreen{margin-left:25%}.column.is-4-widescreen{flex:none;width:33.3333333333%}.column.is-offset-4-widescreen{margin-left:33.3333333333%}.column.is-5-widescreen{flex:none;width:41.6666666667%}.column.is-offset-5-widescreen{margin-left:41.6666666667%}.column.is-6-widescreen{flex:none;width:50%}.column.is-offset-6-widescreen{margin-left:50%}.column.is-7-widescreen{flex:none;width:58.3333333333%}.column.is-offset-7-widescreen{margin-left:58.3333333333%}.column.is-8-widescreen{flex:none;width:66.6666666667%}.column.is-offset-8-widescreen{margin-left:66.6666666667%}.column.is-9-widescreen{flex:none;width:75%}.column.is-offset-9-widescreen{margin-left:75%}.column.is-10-widescreen{flex:none;width:83.3333333333%}.column.is-offset-10-widescreen{margin-left:83.3333333333%}.column.is-11-widescreen{flex:none;width:91.6666666667%}.column.is-offset-11-widescreen{margin-left:91.6666666667%}.column.is-12-widescreen{flex:none;width:100%}.column.is-offset-12-widescreen{margin-left:100%}}@media screen and (min-width: 1408px){.column.is-narrow-fullhd{flex:none}.column.is-full-fullhd{flex:none;width:100%}.column.is-three-quarters-fullhd{flex:none;width:75%}.column.is-two-thirds-fullhd{flex:none;width:66.6666%}.column.is-half-fullhd{flex:none;width:50%}.column.is-one-third-fullhd{flex:none;width:33.3333%}.column.is-one-quarter-fullhd{flex:none;width:25%}.column.is-one-fifth-fullhd{flex:none;width:20%}.column.is-two-fifths-fullhd{flex:none;width:40%}.column.is-three-fifths-fullhd{flex:none;width:60%}.column.is-four-fifths-fullhd{flex:none;width:80%}.column.is-offset-three-quarters-fullhd{margin-left:75%}.column.is-offset-two-thirds-fullhd{margin-left:66.6666%}.column.is-offset-half-fullhd{margin-left:50%}.column.is-offset-one-third-fullhd{margin-left:33.3333%}.column.is-offset-one-quarter-fullhd{margin-left:25%}.column.is-offset-one-fifth-fullhd{margin-left:20%}.column.is-offset-two-fifths-fullhd{margin-left:40%}.column.is-offset-three-fifths-fullhd{margin-left:60%}.column.is-offset-four-fifths-fullhd{margin-left:80%}.column.is-0-fullhd{flex:none;width:0%}.column.is-offset-0-fullhd{margin-left:0%}.column.is-1-fullhd{flex:none;width:8.3333333333%}.column.is-offset-1-fullhd{margin-left:8.3333333333%}.column.is-2-fullhd{flex:none;width:16.6666666667%}.column.is-offset-2-fullhd{margin-left:16.6666666667%}.column.is-3-fullhd{flex:none;width:25%}.column.is-offset-3-fullhd{margin-left:25%}.column.is-4-fullhd{flex:none;width:33.3333333333%}.column.is-offset-4-fullhd{margin-left:33.3333333333%}.column.is-5-fullhd{flex:none;width:41.6666666667%}.column.is-offset-5-fullhd{margin-left:41.6666666667%}.column.is-6-fullhd{flex:none;width:50%}.column.is-offset-6-fullhd{margin-left:50%}.column.is-7-fullhd{flex:none;width:58.3333333333%}.column.is-offset-7-fullhd{margin-left:58.3333333333%}.column.is-8-fullhd{flex:none;width:66.6666666667%}.column.is-offset-8-fullhd{margin-left:66.6666666667%}.column.is-9-fullhd{flex:none;width:75%}.column.is-offset-9-fullhd{margin-left:75%}.column.is-10-fullhd{flex:none;width:83.3333333333%}.column.is-offset-10-fullhd{margin-left:83.3333333333%}.column.is-11-fullhd{flex:none;width:91.6666666667%}.column.is-offset-11-fullhd{margin-left:91.6666666667%}.column.is-12-fullhd{flex:none;width:100%}.column.is-offset-12-fullhd{margin-left:100%}}.columns{margin-left:-.75rem;margin-right:-.75rem;margin-top:-.75rem}.columns:last-child{margin-bottom:-.75rem}.columns:not(:last-child){margin-bottom:calc(1.5rem - .75rem)}.columns.is-centered{justify-content:center}.columns.is-gapless{margin-left:0;margin-right:0;margin-top:0}.columns.is-gapless>.column{margin:0;padding:0 !important}.columns.is-gapless:not(:last-child){margin-bottom:1.5rem}.columns.is-gapless:last-child{margin-bottom:0}.columns.is-mobile{display:flex}.columns.is-multiline{flex-wrap:wrap}.columns.is-vcentered{align-items:center}@media screen and (min-width: 769px),print{.columns:not(.is-desktop){display:flex}}@media screen and (min-width: 1056px){.columns.is-desktop{display:flex}}.columns.is-variable{--columnGap: 0.75rem;margin-left:calc(-1 * var(--columnGap));margin-right:calc(-1 * var(--columnGap))}.columns.is-variable .column{padding-left:var(--columnGap);padding-right:var(--columnGap)}.columns.is-variable.is-0{--columnGap: 0rem}@media screen and (max-width: 768px){.columns.is-variable.is-0-mobile{--columnGap: 0rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-0-tablet{--columnGap: 0rem}}@media screen and (min-width: 769px) and (max-width: 1055px){.columns.is-variable.is-0-tablet-only{--columnGap: 0rem}}@media screen and (max-width: 1055px){.columns.is-variable.is-0-touch{--columnGap: 0rem}}@media screen and (min-width: 1056px){.columns.is-variable.is-0-desktop{--columnGap: 0rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){.columns.is-variable.is-0-desktop-only{--columnGap: 0rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-0-widescreen{--columnGap: 0rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){.columns.is-variable.is-0-widescreen-only{--columnGap: 0rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-0-fullhd{--columnGap: 0rem}}.columns.is-variable.is-1{--columnGap: .25rem}@media screen and (max-width: 768px){.columns.is-variable.is-1-mobile{--columnGap: .25rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-1-tablet{--columnGap: .25rem}}@media screen and (min-width: 769px) and (max-width: 1055px){.columns.is-variable.is-1-tablet-only{--columnGap: .25rem}}@media screen and (max-width: 1055px){.columns.is-variable.is-1-touch{--columnGap: .25rem}}@media screen and (min-width: 1056px){.columns.is-variable.is-1-desktop{--columnGap: .25rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){.columns.is-variable.is-1-desktop-only{--columnGap: .25rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-1-widescreen{--columnGap: .25rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){.columns.is-variable.is-1-widescreen-only{--columnGap: .25rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-1-fullhd{--columnGap: .25rem}}.columns.is-variable.is-2{--columnGap: .5rem}@media screen and (max-width: 768px){.columns.is-variable.is-2-mobile{--columnGap: .5rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-2-tablet{--columnGap: .5rem}}@media screen and (min-width: 769px) and (max-width: 1055px){.columns.is-variable.is-2-tablet-only{--columnGap: .5rem}}@media screen and (max-width: 1055px){.columns.is-variable.is-2-touch{--columnGap: .5rem}}@media screen and (min-width: 1056px){.columns.is-variable.is-2-desktop{--columnGap: .5rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){.columns.is-variable.is-2-desktop-only{--columnGap: .5rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-2-widescreen{--columnGap: .5rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){.columns.is-variable.is-2-widescreen-only{--columnGap: .5rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-2-fullhd{--columnGap: .5rem}}.columns.is-variable.is-3{--columnGap: .75rem}@media screen and (max-width: 768px){.columns.is-variable.is-3-mobile{--columnGap: .75rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-3-tablet{--columnGap: .75rem}}@media screen and (min-width: 769px) and (max-width: 1055px){.columns.is-variable.is-3-tablet-only{--columnGap: .75rem}}@media screen and (max-width: 1055px){.columns.is-variable.is-3-touch{--columnGap: .75rem}}@media screen and (min-width: 1056px){.columns.is-variable.is-3-desktop{--columnGap: .75rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){.columns.is-variable.is-3-desktop-only{--columnGap: .75rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-3-widescreen{--columnGap: .75rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){.columns.is-variable.is-3-widescreen-only{--columnGap: .75rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-3-fullhd{--columnGap: .75rem}}.columns.is-variable.is-4{--columnGap: 1rem}@media screen and (max-width: 768px){.columns.is-variable.is-4-mobile{--columnGap: 1rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-4-tablet{--columnGap: 1rem}}@media screen and (min-width: 769px) and (max-width: 1055px){.columns.is-variable.is-4-tablet-only{--columnGap: 1rem}}@media screen and (max-width: 1055px){.columns.is-variable.is-4-touch{--columnGap: 1rem}}@media screen and (min-width: 1056px){.columns.is-variable.is-4-desktop{--columnGap: 1rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){.columns.is-variable.is-4-desktop-only{--columnGap: 1rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-4-widescreen{--columnGap: 1rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){.columns.is-variable.is-4-widescreen-only{--columnGap: 1rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-4-fullhd{--columnGap: 1rem}}.columns.is-variable.is-5{--columnGap: 1.25rem}@media screen and (max-width: 768px){.columns.is-variable.is-5-mobile{--columnGap: 1.25rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-5-tablet{--columnGap: 1.25rem}}@media screen and (min-width: 769px) and (max-width: 1055px){.columns.is-variable.is-5-tablet-only{--columnGap: 1.25rem}}@media screen and (max-width: 1055px){.columns.is-variable.is-5-touch{--columnGap: 1.25rem}}@media screen and (min-width: 1056px){.columns.is-variable.is-5-desktop{--columnGap: 1.25rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){.columns.is-variable.is-5-desktop-only{--columnGap: 1.25rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-5-widescreen{--columnGap: 1.25rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){.columns.is-variable.is-5-widescreen-only{--columnGap: 1.25rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-5-fullhd{--columnGap: 1.25rem}}.columns.is-variable.is-6{--columnGap: 1.5rem}@media screen and (max-width: 768px){.columns.is-variable.is-6-mobile{--columnGap: 1.5rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-6-tablet{--columnGap: 1.5rem}}@media screen and (min-width: 769px) and (max-width: 1055px){.columns.is-variable.is-6-tablet-only{--columnGap: 1.5rem}}@media screen and (max-width: 1055px){.columns.is-variable.is-6-touch{--columnGap: 1.5rem}}@media screen and (min-width: 1056px){.columns.is-variable.is-6-desktop{--columnGap: 1.5rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){.columns.is-variable.is-6-desktop-only{--columnGap: 1.5rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-6-widescreen{--columnGap: 1.5rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){.columns.is-variable.is-6-widescreen-only{--columnGap: 1.5rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-6-fullhd{--columnGap: 1.5rem}}.columns.is-variable.is-7{--columnGap: 1.75rem}@media screen and (max-width: 768px){.columns.is-variable.is-7-mobile{--columnGap: 1.75rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-7-tablet{--columnGap: 1.75rem}}@media screen and (min-width: 769px) and (max-width: 1055px){.columns.is-variable.is-7-tablet-only{--columnGap: 1.75rem}}@media screen and (max-width: 1055px){.columns.is-variable.is-7-touch{--columnGap: 1.75rem}}@media screen and (min-width: 1056px){.columns.is-variable.is-7-desktop{--columnGap: 1.75rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){.columns.is-variable.is-7-desktop-only{--columnGap: 1.75rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-7-widescreen{--columnGap: 1.75rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){.columns.is-variable.is-7-widescreen-only{--columnGap: 1.75rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-7-fullhd{--columnGap: 1.75rem}}.columns.is-variable.is-8{--columnGap: 2rem}@media screen and (max-width: 768px){.columns.is-variable.is-8-mobile{--columnGap: 2rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-8-tablet{--columnGap: 2rem}}@media screen and (min-width: 769px) and (max-width: 1055px){.columns.is-variable.is-8-tablet-only{--columnGap: 2rem}}@media screen and (max-width: 1055px){.columns.is-variable.is-8-touch{--columnGap: 2rem}}@media screen and (min-width: 1056px){.columns.is-variable.is-8-desktop{--columnGap: 2rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){.columns.is-variable.is-8-desktop-only{--columnGap: 2rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-8-widescreen{--columnGap: 2rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){.columns.is-variable.is-8-widescreen-only{--columnGap: 2rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-8-fullhd{--columnGap: 2rem}}.tile{align-items:stretch;display:block;flex-basis:0;flex-grow:1;flex-shrink:1;min-height:min-content}.tile.is-ancestor{margin-left:-.75rem;margin-right:-.75rem;margin-top:-.75rem}.tile.is-ancestor:last-child{margin-bottom:-.75rem}.tile.is-ancestor:not(:last-child){margin-bottom:.75rem}.tile.is-child{margin:0 !important}.tile.is-parent{padding:.75rem}.tile.is-vertical{flex-direction:column}.tile.is-vertical>.tile.is-child:not(:last-child){margin-bottom:1.5rem !important}@media screen and (min-width: 769px),print{.tile:not(.is-child){display:flex}.tile.is-1{flex:none;width:8.3333333333%}.tile.is-2{flex:none;width:16.6666666667%}.tile.is-3{flex:none;width:25%}.tile.is-4{flex:none;width:33.3333333333%}.tile.is-5{flex:none;width:41.6666666667%}.tile.is-6{flex:none;width:50%}.tile.is-7{flex:none;width:58.3333333333%}.tile.is-8{flex:none;width:66.6666666667%}.tile.is-9{flex:none;width:75%}.tile.is-10{flex:none;width:83.3333333333%}.tile.is-11{flex:none;width:91.6666666667%}.tile.is-12{flex:none;width:100%}}.hero{align-items:stretch;display:flex;flex-direction:column;justify-content:space-between}.hero .navbar{background:none}.hero .tabs ul{border-bottom:none}.hero.is-white{background-color:#fff;color:#0a0a0a}.hero.is-white a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-white strong{color:inherit}.hero.is-white .title{color:#0a0a0a}.hero.is-white .subtitle{color:rgba(10,10,10,0.9)}.hero.is-white .subtitle a:not(.button),.hero.is-white .subtitle strong{color:#0a0a0a}@media screen and (max-width: 1055px){.hero.is-white .navbar-menu{background-color:#fff}}.hero.is-white .navbar-item,.hero.is-white .navbar-link{color:rgba(10,10,10,0.7)}.hero.is-white a.navbar-item:hover,.hero.is-white a.navbar-item.is-active,.hero.is-white .navbar-link:hover,.hero.is-white .navbar-link.is-active{background-color:#f2f2f2;color:#0a0a0a}.hero.is-white .tabs a{color:#0a0a0a;opacity:0.9}.hero.is-white .tabs a:hover{opacity:1}.hero.is-white .tabs li.is-active a{opacity:1}.hero.is-white .tabs.is-boxed a,.hero.is-white .tabs.is-toggle a{color:#0a0a0a}.hero.is-white .tabs.is-boxed a:hover,.hero.is-white .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}.hero.is-white .tabs.is-boxed li.is-active a,.hero.is-white .tabs.is-boxed li.is-active a:hover,.hero.is-white .tabs.is-toggle li.is-active a,.hero.is-white .tabs.is-toggle li.is-active a:hover{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}.hero.is-white.is-bold{background-image:linear-gradient(141deg, #e8e3e4 0%, #fff 71%, #fff 100%)}@media screen and (max-width: 768px){.hero.is-white.is-bold .navbar-menu{background-image:linear-gradient(141deg, #e8e3e4 0%, #fff 71%, #fff 100%)}}.hero.is-black{background-color:#0a0a0a;color:#fff}.hero.is-black a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-black strong{color:inherit}.hero.is-black .title{color:#fff}.hero.is-black .subtitle{color:rgba(255,255,255,0.9)}.hero.is-black .subtitle a:not(.button),.hero.is-black .subtitle strong{color:#fff}@media screen and (max-width: 1055px){.hero.is-black .navbar-menu{background-color:#0a0a0a}}.hero.is-black .navbar-item,.hero.is-black .navbar-link{color:rgba(255,255,255,0.7)}.hero.is-black a.navbar-item:hover,.hero.is-black a.navbar-item.is-active,.hero.is-black .navbar-link:hover,.hero.is-black .navbar-link.is-active{background-color:#000;color:#fff}.hero.is-black .tabs a{color:#fff;opacity:0.9}.hero.is-black .tabs a:hover{opacity:1}.hero.is-black .tabs li.is-active a{opacity:1}.hero.is-black .tabs.is-boxed a,.hero.is-black .tabs.is-toggle a{color:#fff}.hero.is-black .tabs.is-boxed a:hover,.hero.is-black .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}.hero.is-black .tabs.is-boxed li.is-active a,.hero.is-black .tabs.is-boxed li.is-active a:hover,.hero.is-black .tabs.is-toggle li.is-active a,.hero.is-black .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#0a0a0a}.hero.is-black.is-bold{background-image:linear-gradient(141deg, #000 0%, #0a0a0a 71%, #181616 100%)}@media screen and (max-width: 768px){.hero.is-black.is-bold .navbar-menu{background-image:linear-gradient(141deg, #000 0%, #0a0a0a 71%, #181616 100%)}}.hero.is-light{background-color:#f5f5f5;color:#363636}.hero.is-light a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-light strong{color:inherit}.hero.is-light .title{color:#363636}.hero.is-light .subtitle{color:rgba(54,54,54,0.9)}.hero.is-light .subtitle a:not(.button),.hero.is-light .subtitle strong{color:#363636}@media screen and (max-width: 1055px){.hero.is-light .navbar-menu{background-color:#f5f5f5}}.hero.is-light .navbar-item,.hero.is-light .navbar-link{color:rgba(54,54,54,0.7)}.hero.is-light a.navbar-item:hover,.hero.is-light a.navbar-item.is-active,.hero.is-light .navbar-link:hover,.hero.is-light .navbar-link.is-active{background-color:#e8e8e8;color:#363636}.hero.is-light .tabs a{color:#363636;opacity:0.9}.hero.is-light .tabs a:hover{opacity:1}.hero.is-light .tabs li.is-active a{opacity:1}.hero.is-light .tabs.is-boxed a,.hero.is-light .tabs.is-toggle a{color:#363636}.hero.is-light .tabs.is-boxed a:hover,.hero.is-light .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}.hero.is-light .tabs.is-boxed li.is-active a,.hero.is-light .tabs.is-boxed li.is-active a:hover,.hero.is-light .tabs.is-toggle li.is-active a,.hero.is-light .tabs.is-toggle li.is-active a:hover{background-color:#363636;border-color:#363636;color:#f5f5f5}.hero.is-light.is-bold{background-image:linear-gradient(141deg, #dfd8d9 0%, #f5f5f5 71%, #fff 100%)}@media screen and (max-width: 768px){.hero.is-light.is-bold .navbar-menu{background-image:linear-gradient(141deg, #dfd8d9 0%, #f5f5f5 71%, #fff 100%)}}.hero.is-dark,.content kbd.hero{background-color:#363636;color:#f5f5f5}.hero.is-dark a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.content kbd.hero a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-dark strong,.content kbd.hero strong{color:inherit}.hero.is-dark .title,.content kbd.hero .title{color:#f5f5f5}.hero.is-dark .subtitle,.content kbd.hero .subtitle{color:rgba(245,245,245,0.9)}.hero.is-dark .subtitle a:not(.button),.content kbd.hero .subtitle a:not(.button),.hero.is-dark .subtitle strong,.content kbd.hero .subtitle strong{color:#f5f5f5}@media screen and (max-width: 1055px){.hero.is-dark .navbar-menu,.content kbd.hero .navbar-menu{background-color:#363636}}.hero.is-dark .navbar-item,.content kbd.hero .navbar-item,.hero.is-dark .navbar-link,.content kbd.hero .navbar-link{color:rgba(245,245,245,0.7)}.hero.is-dark a.navbar-item:hover,.content kbd.hero a.navbar-item:hover,.hero.is-dark a.navbar-item.is-active,.content kbd.hero a.navbar-item.is-active,.hero.is-dark .navbar-link:hover,.content kbd.hero .navbar-link:hover,.hero.is-dark .navbar-link.is-active,.content kbd.hero .navbar-link.is-active{background-color:#292929;color:#f5f5f5}.hero.is-dark .tabs a,.content kbd.hero .tabs a{color:#f5f5f5;opacity:0.9}.hero.is-dark .tabs a:hover,.content kbd.hero .tabs a:hover{opacity:1}.hero.is-dark .tabs li.is-active a,.content kbd.hero .tabs li.is-active a{opacity:1}.hero.is-dark .tabs.is-boxed a,.content kbd.hero .tabs.is-boxed a,.hero.is-dark .tabs.is-toggle a,.content kbd.hero .tabs.is-toggle a{color:#f5f5f5}.hero.is-dark .tabs.is-boxed a:hover,.content kbd.hero .tabs.is-boxed a:hover,.hero.is-dark .tabs.is-toggle a:hover,.content kbd.hero .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}.hero.is-dark .tabs.is-boxed li.is-active a,.content kbd.hero .tabs.is-boxed li.is-active a,.hero.is-dark .tabs.is-boxed li.is-active a:hover,.hero.is-dark .tabs.is-toggle li.is-active a,.content kbd.hero .tabs.is-toggle li.is-active a,.hero.is-dark .tabs.is-toggle li.is-active a:hover{background-color:#f5f5f5;border-color:#f5f5f5;color:#363636}.hero.is-dark.is-bold,.content kbd.hero.is-bold{background-image:linear-gradient(141deg, #1f191a 0%, #363636 71%, #46403f 100%)}@media screen and (max-width: 768px){.hero.is-dark.is-bold .navbar-menu,.content kbd.hero.is-bold .navbar-menu{background-image:linear-gradient(141deg, #1f191a 0%, #363636 71%, #46403f 100%)}}.hero.is-primary,.docstring>section>a.hero.docs-sourcelink{background-color:#4eb5de;color:#fff}.hero.is-primary a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.docstring>section>a.hero.docs-sourcelink a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-primary strong,.docstring>section>a.hero.docs-sourcelink strong{color:inherit}.hero.is-primary .title,.docstring>section>a.hero.docs-sourcelink .title{color:#fff}.hero.is-primary .subtitle,.docstring>section>a.hero.docs-sourcelink .subtitle{color:rgba(255,255,255,0.9)}.hero.is-primary .subtitle a:not(.button),.docstring>section>a.hero.docs-sourcelink .subtitle a:not(.button),.hero.is-primary .subtitle strong,.docstring>section>a.hero.docs-sourcelink .subtitle strong{color:#fff}@media screen and (max-width: 1055px){.hero.is-primary .navbar-menu,.docstring>section>a.hero.docs-sourcelink .navbar-menu{background-color:#4eb5de}}.hero.is-primary .navbar-item,.docstring>section>a.hero.docs-sourcelink .navbar-item,.hero.is-primary .navbar-link,.docstring>section>a.hero.docs-sourcelink .navbar-link{color:rgba(255,255,255,0.7)}.hero.is-primary a.navbar-item:hover,.docstring>section>a.hero.docs-sourcelink a.navbar-item:hover,.hero.is-primary a.navbar-item.is-active,.docstring>section>a.hero.docs-sourcelink a.navbar-item.is-active,.hero.is-primary .navbar-link:hover,.docstring>section>a.hero.docs-sourcelink .navbar-link:hover,.hero.is-primary .navbar-link.is-active,.docstring>section>a.hero.docs-sourcelink .navbar-link.is-active{background-color:#39acda;color:#fff}.hero.is-primary .tabs a,.docstring>section>a.hero.docs-sourcelink .tabs a{color:#fff;opacity:0.9}.hero.is-primary .tabs a:hover,.docstring>section>a.hero.docs-sourcelink .tabs a:hover{opacity:1}.hero.is-primary .tabs li.is-active a,.docstring>section>a.hero.docs-sourcelink .tabs li.is-active a{opacity:1}.hero.is-primary .tabs.is-boxed a,.docstring>section>a.hero.docs-sourcelink .tabs.is-boxed a,.hero.is-primary .tabs.is-toggle a,.docstring>section>a.hero.docs-sourcelink .tabs.is-toggle a{color:#fff}.hero.is-primary .tabs.is-boxed a:hover,.docstring>section>a.hero.docs-sourcelink .tabs.is-boxed a:hover,.hero.is-primary .tabs.is-toggle a:hover,.docstring>section>a.hero.docs-sourcelink .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}.hero.is-primary .tabs.is-boxed li.is-active a,.docstring>section>a.hero.docs-sourcelink .tabs.is-boxed li.is-active a,.hero.is-primary .tabs.is-boxed li.is-active a:hover,.hero.is-primary .tabs.is-toggle li.is-active a,.docstring>section>a.hero.docs-sourcelink .tabs.is-toggle li.is-active a,.hero.is-primary .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#4eb5de}.hero.is-primary.is-bold,.docstring>section>a.hero.is-bold.docs-sourcelink{background-image:linear-gradient(141deg, #1bc7de 0%, #4eb5de 71%, #5fa9e7 100%)}@media screen and (max-width: 768px){.hero.is-primary.is-bold .navbar-menu,.docstring>section>a.hero.is-bold.docs-sourcelink .navbar-menu{background-image:linear-gradient(141deg, #1bc7de 0%, #4eb5de 71%, #5fa9e7 100%)}}.hero.is-link{background-color:#2e63b8;color:#fff}.hero.is-link a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-link strong{color:inherit}.hero.is-link .title{color:#fff}.hero.is-link .subtitle{color:rgba(255,255,255,0.9)}.hero.is-link .subtitle a:not(.button),.hero.is-link .subtitle strong{color:#fff}@media screen and (max-width: 1055px){.hero.is-link .navbar-menu{background-color:#2e63b8}}.hero.is-link .navbar-item,.hero.is-link .navbar-link{color:rgba(255,255,255,0.7)}.hero.is-link a.navbar-item:hover,.hero.is-link a.navbar-item.is-active,.hero.is-link .navbar-link:hover,.hero.is-link .navbar-link.is-active{background-color:#2958a4;color:#fff}.hero.is-link .tabs a{color:#fff;opacity:0.9}.hero.is-link .tabs a:hover{opacity:1}.hero.is-link .tabs li.is-active a{opacity:1}.hero.is-link .tabs.is-boxed a,.hero.is-link .tabs.is-toggle a{color:#fff}.hero.is-link .tabs.is-boxed a:hover,.hero.is-link .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}.hero.is-link .tabs.is-boxed li.is-active a,.hero.is-link .tabs.is-boxed li.is-active a:hover,.hero.is-link .tabs.is-toggle li.is-active a,.hero.is-link .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#2e63b8}.hero.is-link.is-bold{background-image:linear-gradient(141deg, #1b6098 0%, #2e63b8 71%, #2d51d2 100%)}@media screen and (max-width: 768px){.hero.is-link.is-bold .navbar-menu{background-image:linear-gradient(141deg, #1b6098 0%, #2e63b8 71%, #2d51d2 100%)}}.hero.is-info{background-color:#209cee;color:#fff}.hero.is-info a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-info strong{color:inherit}.hero.is-info .title{color:#fff}.hero.is-info .subtitle{color:rgba(255,255,255,0.9)}.hero.is-info .subtitle a:not(.button),.hero.is-info .subtitle strong{color:#fff}@media screen and (max-width: 1055px){.hero.is-info .navbar-menu{background-color:#209cee}}.hero.is-info .navbar-item,.hero.is-info .navbar-link{color:rgba(255,255,255,0.7)}.hero.is-info a.navbar-item:hover,.hero.is-info a.navbar-item.is-active,.hero.is-info .navbar-link:hover,.hero.is-info .navbar-link.is-active{background-color:#1190e3;color:#fff}.hero.is-info .tabs a{color:#fff;opacity:0.9}.hero.is-info .tabs a:hover{opacity:1}.hero.is-info .tabs li.is-active a{opacity:1}.hero.is-info .tabs.is-boxed a,.hero.is-info .tabs.is-toggle a{color:#fff}.hero.is-info .tabs.is-boxed a:hover,.hero.is-info .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}.hero.is-info .tabs.is-boxed li.is-active a,.hero.is-info .tabs.is-boxed li.is-active a:hover,.hero.is-info .tabs.is-toggle li.is-active a,.hero.is-info .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#209cee}.hero.is-info.is-bold{background-image:linear-gradient(141deg, #05a6d6 0%, #209cee 71%, #3287f5 100%)}@media screen and (max-width: 768px){.hero.is-info.is-bold .navbar-menu{background-image:linear-gradient(141deg, #05a6d6 0%, #209cee 71%, #3287f5 100%)}}.hero.is-success{background-color:#22c35b;color:#fff}.hero.is-success a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-success strong{color:inherit}.hero.is-success .title{color:#fff}.hero.is-success .subtitle{color:rgba(255,255,255,0.9)}.hero.is-success .subtitle a:not(.button),.hero.is-success .subtitle strong{color:#fff}@media screen and (max-width: 1055px){.hero.is-success .navbar-menu{background-color:#22c35b}}.hero.is-success .navbar-item,.hero.is-success .navbar-link{color:rgba(255,255,255,0.7)}.hero.is-success a.navbar-item:hover,.hero.is-success a.navbar-item.is-active,.hero.is-success .navbar-link:hover,.hero.is-success .navbar-link.is-active{background-color:#1ead51;color:#fff}.hero.is-success .tabs a{color:#fff;opacity:0.9}.hero.is-success .tabs a:hover{opacity:1}.hero.is-success .tabs li.is-active a{opacity:1}.hero.is-success .tabs.is-boxed a,.hero.is-success .tabs.is-toggle a{color:#fff}.hero.is-success .tabs.is-boxed a:hover,.hero.is-success .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}.hero.is-success .tabs.is-boxed li.is-active a,.hero.is-success .tabs.is-boxed li.is-active a:hover,.hero.is-success .tabs.is-toggle li.is-active a,.hero.is-success .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#22c35b}.hero.is-success.is-bold{background-image:linear-gradient(141deg, #12a02c 0%, #22c35b 71%, #1fdf83 100%)}@media screen and (max-width: 768px){.hero.is-success.is-bold .navbar-menu{background-image:linear-gradient(141deg, #12a02c 0%, #22c35b 71%, #1fdf83 100%)}}.hero.is-warning{background-color:#ffdd57;color:rgba(0,0,0,0.7)}.hero.is-warning a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-warning strong{color:inherit}.hero.is-warning .title{color:rgba(0,0,0,0.7)}.hero.is-warning .subtitle{color:rgba(0,0,0,0.9)}.hero.is-warning .subtitle a:not(.button),.hero.is-warning .subtitle strong{color:rgba(0,0,0,0.7)}@media screen and (max-width: 1055px){.hero.is-warning .navbar-menu{background-color:#ffdd57}}.hero.is-warning .navbar-item,.hero.is-warning .navbar-link{color:rgba(0,0,0,0.7)}.hero.is-warning a.navbar-item:hover,.hero.is-warning a.navbar-item.is-active,.hero.is-warning .navbar-link:hover,.hero.is-warning .navbar-link.is-active{background-color:#ffd83e;color:rgba(0,0,0,0.7)}.hero.is-warning .tabs a{color:rgba(0,0,0,0.7);opacity:0.9}.hero.is-warning .tabs a:hover{opacity:1}.hero.is-warning .tabs li.is-active a{opacity:1}.hero.is-warning .tabs.is-boxed a,.hero.is-warning .tabs.is-toggle a{color:rgba(0,0,0,0.7)}.hero.is-warning .tabs.is-boxed a:hover,.hero.is-warning .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}.hero.is-warning .tabs.is-boxed li.is-active a,.hero.is-warning .tabs.is-boxed li.is-active a:hover,.hero.is-warning .tabs.is-toggle li.is-active a,.hero.is-warning .tabs.is-toggle li.is-active a:hover{background-color:rgba(0,0,0,0.7);border-color:rgba(0,0,0,0.7);color:#ffdd57}.hero.is-warning.is-bold{background-image:linear-gradient(141deg, #ffae24 0%, #ffdd57 71%, #fffa71 100%)}@media screen and (max-width: 768px){.hero.is-warning.is-bold .navbar-menu{background-image:linear-gradient(141deg, #ffae24 0%, #ffdd57 71%, #fffa71 100%)}}.hero.is-danger{background-color:#da0b00;color:#fff}.hero.is-danger a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-danger strong{color:inherit}.hero.is-danger .title{color:#fff}.hero.is-danger .subtitle{color:rgba(255,255,255,0.9)}.hero.is-danger .subtitle a:not(.button),.hero.is-danger .subtitle strong{color:#fff}@media screen and (max-width: 1055px){.hero.is-danger .navbar-menu{background-color:#da0b00}}.hero.is-danger .navbar-item,.hero.is-danger .navbar-link{color:rgba(255,255,255,0.7)}.hero.is-danger a.navbar-item:hover,.hero.is-danger a.navbar-item.is-active,.hero.is-danger .navbar-link:hover,.hero.is-danger .navbar-link.is-active{background-color:#c10a00;color:#fff}.hero.is-danger .tabs a{color:#fff;opacity:0.9}.hero.is-danger .tabs a:hover{opacity:1}.hero.is-danger .tabs li.is-active a{opacity:1}.hero.is-danger .tabs.is-boxed a,.hero.is-danger .tabs.is-toggle a{color:#fff}.hero.is-danger .tabs.is-boxed a:hover,.hero.is-danger .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}.hero.is-danger .tabs.is-boxed li.is-active a,.hero.is-danger .tabs.is-boxed li.is-active a:hover,.hero.is-danger .tabs.is-toggle li.is-active a,.hero.is-danger .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#da0b00}.hero.is-danger.is-bold{background-image:linear-gradient(141deg, #a70013 0%, #da0b00 71%, #f43500 100%)}@media screen and (max-width: 768px){.hero.is-danger.is-bold .navbar-menu{background-image:linear-gradient(141deg, #a70013 0%, #da0b00 71%, #f43500 100%)}}.hero.is-small .hero-body,#documenter .docs-sidebar form.docs-search>input.hero .hero-body{padding-bottom:1.5rem;padding-top:1.5rem}@media screen and (min-width: 769px),print{.hero.is-medium .hero-body{padding-bottom:9rem;padding-top:9rem}}@media screen and (min-width: 769px),print{.hero.is-large .hero-body{padding-bottom:18rem;padding-top:18rem}}.hero.is-halfheight .hero-body,.hero.is-fullheight .hero-body,.hero.is-fullheight-with-navbar .hero-body{align-items:center;display:flex}.hero.is-halfheight .hero-body>.container,.hero.is-fullheight .hero-body>.container,.hero.is-fullheight-with-navbar .hero-body>.container{flex-grow:1;flex-shrink:1}.hero.is-halfheight{min-height:50vh}.hero.is-fullheight{min-height:100vh}.hero-video{overflow:hidden}.hero-video video{left:50%;min-height:100%;min-width:100%;position:absolute;top:50%;transform:translate3d(-50%, -50%, 0)}.hero-video.is-transparent{opacity:0.3}@media screen and (max-width: 768px){.hero-video{display:none}}.hero-buttons{margin-top:1.5rem}@media screen and (max-width: 768px){.hero-buttons .button{display:flex}.hero-buttons .button:not(:last-child){margin-bottom:0.75rem}}@media screen and (min-width: 769px),print{.hero-buttons{display:flex;justify-content:center}.hero-buttons .button:not(:last-child){margin-right:1.5rem}}.hero-head,.hero-foot{flex-grow:0;flex-shrink:0}.hero-body{flex-grow:1;flex-shrink:0;padding:3rem 1.5rem}.section{padding:3rem 1.5rem}@media screen and (min-width: 1056px){.section.is-medium{padding:9rem 1.5rem}.section.is-large{padding:18rem 1.5rem}}.footer{background-color:#fafafa;padding:3rem 1.5rem 6rem}h1 .docs-heading-anchor,h1 .docs-heading-anchor:hover,h1 .docs-heading-anchor:visited,h2 .docs-heading-anchor,h2 .docs-heading-anchor:hover,h2 .docs-heading-anchor:visited,h3 .docs-heading-anchor,h3 .docs-heading-anchor:hover,h3 .docs-heading-anchor:visited,h4 .docs-heading-anchor,h4 .docs-heading-anchor:hover,h4 .docs-heading-anchor:visited,h5 .docs-heading-anchor,h5 .docs-heading-anchor:hover,h5 .docs-heading-anchor:visited,h6 .docs-heading-anchor,h6 .docs-heading-anchor:hover,h6 .docs-heading-anchor:visited{color:#222}h1 .docs-heading-anchor-permalink,h2 .docs-heading-anchor-permalink,h3 .docs-heading-anchor-permalink,h4 .docs-heading-anchor-permalink,h5 .docs-heading-anchor-permalink,h6 .docs-heading-anchor-permalink{visibility:hidden;vertical-align:middle;margin-left:0.5em;font-size:0.7rem}h1 .docs-heading-anchor-permalink::before,h2 .docs-heading-anchor-permalink::before,h3 .docs-heading-anchor-permalink::before,h4 .docs-heading-anchor-permalink::before,h5 .docs-heading-anchor-permalink::before,h6 .docs-heading-anchor-permalink::before{font-family:"Font Awesome 5 Free";font-weight:900;content:"\f0c1"}h1:hover .docs-heading-anchor-permalink,h2:hover .docs-heading-anchor-permalink,h3:hover .docs-heading-anchor-permalink,h4:hover .docs-heading-anchor-permalink,h5:hover .docs-heading-anchor-permalink,h6:hover .docs-heading-anchor-permalink{visibility:visible}.docs-dark-only{display:none !important}pre{position:relative;overflow:hidden}pre code,pre code.hljs{padding:0 .75rem !important;overflow:auto;display:block}pre code:first-of-type,pre code.hljs:first-of-type{padding-top:0.5rem !important}pre code:last-of-type,pre code.hljs:last-of-type{padding-bottom:0.5rem !important}pre .copy-button{opacity:0.2;transition:opacity 0.2s;position:absolute;right:0em;top:0em;padding:0.5em;width:2.5em;height:2.5em;background:transparent;border:none;font-family:"Font Awesome 5 Free";color:#222;cursor:pointer;text-align:center}pre .copy-button:focus,pre .copy-button:hover{opacity:1;background:rgba(34,34,34,0.1);color:#2e63b8}pre .copy-button.success{color:#259a12;opacity:1}pre .copy-button.error{color:#cb3c33;opacity:1}pre:hover .copy-button{opacity:1}.admonition{background-color:#b5b5b5;border-style:solid;border-width:1px;border-color:#363636;border-radius:4px;font-size:1rem}.admonition strong{color:currentColor}.admonition.is-small,#documenter .docs-sidebar form.docs-search>input.admonition{font-size:.75rem}.admonition.is-medium{font-size:1.25rem}.admonition.is-large{font-size:1.5rem}.admonition.is-default{background-color:#b5b5b5;border-color:#363636}.admonition.is-default>.admonition-header{background-color:#363636;color:#fff}.admonition.is-default>.admonition-body{color:#fff}.admonition.is-info{background-color:#def0fc;border-color:#209cee}.admonition.is-info>.admonition-header{background-color:#209cee;color:#fff}.admonition.is-info>.admonition-body{color:rgba(0,0,0,0.7)}.admonition.is-success{background-color:#bdf4d1;border-color:#22c35b}.admonition.is-success>.admonition-header{background-color:#22c35b;color:#fff}.admonition.is-success>.admonition-body{color:rgba(0,0,0,0.7)}.admonition.is-warning{background-color:#fff3c5;border-color:#ffdd57}.admonition.is-warning>.admonition-header{background-color:#ffdd57;color:rgba(0,0,0,0.7)}.admonition.is-warning>.admonition-body{color:rgba(0,0,0,0.7)}.admonition.is-danger{background-color:#ffaba7;border-color:#da0b00}.admonition.is-danger>.admonition-header{background-color:#da0b00;color:#fff}.admonition.is-danger>.admonition-body{color:rgba(0,0,0,0.7)}.admonition.is-compat{background-color:#bdeff5;border-color:#1db5c9}.admonition.is-compat>.admonition-header{background-color:#1db5c9;color:#fff}.admonition.is-compat>.admonition-body{color:rgba(0,0,0,0.7)}.admonition-header{color:#fff;background-color:#363636;align-items:center;font-weight:700;justify-content:space-between;line-height:1.25;padding:0.5rem .75rem;position:relative}.admonition-header:before{font-family:"Font Awesome 5 Free";font-weight:900;margin-right:.75rem;content:"\f06a"}.admonition-body{color:#222;padding:0.5rem .75rem}.admonition-body pre{background-color:#f5f5f5}.admonition-body code{background-color:rgba(0,0,0,0.05)}.docstring{margin-bottom:1em;background-color:rgba(0,0,0,0);border:1px solid #dbdbdb;box-shadow:2px 2px 3px rgba(10,10,10,0.1);max-width:100%}.docstring>header{display:flex;flex-grow:1;align-items:stretch;padding:0.5rem .75rem;background-color:#f5f5f5;box-shadow:0 1px 2px rgba(10,10,10,0.1);box-shadow:none;border-bottom:1px solid #dbdbdb}.docstring>header code{background-color:transparent}.docstring>header .docstring-binding{margin-right:0.3em}.docstring>header .docstring-category{margin-left:0.3em}.docstring>section{position:relative;padding:.75rem .75rem;border-bottom:1px solid #dbdbdb}.docstring>section:last-child{border-bottom:none}.docstring>section>a.docs-sourcelink{transition:opacity 0.3s;opacity:0;position:absolute;right:.375rem;bottom:.375rem}.docstring>section>a.docs-sourcelink:focus{opacity:1 !important}.docstring:hover>section>a.docs-sourcelink{opacity:0.2}.docstring:focus-within>section>a.docs-sourcelink{opacity:0.2}.docstring>section:hover a.docs-sourcelink{opacity:1}.documenter-example-output{background-color:#fff}.outdated-warning-overlay{position:fixed;top:0;left:0;right:0;box-shadow:0 0 10px rgba(0,0,0,0.3);z-index:999;background-color:#ffaba7;color:rgba(0,0,0,0.7);border-bottom:3px solid #da0b00;padding:10px 35px;text-align:center;font-size:15px}.outdated-warning-overlay .outdated-warning-closer{position:absolute;top:calc(50% - 10px);right:18px;cursor:pointer;width:12px}.outdated-warning-overlay a{color:#2e63b8}.outdated-warning-overlay a:hover{color:#363636}.content pre{border:1px solid #dbdbdb}.content code{font-weight:inherit}.content a code{color:#2e63b8}.content h1 code,.content h2 code,.content h3 code,.content h4 code,.content h5 code,.content h6 code{color:#222}.content table{display:block;width:initial;max-width:100%;overflow-x:auto}.content blockquote>ul:first-child,.content blockquote>ol:first-child,.content .admonition-body>ul:first-child,.content .admonition-body>ol:first-child{margin-top:0}pre,code{font-variant-ligatures:no-contextual}.breadcrumb a.is-disabled{cursor:default;pointer-events:none}.breadcrumb a.is-disabled,.breadcrumb a.is-disabled:hover{color:#222}.hljs{background:initial !important}.katex .katex-mathml{top:0;right:0}.katex-display,mjx-container,.MathJax_Display{margin:0.5em 0 !important}html{-moz-osx-font-smoothing:auto;-webkit-font-smoothing:auto}li.no-marker{list-style:none}#documenter .docs-main>article{overflow-wrap:break-word}#documenter .docs-main>article .math-container{overflow-x:auto;overflow-y:hidden}@media screen and (min-width: 1056px){#documenter .docs-main{max-width:52rem;margin-left:20rem;padding-right:1rem}}@media screen and (max-width: 1055px){#documenter .docs-main{width:100%}#documenter .docs-main>article{max-width:52rem;margin-left:auto;margin-right:auto;margin-bottom:1rem;padding:0 1rem}#documenter .docs-main>header,#documenter .docs-main>nav{max-width:100%;width:100%;margin:0}}#documenter .docs-main header.docs-navbar{background-color:#fff;border-bottom:1px solid #dbdbdb;z-index:2;min-height:4rem;margin-bottom:1rem;display:flex}#documenter .docs-main header.docs-navbar .breadcrumb{flex-grow:1}#documenter .docs-main header.docs-navbar .docs-right{display:flex;white-space:nowrap}#documenter .docs-main header.docs-navbar .docs-right .docs-icon,#documenter .docs-main header.docs-navbar .docs-right .docs-label,#documenter .docs-main header.docs-navbar .docs-right .docs-sidebar-button{display:inline-block}#documenter .docs-main header.docs-navbar .docs-right .docs-label{padding:0;margin-left:0.3em}#documenter .docs-main header.docs-navbar .docs-right .docs-settings-button{margin:auto 0 auto 1rem}#documenter .docs-main header.docs-navbar .docs-right .docs-sidebar-button{font-size:1.5rem;margin:auto 0 auto 1rem}#documenter .docs-main header.docs-navbar>*{margin:auto 0}@media screen and (max-width: 1055px){#documenter .docs-main header.docs-navbar{position:sticky;top:0;padding:0 1rem;transition-property:top, box-shadow;-webkit-transition-property:top, box-shadow;transition-duration:0.3s;-webkit-transition-duration:0.3s}#documenter .docs-main header.docs-navbar.headroom--not-top{box-shadow:.2rem 0rem .4rem #bbb;transition-duration:0.7s;-webkit-transition-duration:0.7s}#documenter .docs-main header.docs-navbar.headroom--unpinned.headroom--not-top.headroom--not-bottom{top:-4.5rem;transition-duration:0.7s;-webkit-transition-duration:0.7s}}#documenter .docs-main section.footnotes{border-top:1px solid #dbdbdb}#documenter .docs-main section.footnotes li .tag:first-child,#documenter .docs-main section.footnotes li .docstring>section>a.docs-sourcelink:first-child,#documenter .docs-main section.footnotes li .content kbd:first-child,.content #documenter .docs-main section.footnotes li kbd:first-child{margin-right:1em;margin-bottom:0.4em}#documenter .docs-main .docs-footer{display:flex;flex-wrap:wrap;margin-left:0;margin-right:0;border-top:1px solid #dbdbdb;padding-top:1rem;padding-bottom:1rem}@media screen and (max-width: 1055px){#documenter .docs-main .docs-footer{padding-left:1rem;padding-right:1rem}}#documenter .docs-main .docs-footer .docs-footer-nextpage,#documenter .docs-main .docs-footer .docs-footer-prevpage{flex-grow:1}#documenter .docs-main .docs-footer .docs-footer-nextpage{text-align:right}#documenter .docs-main .docs-footer .flexbox-break{flex-basis:100%;height:0}#documenter .docs-main .docs-footer .footer-message{font-size:0.8em;margin:0.5em auto 0 auto;text-align:center}#documenter .docs-sidebar{display:flex;flex-direction:column;color:#0a0a0a;background-color:#f5f5f5;border-right:1px solid #dbdbdb;padding:0;flex:0 0 18rem;z-index:5;font-size:1rem;position:fixed;left:-18rem;width:18rem;height:100%;transition:left 0.3s}#documenter .docs-sidebar.visible{left:0;box-shadow:.4rem 0rem .8rem #bbb}@media screen and (min-width: 1056px){#documenter .docs-sidebar.visible{box-shadow:none}}@media screen and (min-width: 1056px){#documenter .docs-sidebar{left:0;top:0}}#documenter .docs-sidebar .docs-logo{margin-top:1rem;padding:0 1rem}#documenter .docs-sidebar .docs-logo>img{max-height:6rem;margin:auto}#documenter .docs-sidebar .docs-package-name{flex-shrink:0;font-size:1.5rem;font-weight:700;text-align:center;white-space:nowrap;overflow:hidden;padding:0.5rem 0}#documenter .docs-sidebar .docs-package-name .docs-autofit{max-width:16.2rem}#documenter .docs-sidebar .docs-package-name a,#documenter .docs-sidebar .docs-package-name a:hover{color:#0a0a0a}#documenter .docs-sidebar .docs-version-selector{border-top:1px solid #dbdbdb;display:none;padding:0.5rem}#documenter .docs-sidebar .docs-version-selector.visible{display:flex}#documenter .docs-sidebar ul.docs-menu{flex-grow:1;user-select:none;border-top:1px solid #dbdbdb;padding-bottom:1.5rem}#documenter .docs-sidebar ul.docs-menu>li>.tocitem{font-weight:bold}#documenter .docs-sidebar ul.docs-menu>li li{font-size:.95rem;margin-left:1em;border-left:1px solid #dbdbdb}#documenter .docs-sidebar ul.docs-menu input.collapse-toggle{display:none}#documenter .docs-sidebar ul.docs-menu ul.collapsed{display:none}#documenter .docs-sidebar ul.docs-menu input:checked~ul.collapsed{display:block}#documenter .docs-sidebar ul.docs-menu label.tocitem{display:flex}#documenter .docs-sidebar ul.docs-menu label.tocitem .docs-label{flex-grow:2}#documenter .docs-sidebar ul.docs-menu label.tocitem .docs-chevron{display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1;font-size:.75rem;margin-left:1rem;margin-top:auto;margin-bottom:auto}#documenter .docs-sidebar ul.docs-menu label.tocitem .docs-chevron::before{font-family:"Font Awesome 5 Free";font-weight:900;content:"\f054"}#documenter .docs-sidebar ul.docs-menu input:checked~label.tocitem .docs-chevron::before{content:"\f078"}#documenter .docs-sidebar ul.docs-menu .tocitem{display:block;padding:0.5rem 0.5rem}#documenter .docs-sidebar ul.docs-menu .tocitem,#documenter .docs-sidebar ul.docs-menu .tocitem:hover{color:#0a0a0a;background:#f5f5f5}#documenter .docs-sidebar ul.docs-menu a.tocitem:hover,#documenter .docs-sidebar ul.docs-menu label.tocitem:hover{color:#0a0a0a;background-color:#ebebeb}#documenter .docs-sidebar ul.docs-menu li.is-active{border-top:1px solid #dbdbdb;border-bottom:1px solid #dbdbdb;background-color:#fff}#documenter .docs-sidebar ul.docs-menu li.is-active .tocitem,#documenter .docs-sidebar ul.docs-menu li.is-active .tocitem:hover{background-color:#fff;color:#0a0a0a}#documenter .docs-sidebar ul.docs-menu li.is-active ul.internal .tocitem:hover{background-color:#ebebeb;color:#0a0a0a}#documenter .docs-sidebar ul.docs-menu>li.is-active:first-child{border-top:none}#documenter .docs-sidebar ul.docs-menu ul.internal{margin:0 0.5rem 0.5rem;border-top:1px solid #dbdbdb}#documenter .docs-sidebar ul.docs-menu ul.internal li{font-size:.85rem;border-left:none;margin-left:0;margin-top:0.5rem}#documenter .docs-sidebar ul.docs-menu ul.internal .tocitem{width:100%;padding:0}#documenter .docs-sidebar ul.docs-menu ul.internal .tocitem::before{content:"⚬";margin-right:0.4em}#documenter .docs-sidebar form.docs-search{margin:auto;margin-top:0.5rem;margin-bottom:0.5rem}#documenter .docs-sidebar form.docs-search>input{width:14.4rem}@media screen and (min-width: 1056px){#documenter .docs-sidebar ul.docs-menu{overflow-y:auto;-webkit-overflow-scroll:touch}#documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar{width:.3rem;background:none}#documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar-thumb{border-radius:5px 0px 0px 5px;background:#e0e0e0}#documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar-thumb:hover{background:#ccc}}@media screen and (max-width: 1055px){#documenter .docs-sidebar{overflow-y:auto;-webkit-overflow-scroll:touch}#documenter .docs-sidebar::-webkit-scrollbar{width:.3rem;background:none}#documenter .docs-sidebar::-webkit-scrollbar-thumb{border-radius:5px 0px 0px 5px;background:#e0e0e0}#documenter .docs-sidebar::-webkit-scrollbar-thumb:hover{background:#ccc}}#documenter .docs-main #documenter-search-info{margin-bottom:1rem}#documenter .docs-main #documenter-search-results{list-style-type:circle;list-style-position:outside}#documenter .docs-main #documenter-search-results li{margin-left:2rem}#documenter .docs-main #documenter-search-results .docs-highlight{background-color:yellow}.ansi span.sgr1{font-weight:bolder}.ansi span.sgr2{font-weight:lighter}.ansi span.sgr3{font-style:italic}.ansi span.sgr4{text-decoration:underline}.ansi span.sgr7{color:#fff;background-color:#222}.ansi span.sgr8{color:transparent}.ansi span.sgr8 span{color:transparent}.ansi span.sgr9{text-decoration:line-through}.ansi span.sgr30{color:#242424}.ansi span.sgr31{color:#a7201f}.ansi span.sgr32{color:#066f00}.ansi span.sgr33{color:#856b00}.ansi span.sgr34{color:#2149b0}.ansi span.sgr35{color:#7d4498}.ansi span.sgr36{color:#007989}.ansi span.sgr37{color:gray}.ansi span.sgr40{background-color:#242424}.ansi span.sgr41{background-color:#a7201f}.ansi span.sgr42{background-color:#066f00}.ansi span.sgr43{background-color:#856b00}.ansi span.sgr44{background-color:#2149b0}.ansi span.sgr45{background-color:#7d4498}.ansi span.sgr46{background-color:#007989}.ansi span.sgr47{background-color:gray}.ansi span.sgr90{color:#616161}.ansi span.sgr91{color:#cb3c33}.ansi span.sgr92{color:#0e8300}.ansi span.sgr93{color:#a98800}.ansi span.sgr94{color:#3c5dcd}.ansi span.sgr95{color:#9256af}.ansi span.sgr96{color:#008fa3}.ansi span.sgr97{color:#f5f5f5}.ansi span.sgr100{background-color:#616161}.ansi span.sgr101{background-color:#cb3c33}.ansi span.sgr102{background-color:#0e8300}.ansi span.sgr103{background-color:#a98800}.ansi span.sgr104{background-color:#3c5dcd}.ansi span.sgr105{background-color:#9256af}.ansi span.sgr106{background-color:#008fa3}.ansi span.sgr107{background-color:#f5f5f5}code.language-julia-repl>span.hljs-meta{color:#066f00;font-weight:bolder}/*! + Theme: Default + Description: Original highlight.js style + Author: (c) Ivan Sagalaev + Maintainer: @highlightjs/core-team + Website: https://highlightjs.org/ + License: see project LICENSE + Touched: 2021 +*/pre code.hljs{display:block;overflow-x:auto}code.hljs{padding:3px 5px}.hljs{background:#F0F0F0;color:#444}.hljs-comment{color:#888888}.hljs-tag,.hljs-punctuation{color:#444a}.hljs-tag .hljs-name,.hljs-tag .hljs-attr{color:#444}.hljs-keyword,.hljs-attribute,.hljs-selector-tag,.hljs-meta .hljs-keyword,.hljs-doctag,.hljs-name{font-weight:bold}.hljs-type,.hljs-string,.hljs-number,.hljs-selector-id,.hljs-selector-class,.hljs-quote,.hljs-template-tag,.hljs-deletion{color:#880000}.hljs-title,.hljs-section{color:#880000;font-weight:bold}.hljs-regexp,.hljs-symbol,.hljs-variable,.hljs-template-variable,.hljs-link,.hljs-selector-attr,.hljs-operator,.hljs-selector-pseudo{color:#BC6060}.hljs-literal{color:#78A960}.hljs-built_in,.hljs-bullet,.hljs-code,.hljs-addition{color:#397300}.hljs-meta{color:#1f7199}.hljs-meta .hljs-string{color:#4d99bf}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:bold} diff --git a/previews/PR33/assets/themeswap.js b/previews/PR33/assets/themeswap.js new file mode 100644 index 0000000..c58e993 --- /dev/null +++ b/previews/PR33/assets/themeswap.js @@ -0,0 +1,66 @@ +// Small function to quickly swap out themes. Gets put into the tag.. +function set_theme_from_local_storage() { + // Intialize the theme to null, which means default + var theme = null; + // If the browser supports the localstorage and is not disabled then try to get the + // documenter theme + if(window.localStorage != null) { + // Get the user-picked theme from localStorage. May be `null`, which means the default + // theme. + theme = window.localStorage.getItem("documenter-theme"); + } + // Check if the browser supports user color preference + var darkPreference = false; + // Check if the users preference is for dark color scheme + if(window.matchMedia('(prefers-color-scheme: dark)').matches === true) { + darkPreference = true; + } + // Initialize a few variables for the loop: + // + // - active: will contain the index of the theme that should be active. Note that there + // is no guarantee that localStorage contains sane values. If `active` stays `null` + // we either could not find the theme or it is the default (primary) theme anyway. + // Either way, we then need to stick to the primary theme. + // + // - disabled: style sheets that should be disabled (i.e. all the theme style sheets + // that are not the currently active theme) + var active = null; var disabled = []; var darkTheme = null; + for (var i = 0; i < document.styleSheets.length; i++) { + var ss = document.styleSheets[i]; + // The tag of each style sheet is expected to have a data-theme-name attribute + // which must contain the name of the theme. The names in localStorage much match this. + var themename = ss.ownerNode.getAttribute("data-theme-name"); + // attribute not set => non-theme stylesheet => ignore + if(themename === null) continue; + // To distinguish the default (primary) theme, it needs to have the data-theme-primary + // attribute set. + var isprimary = (ss.ownerNode.getAttribute("data-theme-primary") !== null); + // Check if the theme is primary dark theme + var isDarkTheme = (ss.ownerNode.getAttribute("data-theme-primary-dark") !== null); + // If ss is for dark theme then set the value of darkTheme to the name of the theme + if(isDarkTheme) darkTheme = themename; + // If we find a matching theme (and it's not the default), we'll set active to non-null + if(themename === theme) active = i; + // Store the style sheets of inactive themes so that we could disable them + if(themename !== theme) disabled.push(ss); + } + if(active !== null) { + // If we did find an active theme, we'll (1) add the theme--$(theme) class to + document.getElementsByTagName('html')[0].className = "theme--" + theme; + // and (2) disable all the other theme stylesheets + disabled.forEach(function(ss){ + ss.disabled = true; + }); + } + else if(darkTheme !== null && darkPreference === true) { + // If we did find an active theme, we'll (1) add the theme--$(theme) class to + document.getElementsByTagName('html')[0].className = "theme--" + darkTheme; + // and (2) disable all the other theme stylesheets + disabled.forEach(function(ss){ + if (ss.ownerNode.getAttribute("data-theme-name") !== darkTheme) { + ss.disabled = true; + } + }); + } +} +set_theme_from_local_storage(); diff --git a/previews/PR33/assets/warner.js b/previews/PR33/assets/warner.js new file mode 100644 index 0000000..5531c88 --- /dev/null +++ b/previews/PR33/assets/warner.js @@ -0,0 +1,49 @@ +function maybeAddWarning () { + // DOCUMENTER_NEWEST is defined in versions.js, DOCUMENTER_CURRENT_VERSION and DOCUMENTER_STABLE + // in siteinfo.js. + // If either of these are undefined something went horribly wrong, so we abort. + if ( + window.DOCUMENTER_NEWEST === undefined || + window.DOCUMENTER_CURRENT_VERSION === undefined || + window.DOCUMENTER_STABLE === undefined + ) { + return + }; + + // Current version is not a version number, so we can't tell if it's the newest version. Abort. + if (!/v(\d+\.)*\d+/.test(window.DOCUMENTER_CURRENT_VERSION)) { + return + }; + + // Current version is newest version, so no need to add a warning. + if (window.DOCUMENTER_NEWEST === window.DOCUMENTER_CURRENT_VERSION) { + return + }; + + // Add a noindex meta tag (unless one exists) so that search engines don't index this version of the docs. + if (document.body.querySelector('meta[name="robots"]') === null) { + const meta = document.createElement('meta'); + meta.name = 'robots'; + meta.content = 'noindex'; + + document.getElementsByTagName('head')[0].appendChild(meta); + }; + + const div = document.createElement('div'); + div.classList.add('outdated-warning-overlay'); + const closer = document.createElement('button'); + closer.classList.add('outdated-warning-closer', 'delete'); + closer.addEventListener('click', function () { + document.body.removeChild(div); + }); + const href = window.documenterBaseURL + '/../' + window.DOCUMENTER_STABLE; + div.innerHTML = 'This documentation is not for the latest stable release, but for either the development version or an older release.
    Click here to go to the documentation for the latest stable release.'; + div.appendChild(closer); + document.body.appendChild(div); +}; + +if (document.readyState === 'loading') { + document.addEventListener('DOMContentLoaded', maybeAddWarning); +} else { + maybeAddWarning(); +}; diff --git a/previews/PR33/index.html b/previews/PR33/index.html new file mode 100644 index 0000000..6b28185 --- /dev/null +++ b/previews/PR33/index.html @@ -0,0 +1,3 @@ + +Home · HELICS.jl

    HELICS.jl

    CI Docs Codecov Coverage Status Gitter Releases

    HELICS.jl is a cross-platform Julia wrapper around the HELICS library.

    This package is now available for Windows, Mac, and Linux.

    Documentation

    The documentation for the development latest of this package is here.

    Installation

    Use the Julia package manager to install HELICS.jl

    julia> ]
    +(v1.1)> add HELICS

    Open the package manager REPL (using ])

    To install the latest development version, use the following from within Julia:

    (v1.1) pkg> add HELICS#master

    This package includes HELICS as a library. You do not have to install HELICS separately.

    Note that this should work on 64-bit Windows, Mac and Linux systems.

    If you wish to develop HELICS.jl you may want to use the following:

    (v1.1) pkg> dev HELICS

    You can also get a specific version,

    (v1.1) pkg> add HELICS#33c98625

    or specific branch,

    (v1.1) pkg> add HELICS#kd/some-new-feature

    if these features haven't been merged to master yet.

    Troubleshooting

    This package interfaces with HELICS, so a good understanding of HELICS will help troubleshooting. There are plenty of useful resources located here.

    If you are having issues using this Julia interface, feel free to open an issue on GitHub here.

    Acknowledgements

    This work was initially developed as an extension to work done as part of the Scalable Integrated Infrastructure Planning (SIIP) initiative at the U.S. Department of Energy's National Renewable Energy Laboratory (NREL).

    Release

    HELICS.jl is distributed under the terms of the BSD-3 clause license. All new contributions must be made under this license. LICENSE

    SPDX-License-Identifier: BSD-3-Clause

    diff --git a/previews/PR33/search/index.html b/previews/PR33/search/index.html new file mode 100644 index 0000000..eaf6e0a --- /dev/null +++ b/previews/PR33/search/index.html @@ -0,0 +1,2 @@ + +Search · HELICS.jl

    Loading search...

      diff --git a/previews/PR33/search_index.js b/previews/PR33/search_index.js new file mode 100644 index 0000000..e85684b --- /dev/null +++ b/previews/PR33/search_index.js @@ -0,0 +1,3 @@ +var documenterSearchIndex = {"docs": +[{"location":"api/#API","page":"API","title":"API","text":"","category":"section"},{"location":"api/","page":"API","title":"API","text":"This is the Julia API for the HELICS library.","category":"page"},{"location":"api/","page":"API","title":"API","text":"using HELICS; const h = HELICS;\nh.helicsGetVersion()","category":"page"},{"location":"api/","page":"API","title":"API","text":"Pages = [\"api.md\"]\nDepth = 3","category":"page"},{"location":"api/#Enum","page":"API","title":"Enum","text":"","category":"section"},{"location":"api/","page":"API","title":"API","text":"Modules = [HELICS]\nFilter = t -> typeof(t) === DataType && t <: HELICS.Lib.CEnum.Cenum","category":"page"},{"location":"api/#HELICS.HelicsCoreFlags","page":"API","title":"HELICS.HelicsCoreFlags","text":"Enumeration of additional core flags\n\nHELICS_FLAG_DELAY_INIT_ENTRY: used to delay a core from entering initialization mode even if it would otherwise be ready (45)\nHELICS_FLAG_ENABLE_INIT_ENTRY: used to clear the HELICSDELAYINIT_ENTRY flag in cores (47)\nHELICS_FLAG_IGNORE: ignored flag used to test some code paths (999)\n\n\n\n\n\n","category":"type"},{"location":"api/#HELICS.HelicsCoreTypes","page":"API","title":"HELICS.HelicsCoreTypes","text":"Pick a core type depending on compile configuration\n\nHELICS_CORE_TYPE_DEFAULT: a default core type that will default to something available (0)\nHELICS_CORE_TYPE_ZMQ: use the Zero MQ networking protocol (1)\nHELICS_CORE_TYPE_MPI: use MPI for operation on a parallel cluster (2)\nHELICS_CORE_TYPE_TEST: use the Test core if all federates are in the same process (3)\nHELICS_CORE_TYPE_INTERPROCESS: interprocess uses memory mapped files to transfer data (for use when all federates are on the same machine (4)\nHELICS_CORE_TYPE_IPC: interprocess uses memory mapped files to transfer data (for use when all federates are on the same machine ipc is the same as HELICS_CORE_TYPE_INTERPROCESS (5)\nHELICS_CORE_TYPE_TCP: use a generic TCP protocol message stream to send messages (6)\nHELICS_CORE_TYPE_UDP: use UDP packets to send the data (7)\nHELICS_CORE_TYPE_ZMQ_SS: single socket version of ZMQ core usually for high fed count on the same system (10)\nHELICS_CORE_TYPE_NNG: for using the nanomsg communications (9)\nHELICS_CORE_TYPE_TCP_SS: a single socket version of the TCP core for more easily handling firewalls (11)\nHELICS_CORE_TYPE_HTTP: a core type using http for communication (12)\nHELICS_CORE_TYPE_WEBSOCKET: a core using websockets for communication (14)\nHELICS_CORE_TYPE_INPROC: an in process core type for handling communications in shared memory it is pretty similar to the test core but stripped from the \"test\" components (18)\nHELICS_CORE_TYPE_NULL: an explicit core type that is recognized but explicitly doesn't exist, for testing and a few other assorted reasons (66)\nHELICS_CORE_TYPE_EMPTY: an explicit core type exists but does nothing but return empty values or sink calls (77)\n\n\n\n\n\n","category":"type"},{"location":"api/#HELICS.HelicsDataTypes","page":"API","title":"HELICS.HelicsDataTypes","text":"Enumeration of allowable data types for publications and inputs\n\nHELICS_DATA_TYPE_UNKNOWN: unknown type (-1)\nHELICS_DATA_TYPE_STRING: a sequence of characters (0)\nHELICS_DATA_TYPE_DOUBLE: a double precision floating point number (1)\nHELICS_DATA_TYPE_INT: a 64 bit integer (2)\nHELICS_DATA_TYPE_COMPLEX: a pair of doubles representing a complex number (3)\nHELICS_DATA_TYPE_VECTOR: an array of doubles (4)\nHELICS_DATA_TYPE_COMPLEX_VECTOR: a complex vector object (5)\nHELICS_DATA_TYPE_NAMED_POINT: a named point consisting of a string and a double (6)\nHELICS_DATA_TYPE_BOOLEAN: a boolean data type (7)\nHELICS_DATA_TYPE_TIME: time data type (8)\nHELICS_DATA_TYPE_CHAR: data type for a single character (9)\nHELICS_DATA_TYPE_RAW: raw data type (25)\nHELICS_DATA_TYPE_JSON: type converts to a valid json string (30)\nHELICS_DATA_TYPE_MULTI: the data type can change (33)\nHELICS_DATA_TYPE_ANY: open type that can be anything (25262)\n\n\n\n\n\n","category":"type"},{"location":"api/#HELICS.HelicsErrorTypes","page":"API","title":"HELICS.HelicsErrorTypes","text":"Enumeration of return values from the C interface functions\n\nHELICS_ERROR_FATAL: global fatal error for federation (-404)\nHELICS_ERROR_EXTERNAL_TYPE: an unknown non-helics error was produced (-203)\nHELICS_ERROR_OTHER: the function produced a helics error of some other type (-101)\nHELICS_USER_EXCEPTION: user code generated exception (-29)\nHELICS_ERROR_INSUFFICIENT_SPACE: insufficient space is available to store requested data (-18)\nHELICS_ERROR_EXECUTION_FAILURE: the function execution has failed (-14)\nHELICS_ERROR_INVALID_FUNCTION_CALL: the call made was invalid in the present state of the calling object (-10)\nHELICS_ERROR_INVALID_STATE_TRANSITION: error issued when an invalid state transition occurred (-9)\nHELICS_WARNING: the function issued a warning of some kind (-8)\nHELICS_ERROR_SYSTEM_FAILURE: the federate has terminated unexpectedly and the call cannot be completed (-6)\nHELICS_ERROR_DISCARD: the input was discarded and not used for some reason (-5)\nHELICS_ERROR_INVALID_ARGUMENT: the parameter passed was invalid and unable to be used (-4)\nHELICS_ERROR_INVALID_OBJECT: indicator that the object used was not a valid object (-3)\nHELICS_ERROR_CONNECTION_FAILURE: the operation to connect has failed (-2)\nHELICS_ERROR_REGISTRATION_FAILURE: registration has failed (-1)\nHELICS_OK: the function executed successfully (0)\nHELICS_ERROR_USER_ABORT: user system abort to match typical SIGINT value (130)\nHELICS_ERROR_TERMINATED: force termination to match typical SIGKILL value (143)\n\n\n\n\n\n","category":"type"},{"location":"api/#HELICS.HelicsFederateFlags","page":"API","title":"HELICS.HelicsFederateFlags","text":"Enumeration of possible federate flags\n\nHELICS_FLAG_OBSERVER: flag indicating that a federate is observe only (0)\nHELICS_FLAG_UNINTERRUPTIBLE: flag indicating that a federate can only return requested times (1)\nHELICS_FLAG_INTERRUPTIBLE: flag indicating that a federate can be interrupted (2)\nHELICS_FLAG_SOURCE_ONLY: flag indicating that a federate/interface is a signal generator only (4)\nHELICS_FLAG_ONLY_TRANSMIT_ON_CHANGE: flag indicating a federate/interface should only transmit values if they have changed(binary equivalence) (6)\nHELICS_FLAG_ONLY_UPDATE_ON_CHANGE: flag indicating a federate/interface should only trigger an update if a value has changed (binary equivalence) (8)\nHELICS_FLAG_WAIT_FOR_CURRENT_TIME_UPDATE: flag indicating a federate should only grant time if all other federates have already passed the requested time (10)\nHELICS_FLAG_RESTRICTIVE_TIME_POLICY: flag indicating a federate should operate on a restrictive time policy, which disallows some 2nd order time evaluation and can be useful for certain types of dependency cycles and update patterns, but generally shouldn't be used as it can lead to some very slow update conditions (11)\nHELICS_FLAG_ROLLBACK: flag indicating that a federate has rollback capability (12)\nHELICS_FLAG_FORWARD_COMPUTE: flag indicating that a federate performs forward computation and does internal rollback (14)\nHELICS_FLAG_REALTIME: flag indicating that a federate needs to run in real time (16)\nHELICS_FLAG_SINGLE_THREAD_FEDERATE: flag indicating that the federate will only interact on a single thread (27)\nHELICS_FLAG_MULTI_THREAD_CORE: flag indicating use of a thread safe core (28)\nHELICS_FLAG_SINGLE_THREAD_CORE: flag indicating use of a single threaded core (29)\nHELICS_FLAG_IGNORE_TIME_MISMATCH_WARNINGS: used to not display warnings on mismatched requested times (67)\nHELICS_FLAG_STRICT_CONFIG_CHECKING: specify that checking on configuration files should be strict and throw and error on any invalid values (75)\nHELICS_FLAG_USE_JSON_SERIALIZATION: specify that the federate should use json serialization for all data types (79)\nHELICS_FLAG_EVENT_TRIGGERED: specify that the federate is event triggered-meaning (all/most) events are triggered by incoming events (81)\nHELICS_FLAG_LOCAL_PROFILING_CAPTURE: specify that federate should capture the profiling data to the local federate logging system (96)\nHELICS_FLAG_CALLBACK_FEDERATE: specify that the federate is a callback based federate using callbacks for execution (103)\nHELICS_FLAG_AUTOMATED_TIME_REQUEST: specify that a federate should automatically call timeRequest on completion of current request (106)\n\n\n\n\n\n","category":"type"},{"location":"api/#HELICS.HelicsFederateState","page":"API","title":"HELICS.HelicsFederateState","text":"Enumeration of possible federate states\n\nHELICS_STATE_UNKNOWN: used when no information is available about the federate state (-1)\nHELICS_STATE_STARTUP: when created the federate is in startup state (0)\nHELICS_STATE_INITIALIZATION: entered after the enterInitializingMode call has returned (1)\nHELICS_STATE_EXECUTION: entered after the enterExectuationState call has returned (2)\nHELICS_STATE_FINALIZE: the federate has finished executing normally final values may be retrieved (3)\nHELICS_STATE_ERROR: error state no core communication is possible but values can be retrieved the following states are for asynchronous operations (4)\nHELICS_STATE_PENDING_INIT: indicator that the federate is pending entry to initialization state (5)\nHELICS_STATE_PENDING_EXEC: state pending EnterExecution State (6)\nHELICS_STATE_PENDING_TIME: state that the federate is pending a timeRequest (7)\nHELICS_STATE_PENDING_ITERATIVE_TIME: state that the federate is pending an iterative time request (8)\nHELICS_STATE_PENDING_FINALIZE: state that the federate is pending a finalize request (9)\nHELICS_STATE_FINISHED: state that the federate is finished simulating but still connected (10)\n\n\n\n\n\n","category":"type"},{"location":"api/#HELICS.HelicsFilterTypes","page":"API","title":"HELICS.HelicsFilterTypes","text":"Enumeration of the predefined filter types\n\nHELICS_FILTER_TYPE_CUSTOM: a custom filter type that executes a user defined callback (0)\nHELICS_FILTER_TYPE_DELAY: a filter type that executes a fixed delay on a message (1)\nHELICS_FILTER_TYPE_RANDOM_DELAY: a filter type that executes a random delay on the messages (2)\nHELICS_FILTER_TYPE_RANDOM_DROP: a filter type that randomly drops messages (3)\nHELICS_FILTER_TYPE_REROUTE: a filter type that reroutes a message to a different destination than originally specified (4)\nHELICS_FILTER_TYPE_CLONE: a filter type that duplicates a message and sends the copy to a different destination (5)\nHELICS_FILTER_TYPE_FIREWALL: a customizable filter type that can perform different actions on a message based on firewall like rules (6)\n\n\n\n\n\n","category":"type"},{"location":"api/#HELICS.HelicsFlags","page":"API","title":"HELICS.HelicsFlags","text":"enumeration of general flags that can be used in federates/cores/brokers\n\nHELICS_FLAG_SLOW_RESPONDING: flag specifying that a federate, core, or broker may be slow to respond to pings. If the federate goes offline there is no good way to detect it so use with caution (29)\nHELICS_FLAG_DEBUGGING: flag specifying the federate/core/broker is operating in a user debug mode so deadlock timers and timeout are disabled this flag is a combination of slow_responding and disabling of some timeouts (31)\nHELICS_FLAG_TERMINATE_ON_ERROR: specify that a federate error should terminate the federation (72)\nHELICS_FLAG_FORCE_LOGGING_FLUSH: specify that the log files should be flushed on every log message (88)\nHELICS_FLAG_DUMPLOG: specify that a full log should be dumped into a file* (89)\nHELICS_FLAG_PROFILING: specify that helics should capture profiling data (93)\nHELICS_FLAG_PROFILING_MARKER: flag trigger for generating a profiling marker (95)\nHELICS_FLAG_ALLOW_REMOTE_CONTROL: specify that the federate/core/broker should allow some remote control operations such as finalize (109)\nHELICS_FLAG_DISABLE_REMOTE_CONTROL: specify that the federate/core/broker should NOT allow some remote control operations such as finalize (110)\n\n\n\n\n\n","category":"type"},{"location":"api/#HELICS.HelicsHandleOptions","page":"API","title":"HELICS.HelicsHandleOptions","text":"Enumeration of options that apply to handles\n\nHELICS_HANDLE_OPTION_CONNECTION_REQUIRED: specify that a connection is required for an interface and will generate an error if not available (397)\nHELICS_HANDLE_OPTION_CONNECTION_OPTIONAL: specify that a connection is NOT required for an interface and will only be made if available no warning will be issues if not available (402)\nHELICS_HANDLE_OPTION_SINGLE_CONNECTION_ONLY: specify that only a single connection is allowed for an interface (407)\nHELICS_HANDLE_OPTION_MULTIPLE_CONNECTIONS_ALLOWED: specify that multiple connections are allowed for an interface (409)\nHELICS_HANDLE_OPTION_BUFFER_DATA: specify that the last data should be buffered and send on subscriptions after init (411)\nHELICS_HANDLE_OPTION_STRICT_TYPE_CHECKING: specify that the types should be checked strictly for pub/sub and filters (414)\nHELICS_HANDLE_OPTION_RECEIVE_ONLY: specify that the handle is receive only (422)\nHELICS_HANDLE_OPTION_SOURCE_ONLY: specify that the handle is source only (423)\nHELICS_HANDLE_OPTION_IGNORE_UNIT_MISMATCH: specify that the mismatching units should be ignored (447)\nHELICS_HANDLE_OPTION_ONLY_TRANSMIT_ON_CHANGE: specify that an interface will only transmit on change (only applicable to publications) (452)\nHELICS_HANDLE_OPTION_ONLY_UPDATE_ON_CHANGE: specify that an interface will only update if the value has actually changed (454)\nHELICS_HANDLE_OPTION_IGNORE_INTERRUPTS: specify that an interface does not participate in determining time interrupts (475)\nHELICS_HANDLE_OPTION_MULTI_INPUT_HANDLING_METHOD: specify the multi-input processing method for inputs (507)\nHELICS_HANDLE_OPTION_INPUT_PRIORITY_LOCATION: specify the source index with the highest priority (510)\nHELICS_HANDLE_OPTION_CLEAR_PRIORITY_LIST: specify that the priority list should be cleared or question if it is cleared (512)\nHELICS_HANDLE_OPTION_CONNECTIONS: specify the required number of connections or get the actual number of connections (522)\nHELICS_HANDLE_OPTION_TIME_RESTRICTED: specify that the interface only sends or receives data at specified intervals (557)\n\n\n\n\n\n","category":"type"},{"location":"api/#HELICS.HelicsIterationRequest","page":"API","title":"HELICS.HelicsIterationRequest","text":"Enumeration of the different iteration results\n\nHELICS_ITERATION_REQUEST_NO_ITERATION: No iteration is requested (0)\nHELICS_ITERATION_REQUEST_FORCE_ITERATION: Force iteration return when able (1)\nHELICS_ITERATION_REQUEST_ITERATE_IF_NEEDED: Only return an iteration if necessary (2)\nHELICS_ITERATION_REQUEST_HALT_OPERATIONS: Halt the federate (5)\nHELICS_ITERATION_REQUEST_ERROR: Indicate there was an error (7)\n\n\n\n\n\n","category":"type"},{"location":"api/#HELICS.HelicsIterationResult","page":"API","title":"HELICS.HelicsIterationResult","text":"Enumeration of possible return values from an iterative time request\n\nHELICS_ITERATION_RESULT_NEXT_STEP: the iterations have progressed to the next time (0)\nHELICS_ITERATION_RESULT_ERROR: there was an error (1)\nHELICS_ITERATION_RESULT_HALTED: the federation has halted (2)\nHELICS_ITERATION_RESULT_ITERATING: the federate is iterating at current time (3)\n\n\n\n\n\n","category":"type"},{"location":"api/#HELICS.HelicsLogLevels","page":"API","title":"HELICS.HelicsLogLevels","text":"Log level definitions\n\nHELICS_LOG_LEVEL_DUMPLOG: log level for dumping log messages (-10)\nHELICS_LOG_LEVEL_NO_PRINT: don't print anything except a few catastrophic errors (-4)\nHELICS_LOG_LEVEL_ERROR: only print error level indicators (0)\nHELICS_LOG_LEVEL_PROFILING: profiling log level (2)\nHELICS_LOG_LEVEL_WARNING: only print warnings and errors (3)\nHELICS_LOG_LEVEL_SUMMARY: warning errors and summary level information (6)\nHELICS_LOG_LEVEL_CONNECTIONS: summary+ notices about federate and broker connections +messages about network connections (9)\nHELICS_LOG_LEVEL_INTERFACES: connections+ interface definitions (12)\nHELICS_LOG_LEVEL_TIMING: interfaces + timing message (15)\nHELICS_LOG_LEVEL_DATA: timing+ data transfer notices (18)\nHELICS_LOG_LEVEL_DEBUG: data+ additional debug message (21)\nHELICS_LOG_LEVEL_TRACE: all internal messages (24)\n\n\n\n\n\n","category":"type"},{"location":"api/#HELICS.HelicsMultiInputModes","page":"API","title":"HELICS.HelicsMultiInputModes","text":"enumeration of the multi_input operations\n\nHELICS_MULTI_INPUT_NO_OP: time and priority order the inputs from the core library (0)\nHELICS_MULTI_INPUT_VECTORIZE_OPERATION: vectorize the inputs either double vector or string vector (1)\nHELICS_MULTI_INPUT_AND_OPERATION: all inputs are assumed to be boolean and all must be true to return true (2)\nHELICS_MULTI_INPUT_OR_OPERATION: all inputs are assumed to be boolean and at least one must be true to return true (3)\nHELICS_MULTI_INPUT_SUM_OPERATION: sum all the inputs (4)\nHELICS_MULTI_INPUT_DIFF_OPERATION: do a difference operation on the inputs, first-sum(rest) for double input, vector diff for vector input (5)\nHELICS_MULTI_INPUT_MAX_OPERATION: find the max of the inputs (6)\nHELICS_MULTI_INPUT_MIN_OPERATION: find the min of the inputs (7)\nHELICS_MULTI_INPUT_AVERAGE_OPERATION: take the average of the inputs (8)\n\n\n\n\n\n","category":"type"},{"location":"api/#HELICS.HelicsProperties","page":"API","title":"HELICS.HelicsProperties","text":"Enumeration of properties that apply to federates\n\nHELICS_PROPERTY_TIME_DELTA: the property controlling the minimum time delta for a federate (137)\nHELICS_PROPERTY_TIME_PERIOD: the property controlling the period for a federate (140)\nHELICS_PROPERTY_TIME_OFFSET: the property controlling time offset for the period of federate (141)\nHELICS_PROPERTY_TIME_RT_LAG: the property controlling real time lag for a federate the max time a federate can lag real time (143)\nHELICS_PROPERTY_TIME_RT_LEAD: the property controlling real time lead for a federate the max time a federate can be ahead of real time (144)\nHELICS_PROPERTY_TIME_RT_TOLERANCE: the property controlling real time tolerance for a federate sets both HELICS_PROPERTY_RT_LAG and HELICS_PROPERTY_RT_LEAD (145)\nHELICS_PROPERTY_TIME_INPUT_DELAY: the property controlling input delay for a federate (148)\nHELICS_PROPERTY_TIME_OUTPUT_DELAY: the property controlling output delay for a federate (150)\nHELICS_PROPERTY_TIME_STOPTIME: specify the maximum time of a federate (152)\nHELICS_PROPERTY_TIME_GRANT_TIMEOUT: the property specifying a timeout to trigger actions if the time for granting exceeds a certain threshold (161)\nHELICS_PROPERTY_INT_CURRENT_ITERATION: read only property getting the current iteration count (258)\nHELICS_PROPERTY_INT_MAX_ITERATIONS: integer property controlling the maximum number of iterations in a federate (259)\nHELICS_PROPERTY_INT_LOG_LEVEL: integer property controlling the log level in a federate see HELICS_LOG_LEVELS (271)\nHELICS_PROPERTY_INT_FILE_LOG_LEVEL: integer property controlling the log level for file logging in a federate see HELICS_LOG_LEVELS (272)\nHELICS_PROPERTY_INT_CONSOLE_LOG_LEVEL: integer property controlling the log level for file logging in a federate see HELICS_LOG_LEVELS (274)\nHELICS_PROPERTY_INT_LOG_BUFFER: integer property controlling the size of the log buffer (276)\nHELICS_PROPERTY_INT_INDEX_GROUP: integer property specifying an index group (282)\n\n\n\n\n\n","category":"type"},{"location":"api/#HELICS.HelicsSequencingModes","page":"API","title":"HELICS.HelicsSequencingModes","text":"enumeration of sequencing modes for queries and commands fast is the default, meaning the query travels along priority channels and takes precedence of over existing messages; ordered means it follows normal priority patterns and will be ordered along with existing messages\n\nHELICS_SEQUENCING_MODE_FAST: sequencing mode to operate on priority channels (0)\nHELICS_SEQUENCING_MODE_ORDERED: sequencing mode to operate on the normal channels (1)\nHELICS_SEQUENCING_MODE_DEFAULT: select the default channel (2)\n\n\n\n\n\n","category":"type"},{"location":"api/#HELICS.HelicsTranslatorTypes","page":"API","title":"HELICS.HelicsTranslatorTypes","text":"enumeration of the predefined translator types\n\nHELICS_TRANSLATOR_TYPE_CUSTOM: a custom filter type that executes a user defined callback (0)\nHELICS_TRANSLATOR_TYPE_JSON: a translator type that converts to and from JSON (11)\nHELICS_TRANSLATOR_TYPE_BINARY: a translator type that just encodes the message again in binary (12)\n\n\n\n\n\n","category":"type"},{"location":"api/#Functions","page":"API","title":"Functions","text":"","category":"section"},{"location":"api/","page":"API","title":"API","text":"Broker\nCore\nEndpoint\nFederateInfo\nFederate\nFilter\nInput\nMessage\nPublication\nQuery","category":"page"},{"location":"api/#Broker","page":"API","title":"Broker","text":"","category":"section"},{"location":"api/","page":"API","title":"API","text":"Modules = [HELICS]\nFilter = t -> typeof(t) <: Function && startswith(string(t), \"helicsBroker\")","category":"page"},{"location":"api/#HELICS.helicsBrokerAddAlias-Tuple{HELICS.Broker, String, String}","page":"API","title":"HELICS.helicsBrokerAddAlias","text":"helicsBrokerAddAlias(broker::HELICS.Broker, interfaceName::String, alias::String)\n\n\ncreate an alias for an interface\n\nArguments\n\nbroker: the Broker to us to set the alias\ninterfaceName: the current name of an interface\nalias: the additional name to use for a given interface\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsBrokerAddDestinationFilterToEndpoint-Tuple{HELICS.Broker, String, String}","page":"API","title":"HELICS.helicsBrokerAddDestinationFilterToEndpoint","text":"helicsBrokerAddDestinationFilterToEndpoint(broker::HELICS.Broker, filter::String, endpoint::String)\n\n\nLink a named filter to a destination endpoint\n\nArguments\n\nbroker the Broker to generate the connection from\nfilter the name of the Filter (cannot be NULL)\nendpoint the name of the Endpoint to filter the data going to (cannot be NULL)\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsBrokerAddSourceFilterToEndpoint-Tuple{HELICS.Broker, String, String}","page":"API","title":"HELICS.helicsBrokerAddSourceFilterToEndpoint","text":"helicsBrokerAddSourceFilterToEndpoint(broker::HELICS.Broker, filter::String, endpoint::String)\n\n\nLink a named filter to a source endpoint\n\nArguments\n\nbroker the Broker to generate the connection from\nfilter the name of the Filter (cannot be NULL)\nendpoint the name of the Endpoint to filter the data from (cannot be NULL)\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsBrokerClearTimeBarrier-Tuple{HELICS.Broker}","page":"API","title":"HELICS.helicsBrokerClearTimeBarrier","text":"helicsBrokerClearTimeBarrier(broker::HELICS.Broker)\n\n\nClear any time barrier on a broker.\n\nArguments\n\nbroker: the Broker to clear the time barrier for\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsBrokerClone-Tuple{HELICS.Broker}","page":"API","title":"HELICS.helicsBrokerClone","text":"helicsBrokerClone(broker::HELICS.Broker) -> HELICS.Broker\n\n\nCreate a new reference to an existing broker\n\nthis will create a new broker object that references the existing broker it must be freed as well\n\nArguments\n\nbroker: an existing Broker\n\nReturns\n\na new reference to the same broker\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsBrokerDataLink-Tuple{HELICS.Broker, String, String}","page":"API","title":"HELICS.helicsBrokerDataLink","text":"helicsBrokerDataLink(broker::HELICS.Broker, source::String, target::String)\n\n\nLink a named publication and named input using a broker\n\nArguments\n\nbroker: the Broker to generate the connection from\nsource: the name of the Publication (cannot be NULL)\ntarget: the name of the target to send the Publication data (cannot be NULL)\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsBrokerDestroy-Tuple{HELICS.Broker}","page":"API","title":"HELICS.helicsBrokerDestroy","text":"helicsBrokerDestroy(broker::HELICS.Broker)\n\n\nDisconnect and free a broker\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsBrokerDisconnect-Tuple{HELICS.Broker}","page":"API","title":"HELICS.helicsBrokerDisconnect","text":"helicsBrokerDisconnect(broker::HELICS.Broker)\n\n\nDisconnect a broker\n\nArguments\n\nbroker: the Broker to disconnect\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsBrokerFree-Tuple{HELICS.Broker}","page":"API","title":"HELICS.helicsBrokerFree","text":"helicsBrokerFree(broker::HELICS.Broker)\n\n\nRelease the memory associated with a broker\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsBrokerGetAddress-Tuple{HELICS.Broker}","page":"API","title":"HELICS.helicsBrokerGetAddress","text":"helicsBrokerGetAddress(broker::HELICS.Broker) -> String\n\n\nGet the network address associated with a broker\n\nArguments\n\nbroker: the Broker to query\n\nReturns\n\na string with the network address of the Broker\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsBrokerGetIdentifier-Tuple{HELICS.Broker}","page":"API","title":"HELICS.helicsBrokerGetIdentifier","text":"helicsBrokerGetIdentifier(broker::HELICS.Broker) -> String\n\n\nGet an identifier for the Broker\n\nArguments\n\nbroker: the Broker to query\n\nReturns\n\na string containing the identifier for the Broker\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsBrokerGlobalError-Tuple{HELICS.Broker, Int64, String}","page":"API","title":"HELICS.helicsBrokerGlobalError","text":"helicsBrokerGlobalError(broker::HELICS.Broker, errorCode::Int64, errorString::String)\n\n\nGenerate a global error through a broker. This will terminate the federation.\n\nArguments\n\nbroker: the Broker to generate the global error on.\nerrorCode: the integer error code to associate with the global error.\nerrorString: an error message to associate withthe global error.\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsBrokerIsConnected-Tuple{HELICS.Broker}","page":"API","title":"HELICS.helicsBrokerIsConnected","text":"helicsBrokerIsConnected(broker::HELICS.Broker) -> Bool\n\n\nCheck if a broker is connected. A connected broker implies is attached to cores or cores could reach out to communicate. return 0 if not connected , something else if it is connected.\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsBrokerIsValid-Tuple{HELICS.Broker}","page":"API","title":"HELICS.helicsBrokerIsValid","text":"helicsBrokerIsValid(broker::HELICS.Broker) -> Bool\n\n\nCheck if a broker object is a valid object\n\nArguments\n\nbroker: the Broker object to test\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsBrokerMakeConnections-Tuple{HELICS.Broker, String}","page":"API","title":"HELICS.helicsBrokerMakeConnections","text":"helicsBrokerMakeConnections(broker::HELICS.Broker, file::String)\n\n\nLoad a file containing connection information\n\nArguments\n\nbroker: the Broker to generate the connections from\nfile: A JSON or TOML file containing connection information\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsBrokerSendCommand-Tuple{HELICS.Broker, String, String}","page":"API","title":"HELICS.helicsBrokerSendCommand","text":"helicsBrokerSendCommand(broker::HELICS.Broker, target::String, command::String)\n\n\nSend a command to another helics object though a broker using asynchronous(fast) operations.\n\nArguments\n\nbroker: The Broker to set the command through\ntarget: The name of the object to send the command to\ncommand: the command to send\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsBrokerSendOrderedCommand-Tuple{HELICS.Broker, String, String}","page":"API","title":"HELICS.helicsBrokerSendOrderedCommand","text":"helicsBrokerSendOrderedCommand(broker::HELICS.Broker, target::String, command::String)\n\n\nSend a command to another helics object through a broker using ordered sequencing.\n\nArguments\n\nbroker: The Broker to set the command through\ntarget: The name of the object to send the command to\ncommand: the command to send\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsBrokerSetGlobal-Tuple{HELICS.Broker, String, String}","page":"API","title":"HELICS.helicsBrokerSetGlobal","text":"helicsBrokerSetGlobal(broker::HELICS.Broker, valueName::String, value::String)\n\n\nSet a federation global value\n\nthis overwrites any previous value for this name\n\nArguments\n\nbroker: the Broker to set the global through\nvalueName: the name of the global to set\nvalue: the value of the global\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsBrokerSetLogFile-Tuple{HELICS.Broker, String}","page":"API","title":"HELICS.helicsBrokerSetLogFile","text":"helicsBrokerSetLogFile(broker::HELICS.Broker, logFileName::String)\n\n\nSet a the log file on a broker\n\nArguments\n\nbroker: the Broker to set the global through\nlogFileName: The name of the file to log to\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsBrokerSetLoggingCallback-Tuple{HELICS.Broker, Ptr{Nothing}, Any}","page":"API","title":"HELICS.helicsBrokerSetLoggingCallback","text":"helicsBrokerSetLoggingCallback(broker::HELICS.Broker, logger::Ptr{Nothing}, userdata)\n\n\nSet the logging callback to a broker\n\nAdd a logging callback function for the C The logging callback will be called when a message flows into a broker from the core or from a broker\n\nArguments\n\nbroker: the Broker object in which to create a Subscription must have been create with helicsCreateValueFederate or helicsCreateCombinationFederate\nlogger: a callback with signature void(int, const char *, const char *, void *); the function arguments are loglevel, an identifier, and a message string, and a pointer to user data\nuserdata: a point to user data that is passed to the function when executing\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsBrokerSetTimeBarrier-Tuple{HELICS.Broker, Union{Float64, Int64}}","page":"API","title":"HELICS.helicsBrokerSetTimeBarrier","text":"helicsBrokerSetTimeBarrier(broker::HELICS.Broker, barrierTime::Union{Float64, Int64})\n\n\nSet a broker time barrier.\n\nArguments\n\nbroker: the Broker to set the time barrier for\nbarrierTime: The time to se the barrier at\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsBrokerWaitForDisconnect-Tuple{HELICS.Broker, Int64}","page":"API","title":"HELICS.helicsBrokerWaitForDisconnect","text":"helicsBrokerWaitForDisconnect(broker::HELICS.Broker, msToWait::Int64) -> Bool\n\n\nWait for the Broker to disconnect\n\nArguments\n\nbroker: the Broker to wait for\nmsToWait: the time out in millisecond (<0 for infinite timeout)\n\nReturns\n\ntrue if the disconnect was successful, false if there was a timeout\n\n\n\n\n\n","category":"method"},{"location":"api/#Core","page":"API","title":"Core","text":"","category":"section"},{"location":"api/","page":"API","title":"API","text":"Modules = [HELICS]\nFilter = t -> typeof(t) <: Function && startswith(string(t), \"helicsCore\")","category":"page"},{"location":"api/#HELICS.helicsCoreAddAlias-Tuple{HELICS.Core, String, String}","page":"API","title":"HELICS.helicsCoreAddAlias","text":"helicsCoreAddAlias(core::HELICS.Core, interfaceName::String, alias::String)\n\n\ncreate an alias for an interface\n\nArguments\n\ncore: the Core to us to set the alias\ninterfaceName: the current name of an interface\nalias: the additional name to use for a given interface\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsCoreAddDestinationFilterToEndpoint-Tuple{HELICS.Core, String, String}","page":"API","title":"HELICS.helicsCoreAddDestinationFilterToEndpoint","text":"helicsCoreAddDestinationFilterToEndpoint(core::HELICS.Core, filter::String, endpoint::String)\n\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsCoreAddSourceFilterToEndpoint-Tuple{HELICS.Core, String, String}","page":"API","title":"HELICS.helicsCoreAddSourceFilterToEndpoint","text":"helicsCoreAddSourceFilterToEndpoint(core::HELICS.Core, filter::String, endpoint::String)\n\n\nLink a named filter to a source endpoint\n\nArguments\n\ncore: the core to generate the connection from\nfilter: the name of the Filter (cannot be NULL)\nendpoint: the name of the Endpoint to filter the data from (cannot be NULL)\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsCoreClone-Tuple{HELICS.Core}","page":"API","title":"HELICS.helicsCoreClone","text":"helicsCoreClone(core::HELICS.Core) -> HELICS.Core\n\n\nCreate a new reference to an existing core\n\nthis will create a new broker object that references the existing broker it must be freed as well\n\nArguments\n\ncore: an existing Core\n\nReturns\n\na new reference to the same Core\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsCoreConnect-Tuple{HELICS.Core}","page":"API","title":"HELICS.helicsCoreConnect","text":"helicsCoreConnect(core::HELICS.Core)\n\n\nConnect a core to the federate based on current configuration\n\nArguments\n\ncore: the core object to enable init values for\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsCoreDataLink-Tuple{HELICS.Core, String, String}","page":"API","title":"HELICS.helicsCoreDataLink","text":"helicsCoreDataLink(core::HELICS.Core, source::String, target::String)\n\n\nLink a named publication and named input using a core\n\nArguments\n\ncore: the core to generate the connection from\nsource: the name of the Publication (cannot be NULL)\ntarget: the named of the target to send the Publication data (cannot be NULL)\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsCoreDestroy-Tuple{HELICS.Core}","page":"API","title":"HELICS.helicsCoreDestroy","text":"helicsCoreDestroy(core::HELICS.Core)\n\n\nDisconnect and free a core\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsCoreDisconnect-Tuple{HELICS.Core}","page":"API","title":"HELICS.helicsCoreDisconnect","text":"helicsCoreDisconnect(core::HELICS.Core)\n\n\nGet an identifier for the core\n\nArguments\n\ncore: the core to query\n\nReturns\n\na void enumeration indicating any error condition\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsCoreFree-Tuple{HELICS.Core}","page":"API","title":"HELICS.helicsCoreFree","text":"helicsCoreFree(core::HELICS.Core)\n\n\nRelease the memory associated with a core\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsCoreGetAddress-Tuple{HELICS.Core}","page":"API","title":"HELICS.helicsCoreGetAddress","text":"helicsCoreGetAddress(core::HELICS.Core) -> String\n\n\nGet the network address associated with a core\n\nArguments\n\ncore: The core to query\n\nReturns\n\na string with the network address of the Broker\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsCoreGetIdentifier-Tuple{HELICS.Core}","page":"API","title":"HELICS.helicsCoreGetIdentifier","text":"helicsCoreGetIdentifier(core::HELICS.Core) -> String\n\n\nGet an identifier for the core\n\nArguments\n\ncore: the core to query\n\nReturns\n\na string with the identifier of the core\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsCoreGlobalError-Tuple{HELICS.Core, Int64, String}","page":"API","title":"HELICS.helicsCoreGlobalError","text":"helicsCoreGlobalError(core::HELICS.Core, errorCode::Int64, errorString::String)\n\n\nGenerate a global error through a core. This will terminate the federation.\n\nArguments\n\ncore: the Core to generate the global error on.\nerrorCode: the integer error code to associate with the global error.\nerrorString: an error message to associate withthe global error.\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsCoreIsConnected-Tuple{HELICS.Core}","page":"API","title":"HELICS.helicsCoreIsConnected","text":"helicsCoreIsConnected(core::HELICS.Core) -> Bool\n\n\nCheck if a core is connected. A connected core implies is attached to federate or federates could be attached to it.\n\nReturns\n\nfalse if not connected, true if it is connected\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsCoreIsValid-Tuple{HELICS.Core}","page":"API","title":"HELICS.helicsCoreIsValid","text":"helicsCoreIsValid(core::HELICS.Core) -> Bool\n\n\nCheck if a core object is a valid object\n\nArguments\n\ncore: the Core object to test\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsCoreMakeConnections-Tuple{HELICS.Core, String}","page":"API","title":"HELICS.helicsCoreMakeConnections","text":"helicsCoreMakeConnections(core::HELICS.Core, file::String)\n\n\nLoad a file containing connection information\n\nArguments\n\ncore: The core to generate the connections from\nfile: A JSON or TOML file containing connection information\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsCoreRegisterCloningFilter-Tuple{HELICS.Core, String}","page":"API","title":"HELICS.helicsCoreRegisterCloningFilter","text":"helicsCoreRegisterCloningFilter(core::HELICS.Core, name::String) -> HELICS.Filter\n\n\nCreate a cloning Filter on the specified core\n\nCloning filters copy a message and send it to multiple locations source and destination can be added through other functions\n\nArguments\n\ncore: the core to register through\nname: the name of the Filter (can be NULL)\n\nReturns\n\na Filter object\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsCoreRegisterFilter-Tuple{HELICS.Core, Union{Int64, HELICS.Lib.HelicsFilterTypes}, String}","page":"API","title":"HELICS.helicsCoreRegisterFilter","text":"helicsCoreRegisterFilter(core::HELICS.Core, kind::Union{Int64, HELICS.Lib.HelicsFilterTypes}, name::String) -> HELICS.Filter\n\n\nCreate a source Filter on the specified core\n\nFilters can be created through a Federate or a core , linking through a federate allows a few extra features of name matching to function on the Federate interface but otherwise equivalent behavior\n\nArguments\n\ncore the core to register through\ntype the type of filter to create HelicsFilterTypes\nname the name of the Filter (can be NULL)\n\nReturns\n\na Filter object\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsCoreRegisterTranslator-Tuple{HELICS.Core, Int64, String}","page":"API","title":"HELICS.helicsCoreRegisterTranslator","text":"helicsCoreRegisterTranslator(core::HELICS.Core, type::Int64, name::String)\n\n\nCreate a Translator on the specified core.\n\nTranslators can be created through a federate or a core. Linking through a federate allows a few extra features of name matching to function on the federate interface but otherwise have equivalent behavior.\n\nArguments\n\ncore: the Core to register through.\ntype: The type of translator to create /ref HelicsTranslatorTypes\nname: The name of the translator, it can be null\n\nReturns\n\nA Translator\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsCoreSendCommand-Tuple{HELICS.Core, String, String}","page":"API","title":"HELICS.helicsCoreSendCommand","text":"helicsCoreSendCommand(core::HELICS.Core, target::String, command::String)\n\n\nSend a command to another helics object though a core using asynchronous(fast) operations.\n\nArguments\n\ncore: The Core to set the command through\ntarget: The name of the object to send the command to\ncommand: the command to send\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsCoreSendOrderedCommand-Tuple{HELICS.Core, String, String}","page":"API","title":"HELICS.helicsCoreSendOrderedCommand","text":"helicsCoreSendOrderedCommand(core::HELICS.Core, target::String, command::String)\n\n\nSend a command to another helics object though a core using ordered operations.\n\nArguments\n\ncore: The Core to set the command through\ntarget: The name of the object to send the command to\ncommand: the command to send\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsCoreSetGlobal-Tuple{HELICS.Core, String, String}","page":"API","title":"HELICS.helicsCoreSetGlobal","text":"helicsCoreSetGlobal(core::HELICS.Core, valueName::String, value::String)\n\n\nSet a global value in a core\n\nthis overwrites any previous value for this name\n\nArguments\n\ncore: the core to set the global through\nvalueName: the name of the global to set\nvalue: the value of the global\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsCoreSetLogFile-Tuple{HELICS.Core, String}","page":"API","title":"HELICS.helicsCoreSetLogFile","text":"helicsCoreSetLogFile(core::HELICS.Core, logFileName::String)\n\n\nSet a the log file on a core\n\nArguments\n\ncore: The core to set the global through\nlogFileName: The name of the file to log to\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsCoreSetLoggingCallback-Tuple{HELICS.Core, Ptr{Nothing}, Any}","page":"API","title":"HELICS.helicsCoreSetLoggingCallback","text":"helicsCoreSetLoggingCallback(core::HELICS.Core, logger::Ptr{Nothing}, userdata)\n\n\nSet the logging callback for a core\n\nAdd a logging callback function for the C The logging callback will be called when a message flows into a core from the core or from a broker\n\nArguments\n\ncore: the core object in which to create a Subscription must have been create with helicsCreateValueFederate or helicsCreateCombinationFederate\nlogger: a callback with signature void(int, const char *, const char *, void *); the function arguments are loglevel, an identifier, and a message string\nuserdata: a point to user data that is passed to the function when executing\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsCoreSetReadyToInit-Tuple{HELICS.Core}","page":"API","title":"HELICS.helicsCoreSetReadyToInit","text":"helicsCoreSetReadyToInit(core::HELICS.Core)\n\n\nSet the core to ready for init\n\nthis function is used for cores that have filters but no federates so there needs to be a direct signal to the core to trigger the federation initialization\n\nArguments\n\ncore: the core object to enable init values for\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsCoreWaitForDisconnect-Tuple{HELICS.Core, Int64}","page":"API","title":"HELICS.helicsCoreWaitForDisconnect","text":"helicsCoreWaitForDisconnect(core::HELICS.Core, msWait::Int64) -> Int32\n\n\nWait for the core to disconnect\n\nArguments\n\ncore: The core to wait for\nmsToWait: The time out in millisecond (<0 for infinite timeout)\n\nReturns\n\ntrue if the disconnect was successful, false if there was a timeout\n\n\n\n\n\n","category":"method"},{"location":"api/#Endpoint","page":"API","title":"Endpoint","text":"","category":"section"},{"location":"api/","page":"API","title":"API","text":"Modules = [HELICS]\nFilter = t -> typeof(t) <: Function && startswith(string(t), \"helicsEndpoint\")","category":"page"},{"location":"api/#HELICS.helicsEndpointAddDestinationFilter-Tuple{HELICS.Endpoint, String}","page":"API","title":"HELICS.helicsEndpointAddDestinationFilter","text":"helicsEndpointAddDestinationFilter(endpoint::HELICS.Endpoint, filterName::String)\n\n\nadd a destination filter to an endpoint\n\nendpoint: The Endpoint to modify\nfilterName: the name of the filter to add\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsEndpointAddDestinationTarget-Tuple{HELICS.Endpoint, String}","page":"API","title":"HELICS.helicsEndpointAddDestinationTarget","text":"helicsEndpointAddDestinationTarget(endpoint::HELICS.Endpoint, targetEndpoint::String)\n\n\nadd a destination target to an endpoint, Specifying an endpoint to send undirected messages to\n\nendpoint: The Endpoint to modify\ntargetEndpoint: the name of the endpoint to send messages to\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsEndpointAddSourceFilter-Tuple{HELICS.Endpoint, String}","page":"API","title":"HELICS.helicsEndpointAddSourceFilter","text":"helicsEndpointAddSourceFilter(endpoint::HELICS.Endpoint, filterName::String)\n\n\nadd a source Filter to an endpoint\n\nendpoint: The Endpoint to modify\nfilterName: the name of the filter to add\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsEndpointAddSourceTarget-Tuple{HELICS.Endpoint, String}","page":"API","title":"HELICS.helicsEndpointAddSourceTarget","text":"helicsEndpointAddSourceTarget(endpoint::HELICS.Endpoint, targetEndpoint::String)\n\n\nadd a source target to an endpoint, Specifying an endpoint to receive undirected messages from\n\nendpoint: The Endpoint to modify\ntargetEndpoint: the endpoint name to get messages from\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsEndpointClearMessages-Tuple{HELICS.Endpoint}","page":"API","title":"HELICS.helicsEndpointClearMessages","text":"helicsEndpointClearMessages(endpoint::HELICS.Endpoint)\n\n\nClear all message from an Endpoint\n\nArguments\n\nendpoint: The Endpoint object to operate on\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsEndpointCreateMessage-Tuple{HELICS.Endpoint}","page":"API","title":"HELICS.helicsEndpointCreateMessage","text":"helicsEndpointCreateMessage(endpoint::HELICS.Endpoint) -> HELICS.Message\n\n\nCreate a new empty message object.\n\nThe message is empty and isValid will return false since there is no data associated with the message yet.\n\nArguments\n\nendpoint: The identifier for the Endpoint\n\nReturns\n\nMessage object\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsEndpointGetDefaultDestination-Tuple{HELICS.Endpoint}","page":"API","title":"HELICS.helicsEndpointGetDefaultDestination","text":"helicsEndpointGetDefaultDestination(endpoint::HELICS.Endpoint) -> String\n\n\nGet the default destination for an Endpoint\n\nArguments\n\nendpoint: The Endpoint to set the destination for\n\nReturns\n\na string with the default destination\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsEndpointGetInfo-Tuple{HELICS.Endpoint}","page":"API","title":"HELICS.helicsEndpointGetInfo","text":"helicsEndpointGetInfo(endpoint::HELICS.Endpoint) -> String\n\n\nGet the data in the info field of an filter\n\nArguments\n\nendpoint: The Filter to query\n\nReturns\n\na string with the info field string\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsEndpointGetMessage-Tuple{HELICS.Endpoint}","page":"API","title":"HELICS.helicsEndpointGetMessage","text":"helicsEndpointGetMessage(endpoint::HELICS.Endpoint) -> HELICS.Message\n\n\nReceive a packet from a particular endpoint\n\nArguments\n\nendpoint: The identifier for the Endpoint\n\nReturns\n\nMessage object\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsEndpointGetName-Tuple{HELICS.Endpoint}","page":"API","title":"HELICS.helicsEndpointGetName","text":"helicsEndpointGetName(endpoint::HELICS.Endpoint) -> String\n\n\nget the name of an Endpoint\n\nArguments\n\nendpoint: The Endpoint object in question\n\nReturns\n\nthe name of the Endpoint\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsEndpointGetOption-Tuple{HELICS.Endpoint, Union{Int64, HELICS.Lib.HelicsHandleOptions}}","page":"API","title":"HELICS.helicsEndpointGetOption","text":"helicsEndpointGetOption(endpoint::HELICS.Endpoint, option::Union{Int64, HELICS.Lib.HelicsHandleOptions}) -> Bool\n\n\nGet a handle option on an Endpoint\n\nendpoint: The Endpoint to modify\noption: Integer code for the option to set HelicsHandleOptions\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsEndpointGetTag-Tuple{HELICS.Endpoint, String}","page":"API","title":"HELICS.helicsEndpointGetTag","text":"helicsEndpointGetTag(endpoint::HELICS.Endpoint, tagName::String) -> String\n\n\nGet the data in a specified tag of an endpoint\n\nArguments\n\nendpoint: The Endpoint to query\ntagName: The name of the tag\n\nReturns\n\na string with the tag data\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsEndpointGetType-Tuple{HELICS.Endpoint}","page":"API","title":"HELICS.helicsEndpointGetType","text":"helicsEndpointGetType(endpoint::HELICS.Endpoint) -> String\n\n\nGet the type specified for an Endpoint\n\nArguments\n\nendpoint: The Endpoint object in question\n\nReturns\n\nthe defined type of the Endpoint\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsEndpointHasMessage-Tuple{HELICS.Endpoint}","page":"API","title":"HELICS.helicsEndpointHasMessage","text":"helicsEndpointHasMessage(endpoint::HELICS.Endpoint) -> Bool\n\n\nCheck if a given endpoint has any unread messages\n\nArguments\n\nendpoint: The Endpoint to check\n\nReturns\n\ntrue if the Endpoint has a message, false otherwise\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsEndpointIsValid-Tuple{HELICS.Endpoint}","page":"API","title":"HELICS.helicsEndpointIsValid","text":"helicsEndpointIsValid(endpoint::HELICS.Endpoint) -> Bool\n\n\nCheck if an endpoint is valid.\n\nArguments\n\nendpoint: The Endpoint object to check.\n\nReturns\n\ntrue if the Endpoint object represents a valid endpoint.\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsEndpointPendingMessageCount-Tuple{HELICS.Endpoint}","page":"API","title":"HELICS.helicsEndpointPendingMessageCount","text":"helicsEndpointPendingMessageCount(endpoint::HELICS.Endpoint) -> Int64\n\n\nReturns the number of pending receives for an endpoint\n\nArguments\n\nendpoint: The Endpoint to query\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsEndpointRemoveTarget-Tuple{HELICS.Endpoint, String}","page":"API","title":"HELICS.helicsEndpointRemoveTarget","text":"helicsEndpointRemoveTarget(endpoint::HELICS.Endpoint, targetEndpoint::String)\n\n\nremove an endpoint from being targeted\n\nendpoint: The Endpoint to modify\ntargetEndpoint: the name of the target enpoint to remove\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsEndpointSendBytes-Tuple{HELICS.Endpoint, String}","page":"API","title":"HELICS.helicsEndpointSendBytes","text":"helicsEndpointSendBytes(endpoint::HELICS.Endpoint, data::String)\n\n\nSend a message to the targeted destination\n\nArguments\n\nendpoint: The Endpoint to send the data from\ndata: The data to send\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsEndpointSendBytesAt-Tuple{HELICS.Endpoint, String, Union{Float64, Int64}}","page":"API","title":"HELICS.helicsEndpointSendBytesAt","text":"helicsEndpointSendBytesAt(endpoint::HELICS.Endpoint, data::String, time::Union{Float64, Int64})\n\n\nSend a message at a specific time to the targeted destinations\n\nArguments\n\nendpoint: The Endpoint to send the data from\ndata: The data to send\ntime: The time the message should be sent.\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsEndpointSendBytesTo-Tuple{HELICS.Endpoint, String, String}","page":"API","title":"HELICS.helicsEndpointSendBytesTo","text":"helicsEndpointSendBytesTo(endpoint::HELICS.Endpoint, data::String, dest::String)\n\n\nSend a message to the specified destination\n\nArguments\n\nendpoint: The Endpoint to send the data from\ndata: The data to send\ndest: The target destination (empty string to use the default destination)\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsEndpointSendBytesToAt-Tuple{HELICS.Endpoint, String, String, Union{Float64, Int64}}","page":"API","title":"HELICS.helicsEndpointSendBytesToAt","text":"helicsEndpointSendBytesToAt(endpoint::HELICS.Endpoint, data::String, dest::String, time::Union{Float64, Int64})\n\n\nSend a message to the specified destination at a specific time.\n\nArguments\n\nendpoint: The Endpoint to send the data from\ndata: The data to send\ndest: The target destination (empty string to use the default destination)\ntime: The time the message should be sent.\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsEndpointSendMessage-Tuple{HELICS.Endpoint, HELICS.Message}","page":"API","title":"HELICS.helicsEndpointSendMessage","text":"helicsEndpointSendMessage(endpoint::HELICS.Endpoint, message::HELICS.Message)\n\n\nSend a message object from a specific endpoint\n\nArguments\n\nendpoint: The Endpoint to send the data from\nmessage: The Message to send\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsEndpointSendMessageZeroCopy-Tuple{HELICS.Endpoint, HELICS.Message}","page":"API","title":"HELICS.helicsEndpointSendMessageZeroCopy","text":"helicsEndpointSendMessageZeroCopy(endpoint::HELICS.Endpoint, message::HELICS.Message)\n\n\nSend a message object from a specific endpoint, the message will not be copied and the message object will no longer be valid after the call.\n\nArguments\n\nendpoint: The Endpoint to send the data from\nmessage: The Message to send\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsEndpointSetDefaultDestination-Tuple{HELICS.Endpoint, String}","page":"API","title":"HELICS.helicsEndpointSetDefaultDestination","text":"helicsEndpointSetDefaultDestination(endpoint::HELICS.Endpoint, dest::String)\n\n\nSet the default destination for an Endpoint if no other endpoint is given\n\nArguments\n\nendpoint: The Endpoint to set the destination for\ndest: A string naming the desired default endpoint\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsEndpointSetInfo-Tuple{HELICS.Endpoint, String}","page":"API","title":"HELICS.helicsEndpointSetInfo","text":"helicsEndpointSetInfo(endpoint::HELICS.Endpoint, info::String)\n\n\nSet the data in the info field for an filter\n\nArguments\n\nendpoint: The Endpoint to query\ninfo: The string to set\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsEndpointSetOption-Tuple{HELICS.Endpoint, Union{Int64, HELICS.Lib.HelicsHandleOptions}, Bool}","page":"API","title":"HELICS.helicsEndpointSetOption","text":"helicsEndpointSetOption(endpoint::HELICS.Endpoint, option::Union{Int64, HELICS.Lib.HelicsHandleOptions}, value::Bool)\n\n\nSet a handle option on an Endpoint\n\nendpoint: The Endpoint to modify\noption: Integer code for the option to set HelicsHandleOptions\nvalue: The value to set the option\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsEndpointSetTag-Tuple{HELICS.Endpoint, String, String}","page":"API","title":"HELICS.helicsEndpointSetTag","text":"helicsEndpointSetTag(endpoint::HELICS.Endpoint, tagName::String, tagValue::String)\n\n\nSet the data in a specific tag for an endpoint.\n\nArguments\n\nendpoint: The Endpoint to query\ntagName: The name of the tag\ntagValue: The string value to associate with the tag\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsEndpointSubscribe-Tuple{HELICS.Endpoint, String}","page":"API","title":"HELICS.helicsEndpointSubscribe","text":"helicsEndpointSubscribe(endpoint::HELICS.Endpoint, key::String)\n\n\nSubscribe an Endpoint to a Publication\n\nArguments\n\nendpoint: The Endpoint to use\nkey: The name of the Publication\n\n\n\n\n\n","category":"method"},{"location":"api/#Federate","page":"API","title":"Federate","text":"","category":"section"},{"location":"api/","page":"API","title":"API","text":"Modules = [HELICS]\nFilter = t -> typeof(t) <: Function && startswith(string(t), \"helicsFederate\") && !startswith(string(t), \"helicsFederateInfo\")","category":"page"},{"location":"api/#HELICS.helicsFederateAddAlias-Tuple{HELICS.Federate, String, String}","page":"API","title":"HELICS.helicsFederateAddAlias","text":"helicsFederateAddAlias(fed::HELICS.Federate, interfaceName::String, alias::String)\n\n\ncreate an alias for an interface\n\nArguments\n\nfed: the Federate to query\ninterfaceName: The current name of an interface\nalias: the additional name to use for the given interface\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateAddDependency-Tuple{HELICS.Federate, String}","page":"API","title":"HELICS.helicsFederateAddDependency","text":"helicsFederateAddDependency(fed::HELICS.Federate, fedName::String)\n\n\nAdd a time dependency for a Federate. The Federate will depend on the given named federate for time synchronization\n\nArguments\n\nfed: the Federate to add the dependency for\nfedName: the name of the Federate to depend on\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateClearMessages-Tuple{HELICS.Federate}","page":"API","title":"HELICS.helicsFederateClearMessages","text":"helicsFederateClearMessages(fed::HELICS.Federate)\n\n\nClear all stored messages from a Federate\n\nthis clears messages retrieved through helicsFederateGetMessage or helicsFederateGetMessageObject\n\nArguments\n\nfed: The Federate to clear the message for\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateClearUpdates-Tuple{HELICS.Federate}","page":"API","title":"HELICS.helicsFederateClearUpdates","text":"helicsFederateClearUpdates(fed::HELICS.Federate)\n\n\nClear all the update flags from a Federates inputs\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateClone-Tuple{T} where T<:HELICS.Federate","page":"API","title":"HELICS.helicsFederateClone","text":"helicsFederateClone(fed::HELICS.Federate) -> HELICS.Federate\n\n\nCreate a new reference to an existing federate\n\nthis will create a new Federate object that references the existing federate it must be freed as well\n\nArguments\n\nfed: an existing Federate\n\nReturns\n\na new reference to the same federate\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateCosimulationTerminationCallback-Tuple{HELICS.Federate, Ptr{Nothing}, Ptr{Nothing}}","page":"API","title":"HELICS.helicsFederateCosimulationTerminationCallback","text":"helicsFederateCosimulationTerminationCallback(fed::HELICS.Federate, cosimTermination::Ptr{Nothing}, userdata::Ptr{Nothing})\n\n\nSet callback for cosimulation termination.\n\nThis callback will be executed once when the time advancement of the federate/co-simulation has terminated. This may be called as part of the finalize operation, or when a maxTime signal is returned from requestTime or when an error is encountered.\n\nArguments\n\nfed: the Federate to set a callback for.\ncosimTermination: A callback with signature void(void *userdata)\nuserdata: a point to user data that is passed to the function when executing\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateCreateMessage-Tuple{HELICS.Federate}","page":"API","title":"HELICS.helicsFederateCreateMessage","text":"helicsFederateCreateMessage(fed::HELICS.Federate) -> HELICS.Message\n\n\nCreate a new empty message object.\n\nThe message is empty and isValid will return false since there is no data associated with the message yet.\n\n#Arguments\n\nfed: a federate object to associate the message with\n\nReturns\n\na Message object containing the message data\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateDestroy-Tuple{HELICS.Federate}","page":"API","title":"HELICS.helicsFederateDestroy","text":"helicsFederateDestroy(fed::HELICS.Federate)\n\n\nDisconnect and free a broker\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateDisconnect-Tuple{HELICS.Federate}","page":"API","title":"HELICS.helicsFederateDisconnect","text":"helicsFederateDisconnect(fed::HELICS.Federate)\n\n\nDisconnect/finalize the federate. This function halts all communication in the federate and disconnects it from the core. This call is identical to helicsFederateFinalize.\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateDisconnectAsync-Tuple{HELICS.Federate}","page":"API","title":"HELICS.helicsFederateDisconnectAsync","text":"helicsFederateDisconnectAsync(fed::HELICS.Federate)\n\n\nDisconnect/finalize the federate in an async call. This call is identical to helicsFederateFinalizeAsync.\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateDisconnectComplete-Tuple{HELICS.Federate}","page":"API","title":"HELICS.helicsFederateDisconnectComplete","text":"helicsFederateDisconnectComplete(fed::HELICS.Federate)\n\n\nComplete the asynchronous disconnect/finalize call. This call is identical to helicsFederateFinalizeComplete\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateEnterExecutingMode-Tuple{HELICS.Federate}","page":"API","title":"HELICS.helicsFederateEnterExecutingMode","text":"helicsFederateEnterExecutingMode(fed::HELICS.Federate)\n\n\nRequest that the Federate enter the Execution mode\n\nthis call is blocking until granted entry by the core object for an asynchronous alternative call helicsFederateEnterExecutingModeAsync on return from this call the Federate will be at time 0.\n\nArguments\n\nfed: a Federate to change modes\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateEnterExecutingModeAsync-Tuple{HELICS.Federate}","page":"API","title":"HELICS.helicsFederateEnterExecutingModeAsync","text":"helicsFederateEnterExecutingModeAsync(fed::HELICS.Federate)\n\n\nRequest that the Federate enter the Execution mode\n\nthis call is non-blocking and will return immediately. Call helicsFederateEnterExecutingModeComplete to finish the call sequence.\n\nArguments\n\nfed: the Federate to complete the call\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateEnterExecutingModeComplete-Tuple{HELICS.Federate}","page":"API","title":"HELICS.helicsFederateEnterExecutingModeComplete","text":"helicsFederateEnterExecutingModeComplete(fed::HELICS.Federate)\n\n\nComplete the call to helicsFederateEnterExecutingModeAsync\n\nArguments\n\nfed: the Federate to complete the call\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateEnterExecutingModeIterative-Tuple{HELICS.Federate, Union{Int64, HELICS.Lib.HelicsIterationRequest}}","page":"API","title":"HELICS.helicsFederateEnterExecutingModeIterative","text":"helicsFederateEnterExecutingModeIterative(fed::HELICS.Federate, iterate::Union{Int64, HELICS.Lib.HelicsIterationRequest}) -> HELICS.Lib.HelicsIterationResult\n\n\nRequest an iterative time\n\nthis call allows for finer grain control of the iterative process then helicsFederateRequestTime it takes a time and iteration request and return a time and iteration status.\n\nArguments\n\nfed: the Federate to make the request of\niterate: the requested iteration mode\n\nReturns\n\nan iteration structure with field containing the time and iteration status\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateEnterExecutingModeIterativeAsync-Tuple{HELICS.Federate, Union{Int64, HELICS.Lib.HelicsIterationRequest}}","page":"API","title":"HELICS.helicsFederateEnterExecutingModeIterativeAsync","text":"helicsFederateEnterExecutingModeIterativeAsync(fed::HELICS.Federate, iterate::Union{Int64, HELICS.Lib.HelicsIterationRequest})\n\n\nRequest an iterative entry to the execution mode\n\nThis call allows for finer grain control of the iterative process then helicsFederateRequestTime it takes a time and and iteration request and return a time and iteration status\n\nArguments\n\nfed: the Federate to make the request of\niterate: the requested iteration mode\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateEnterExecutingModeIterativeComplete-Tuple{HELICS.Federate}","page":"API","title":"HELICS.helicsFederateEnterExecutingModeIterativeComplete","text":"helicsFederateEnterExecutingModeIterativeComplete(fed::HELICS.Federate) -> HELICS.Lib.HelicsIterationResult\n\n\nComplete the asynchronous iterative call into ExecutionModel\n\nArguments\n\nfed: the Federate to make the request of\n\nReturns\n\nan iteration object containing the iteration time and iteration_status\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateEnterInitializingMode-Tuple{HELICS.Federate}","page":"API","title":"HELICS.helicsFederateEnterInitializingMode","text":"helicsFederateEnterInitializingMode(fed::HELICS.Federate)\n\n\nEnter the initialization state of a Federate\n\nthe initialization state allows initial values to be set and received if the iteration is requested on entry to the execution state. This is a blocking call and will block until the core allows it to proceed.\n\nArguments\n\nfed: the Federate to operate on\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateEnterInitializingModeAsync-Tuple{HELICS.Federate}","page":"API","title":"HELICS.helicsFederateEnterInitializingModeAsync","text":"helicsFederateEnterInitializingModeAsync(fed::HELICS.Federate)\n\n\nNon blocking alternative to helicsFederateEnterInitializingMode. The function helicsFederateFinalize must be called to finish the operation\n\nArguments\n\nfed: the Federate to operate on\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateEnterInitializingModeComplete-Tuple{HELICS.Federate}","page":"API","title":"HELICS.helicsFederateEnterInitializingModeComplete","text":"helicsFederateEnterInitializingModeComplete(fed::HELICS.Federate)\n\n\nFinalize the entry to initialize mode that was initiated with helicsFederateEnterInitializingModeAsync\n\nArguments\n\nfed: the Federate desiring to complete the initialization step function\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateEnterInitializingModeIterative-Tuple{HELICS.Federate}","page":"API","title":"HELICS.helicsFederateEnterInitializingModeIterative","text":"helicsFederateEnterInitializingModeIterative(fed::HELICS.Federate)\n\n\nTrigger a blocking call and return to created state after all federates have either triggered an iteration or are waiting to enter initializing mode.\n\nThis call will return the federate to the created state to allow additional setup to occur with federates either iterating in the mode or waiting.\n\nArguments\n\nfed: the Federate to operate on.\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateEnterInitializingModeIterativeAsync-Tuple{HELICS.Federate}","page":"API","title":"HELICS.helicsFederateEnterInitializingModeIterativeAsync","text":"helicsFederateEnterInitializingModeIterativeAsync(fed::HELICS.Federate)\n\n\nNon blocking alternative to ef helicsFederateEnterInitializingModeIterative. The function helicsFederateEnterInitializationModeIterativeComplete must be called to finish the operation.\n\nArguments\n\nfed: the Federate to operate on.\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateEnterInitializingModeIterativeComplete-Tuple{HELICS.Federate}","page":"API","title":"HELICS.helicsFederateEnterInitializingModeIterativeComplete","text":"helicsFederateEnterInitializingModeIterativeComplete(fed::HELICS.Federate)\n\n\nComplete the call to enter initializing mode Iterative that was initiated with /ref heliceEnterInitializingModeIterativeAsync. The federate will be in created or error mode on return\n\nArguments\n\nfed: the Federate to operate on.\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateErrorHandlerCallback-Tuple{HELICS.Federate, Ptr{Nothing}, Ptr{Nothing}}","page":"API","title":"HELICS.helicsFederateErrorHandlerCallback","text":"helicsFederateErrorHandlerCallback(fed::HELICS.Federate, errorHandler::Ptr{Nothing}, userdata::Ptr{Nothing})\n\n\nSet callback for error handling.\n\nThis callback will be called when a federate error is encountered.\n\nArguments\n\nfed: the Federate to set a callback for.\nerrorHandler: A callback with signature void(int errorCode, const char *errorString, void *userdata)\nuserdata: a point to user data that is passed to the function when executing\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateExecutingEntryCallback-Tuple{HELICS.Federate, Ptr{Nothing}, Ptr{Nothing}}","page":"API","title":"HELICS.helicsFederateExecutingEntryCallback","text":"helicsFederateExecutingEntryCallback(fed::HELICS.Federate, executingEntry::Ptr{Nothing}, userdata::Ptr{Nothing})\n\n\nSet callback for the entry to ExecutingMode.\n\nThis callback will be executed once on first entry to executingMode\n\nArguments\n\nfed: the Federate to set a callback for.\nexecutingEntry: A callback with signature void(void *userdata)\nuserdata: a point to user data that is passed to the function when executing\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateFinalize-Tuple{HELICS.Federate}","page":"API","title":"HELICS.helicsFederateFinalize","text":"helicsFederateFinalize(fed::HELICS.Federate)\n\n\nFinalize the Federate this function halts all communication in the Federate and disconnects it from the core\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateFinalizeAsync-Tuple{HELICS.Federate}","page":"API","title":"HELICS.helicsFederateFinalizeAsync","text":"helicsFederateFinalizeAsync(fed::HELICS.Federate)\n\n\nFinalize the Federate in an async call\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateFinalizeComplete-Tuple{HELICS.Federate}","page":"API","title":"HELICS.helicsFederateFinalizeComplete","text":"helicsFederateFinalizeComplete(fed::HELICS.Federate)\n\n\nComplete the asynchronous finalize call\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateFree-Tuple{HELICS.Federate}","page":"API","title":"HELICS.helicsFederateFree","text":"helicsFederateFree(fed::HELICS.Federate)\n\n\nRelease the memory associated with a Federate\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateGetCommand-Tuple{HELICS.Federate}","page":"API","title":"HELICS.helicsFederateGetCommand","text":"helicsFederateGetCommand(fed::HELICS.Federate) -> String\n\n\nGet a command sent to the federate\n\nArguments\n\nfed: The Federate to get the command for\n\nReturns\n\nA string with the command for the federate, if the string is empty no command is available.\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateGetCommandSource-Tuple{HELICS.Federate}","page":"API","title":"HELICS.helicsFederateGetCommandSource","text":"helicsFederateGetCommandSource(fed::HELICS.Federate) -> String\n\n\nGet the source of the most recently retrieved command sent to the federate.\n\nArguments\n\nfed: The Federate to get the command for\n\nReturns\n\nA string with name of the source who sent the command\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateGetCore-Tuple{HELICS.Federate}","page":"API","title":"HELICS.helicsFederateGetCore","text":"helicsFederateGetCore(fed::HELICS.Federate) -> HELICS.Core\n\n\nGet the core object associated with a Federate\n\nArguments\n\nfed: a Federate object\n\nReturns\n\na Core object\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateGetCurrentTime-Tuple{HELICS.Federate}","page":"API","title":"HELICS.helicsFederateGetCurrentTime","text":"helicsFederateGetCurrentTime(fed::HELICS.Federate) -> Float64\n\n\nGet the current time of the Federate\n\nArguments\n\nfed: the Federate to query\n\nReturns\n\nthe current time of the Federate\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateGetEndpoint-Tuple{HELICS.Federate, String}","page":"API","title":"HELICS.helicsFederateGetEndpoint","text":"helicsFederateGetEndpoint(fed::HELICS.Federate, name::String) -> HELICS.Endpoint\n\n\nGet an Endpoint object from a name\n\nArguments\n\nfed: The Federate to use to get the Endpoint\nname: The name of the Endpoint\n\nReturns\n\na Endpoint object, the object will not be valid and err will contain an error code if no endpoint with the specified name exists\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateGetEndpointByIndex-Tuple{HELICS.Federate, Int64}","page":"API","title":"HELICS.helicsFederateGetEndpointByIndex","text":"helicsFederateGetEndpointByIndex(fed::HELICS.Federate, index::Int64) -> HELICS.Endpoint\n\n\nGet an Endpoint by its index typically already created via helicsFederateRegisterInterfaces file or something of that nature\n\nArguments\n\nfed: the Federate in which to create a Publication\nindex: The index of the Publication to get\n\nReturns\n\na Endpoint, which will be NULL if an invalid index\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateGetEndpointCount-Tuple{HELICS.Federate}","page":"API","title":"HELICS.helicsFederateGetEndpointCount","text":"helicsFederateGetEndpointCount(fed::HELICS.Federate) -> Int64\n\n\nGet the number of endpoints in a Federate\n\nArguments\n\nfed: The Federate to query\n\nReturns\n\n(-1) if fed was not a valid federate otherwise returns the number of endpoints\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateGetFilter-Tuple{HELICS.Federate, String}","page":"API","title":"HELICS.helicsFederateGetFilter","text":"helicsFederateGetFilter(fed::HELICS.Federate, name::String) -> HELICS.Filter\n\n\nGet a Filter by its name typically already created via helicsFederateRegisterInterfaces file or something of that nature\n\nArguments\n\nfed: the Federate to use to get the Filter\nname: the name of the Filter\n\nReturns\n\na Filter object, the object will not be valid and err will contain an error code if no filter with the specified name exists\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateGetFilterByIndex-Tuple{HELICS.Federate, Int64}","page":"API","title":"HELICS.helicsFederateGetFilterByIndex","text":"helicsFederateGetFilterByIndex(fed::HELICS.Federate, index::Int64) -> HELICS.Filter\n\n\nGet a Filter by its index typically already created via helicsFederateRegisterInterfaces file or something of that nature\n\nArguments\n\nfed: the Federate in which to create a Publication\nindex: the index of the Publication to get\na Filter, which will be NULL if an invalid index\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateGetFilterCount-Tuple{HELICS.Federate}","page":"API","title":"HELICS.helicsFederateGetFilterCount","text":"helicsFederateGetFilterCount(fed::HELICS.Federate) -> Int64\n\n\nGet a the number of filters registered through a Federate\n\nArguments\n\nfed: the Federate to use to get the Filter\n\nReturns\n\na count of the number of filters registered through a Federate\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateGetFlagOption-Tuple{HELICS.Federate, Union{Int64, HELICS.Lib.HelicsFederateFlags, HELICS.Lib.HelicsHandleOptions}}","page":"API","title":"HELICS.helicsFederateGetFlagOption","text":"helicsFederateGetFlagOption(fed::HELICS.Federate, flag::Union{Int64, HELICS.Lib.HelicsFederateFlags, HELICS.Lib.HelicsHandleOptions}) -> Bool\n\n\nGet a flag value for a Federate\n\nArguments\n\nfed: the Federate to get the flag for\nflag: the flag to query\n\nReturns\n\nthe value of the flag\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateGetInput-Tuple{HELICS.Federate, String}","page":"API","title":"HELICS.helicsFederateGetInput","text":"helicsFederateGetInput(fed::HELICS.Federate, key::String) -> HELICS.Input\n\n\nGet an Input object from a key\n\nArguments\n\nfed: the value federate object to use to get the Publication\nkey: the name of the Input\n\nReturns\n\na Subscription object, the object will not be valid and err will contain an error code if no input with the specified key exists\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateGetInputByIndex-Tuple{HELICS.Federate, Int64}","page":"API","title":"HELICS.helicsFederateGetInputByIndex","text":"helicsFederateGetInputByIndex(fed::HELICS.Federate, index::Int64) -> HELICS.Input\n\n\nGet an Input by its index typically already created via helicsFederateRegisterInterfaces file or something of that nature\n\nArguments\n\nfed: the Federate in which to create a Publication\nindex: the index of the Publication to get\n\nReturns\n\na helics_input, which will be NULL if an invalid index\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateGetInputByTarget-Tuple{HELICS.Federate, String}","page":"API","title":"HELICS.helicsFederateGetInputByTarget","text":"helicsFederateGetInputByTarget(fed::HELICS.Federate, target::String) -> HELICS.Input\n\n\nGet an Input object from an Input target\n\nArguments\n\nfed: the value federate object to use to get the Publication\ntarget: the name of the Publication that an Input is targeting\n\nReturns\n\na Input object, the object will not be valid and err will contain an error code if no input with the specified\n\nkey exists\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateGetInputCount-Tuple{HELICS.Federate}","page":"API","title":"HELICS.helicsFederateGetInputCount","text":"helicsFederateGetInputCount(fed::HELICS.Federate) -> Int64\n\n\nGet the number of subscriptions in a Federate\n\nArguments\n\nfed: an existing Federate\n\nReturns\n\n(-1) if fed was not a valid federate otherwise returns the number of subscriptions\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateGetIntegerProperty-Tuple{HELICS.Federate, Union{Int64, HELICS.Lib.HelicsHandleOptions, HELICS.Lib.HelicsProperties}}","page":"API","title":"HELICS.helicsFederateGetIntegerProperty","text":"helicsFederateGetIntegerProperty(fed::HELICS.Federate, intProperty::Union{Int64, HELICS.Lib.HelicsHandleOptions, HELICS.Lib.HelicsProperties}) -> Int64\n\n\nSet the logging level for the Federate\n\ndebug and trace only do anything if they were enabled in the compilation\n\nArguments\n\nfed: the Federate to get the flag for\nintProperty: a code for the property to set HelicsHandleOptions\n\nReturns\n\nthe value of the property\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateGetMessage-Tuple{HELICS.Federate}","page":"API","title":"HELICS.helicsFederateGetMessage","text":"helicsFederateGetMessage(fed::HELICS.Federate) -> HELICS.Message\n\n\nReceive a communication message for any endpoint in the Federate\n\nThe return order will be in order of endpoint creation. So all messages that are available for the first endpoint, then all for the second, and so on within a single endpoint the messages are ordered by time, then source_id, then order of arrival\n\nReturns\n\na Message object containing the message data\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateGetName-Tuple{HELICS.Federate}","page":"API","title":"HELICS.helicsFederateGetName","text":"helicsFederateGetName(fed::HELICS.Federate) -> String\n\n\nGet the name of the Federate\n\nArguments\n\nfed: the Federate to query\n\nReturns\n\na string with the name\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateGetPublication-Tuple{HELICS.Federate, String}","page":"API","title":"HELICS.helicsFederateGetPublication","text":"helicsFederateGetPublication(fed::HELICS.Federate, key::String) -> HELICS.Publication\n\n\nGet a Publication object from a key\n\nArguments\n\nfed: the value federate object to use to get the Publication\nkey: the name of the Publication\n\nReturns\n\na Publication object, the object will not be valid and err will contain an error code if no publication with the\n\nspecified key exists\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateGetPublicationByIndex-Tuple{HELICS.Federate, Int64}","page":"API","title":"HELICS.helicsFederateGetPublicationByIndex","text":"helicsFederateGetPublicationByIndex(fed::HELICS.Federate, index::Int64) -> HELICS.Publication\n\n\nGet a Publication by its index typically already created via helicsFederateRegisterInterfaces file or something of that nature\n\nArguments\n\nfed: the Federate in which to create a Publication\nindex: the index of the Publication to get\n\nReturns\n\na helics_publication\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateGetPublicationCount-Tuple{HELICS.Federate}","page":"API","title":"HELICS.helicsFederateGetPublicationCount","text":"helicsFederateGetPublicationCount(fed::HELICS.Federate) -> Int64\n\n\nGet the number of publications in a Federate\n\nArguments\n\nfed: an existing Federate\n\nReturns\n\n(-1) if fed was not a valid federate otherwise returns the number of publications\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateGetState-Tuple{HELICS.Federate}","page":"API","title":"HELICS.helicsFederateGetState","text":"helicsFederateGetState(fed::HELICS.Federate) -> HELICS.Lib.HelicsFederateState\n\n\nGet the current state of a Federate\n\nArguments\n\nfed: the Federate to query\n\nReturns\n\nstate the resulting state if void return helics_ok\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateGetSubscription-Tuple{HELICS.Federate, String}","page":"API","title":"HELICS.helicsFederateGetSubscription","text":"helicsFederateGetSubscription(fed::HELICS.Federate, key::String) -> HELICS.Input\n\n\nGet an Input object from a Subscription target\n\nArguments\n\nfed: the value federate object to use to get the Publication\nkey: the name of the Publication that a Subscription is targeting\n\nReturns\n\na Subscription object, the object will not be valid and err will contain an error code if no input with the specified\n\nkey exists\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateGetTag-Tuple{HELICS.Federate, String}","page":"API","title":"HELICS.helicsFederateGetTag","text":"helicsFederateGetTag(fed::HELICS.Federate, tagName::String) -> String\n\n\nGet a federate tag value.\n\nArguments\n\nfed: the Federate to get the tag for\ntagName: the name of the tag to get\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateGetTimeProperty-Tuple{HELICS.Federate, Union{Int64, HELICS.Lib.HelicsProperties}}","page":"API","title":"HELICS.helicsFederateGetTimeProperty","text":"helicsFederateGetTimeProperty(fed::HELICS.Federate, timeProperty::Union{Int64, HELICS.Lib.HelicsProperties}) -> Float64\n\n\nGet the current value of a time based property in a Federate\n\nArguments\n\nfed: the Federate query\ntimeProperty: the property to query\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateGetTranslator-Tuple{HELICS.Federate, String}","page":"API","title":"HELICS.helicsFederateGetTranslator","text":"helicsFederateGetTranslator(fed::HELICS.Federate, name::String) -> HELICS.Translator\n\n\nGet a translator by its name, typically already created via registerInterfaces file or something of that nature.\n\nArguments\n\nfed: the Federate to get the translator from\nname: The name of the translator to get\n\nReturns\n\nA Translator\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateGetTranslatorByIndex-Tuple{HELICS.Federate, Int64}","page":"API","title":"HELICS.helicsFederateGetTranslatorByIndex","text":"helicsFederateGetTranslatorByIndex(fed::HELICS.Federate, index::Int64) -> HELICS.Translator\n\n\nGet a translator by its index, typically already created via registerInterfaces file or something of that nature.\n\nArguments\n\nfed: the Federate to get the translator from\nindex: The index of the translator to get\n\nReturns\n\nA Translator\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateGetTranslatorCount-Tuple{HELICS.Federate}","page":"API","title":"HELICS.helicsFederateGetTranslatorCount","text":"helicsFederateGetTranslatorCount(fed::HELICS.Federate) -> Int64\n\n\nGet the number of translators registered through a federate.\n\nArguments\n\nfed: the Federate to register through.\n\nReturns\n\na count of the number of translators registered through a federate.\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateGlobalError-Tuple{HELICS.Federate, Integer, String}","page":"API","title":"HELICS.helicsFederateGlobalError","text":"helicsFederateGlobalError(fed::HELICS.Federate, error_code::Integer, error_string::String)\n\n\nGenerate a global Error from a Federate\n\nA global error halts the co-simulation completely\n\nArguments\n\nfed: the Federate to create an error in\nerror_code: the integer code for the error\nerror_string: a string describing the error\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateHasMessage-Tuple{HELICS.Federate}","page":"API","title":"HELICS.helicsFederateHasMessage","text":"helicsFederateHasMessage(fed::HELICS.Federate) -> Bool\n\n\nCheck if the Federate has any outstanding messages\n\nArguments\n\nfed: The Federate to check if it has\n\nReturns\n\ntrue if the Federate has a message waiting false otherwise\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateInitializingEntryCallback-Tuple{HELICS.Federate, Ptr{Nothing}, Ptr{Nothing}}","page":"API","title":"HELICS.helicsFederateInitializingEntryCallback","text":"helicsFederateInitializingEntryCallback(fed::HELICS.Federate, initializingEntry::Ptr{Nothing}, userdata::Ptr{Nothing})\n\n\nSet callback for the entry to initializingMode.\n\nThis callback will be executed when the initializingMode is entered\n\nArguments\n\nfed: the Federate to set a callback for.\ninitializingEntry: A callback with signature void(HelicsBool iterating, void *userdata);\n\n\t\t\t\t the bool parameter is set to true if the entry is iterative, therefore the first time this is called the bool is false\n\t\t\t\t and all subsequent times it is true.\n\nuserdata: a point to user data that is passed to the function when executing\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateIsAsyncOperationCompleted-Tuple{HELICS.Federate}","page":"API","title":"HELICS.helicsFederateIsAsyncOperationCompleted","text":"helicsFederateIsAsyncOperationCompleted(fed::HELICS.Federate) -> Bool\n\n\nCheck if the current Asynchronous operation has completed\n\nArguments\n\nfed: the Federate to operate on\n\nReturns\n\nfalse if not completed, true if completed\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateIsProtected-Tuple{String}","page":"API","title":"HELICS.helicsFederateIsProtected","text":"helicsFederateIsProtected(fedName::String)\n\n\nchecks if an existing federate is protected\n\nArguments\n\nfedName: The name of an existing HelicsFederate.\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateIsValid-Tuple{HELICS.Federate}","page":"API","title":"HELICS.helicsFederateIsValid","text":"helicsFederateIsValid(fed::HELICS.Federate) -> Bool\n\n\nCheck if a Federate_object is valid\n\nReturns\n\ntrue if the Federate is a valid active federate, false otherwise\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateLocalError-Tuple{HELICS.Federate, Integer, String}","page":"API","title":"HELICS.helicsFederateLocalError","text":"helicsFederateLocalError(fed::HELICS.Federate, error_code::Integer, error_string::String)\n\n\nGenerate a local error in a Federate\n\nThis will propagate through the co-simulation but not necessarily halt the co-simulation, it has a similar effect to finalize but does allow some interaction with a core for a brief time.\n\nArguments\n\nfed: the Federate to create an error in\nerror_code: the integer code for the error\nerror_string: a string describing the error\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateLogDebugMessage-Tuple{HELICS.Federate, String}","page":"API","title":"HELICS.helicsFederateLogDebugMessage","text":"helicsFederateLogDebugMessage(fed::HELICS.Federate, logmessage::String)\n\n\nLog a message through a Federate\n\nArguments\n\nfed: The Federate to set the global through\nlogmessage: The message to put in the log\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateLogErrorMessage-Tuple{HELICS.Federate, String}","page":"API","title":"HELICS.helicsFederateLogErrorMessage","text":"helicsFederateLogErrorMessage(fed::HELICS.Federate, logmessage::String)\n\n\nLog an error message through a Federate\n\nArguments\n\nfed: The Federate to set the global through\nlogmessage: The message to put in the log\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateLogInfoMessage-Tuple{HELICS.Federate, String}","page":"API","title":"HELICS.helicsFederateLogInfoMessage","text":"helicsFederateLogInfoMessage(fed::HELICS.Federate, logmessage::String)\n\n\nLog a message through a Federate\n\nArguments\n\nfed: The Federate to set the global through\nlogmessage: The message to put in the log\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateLogLevelMessage-Tuple{HELICS.Federate, Union{Int64, HELICS.Lib.HelicsLogLevels}, String}","page":"API","title":"HELICS.helicsFederateLogLevelMessage","text":"helicsFederateLogLevelMessage(fed::HELICS.Federate, loglevel::Union{Int64, HELICS.Lib.HelicsLogLevels}, logmessage::String)\n\n\nLog a message through a Federate\n\nArguments\n\nfed: The Federate to set the global through\nloglevel: The level of the message to log. See HelicsLogLevels\nlogmessage: The message to put in the log\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateLogWarningMessage-Tuple{HELICS.Federate, String}","page":"API","title":"HELICS.helicsFederateLogWarningMessage","text":"helicsFederateLogWarningMessage(fed::HELICS.Federate, logmessage::String)\n\n\nLog a warning message through a Federate\n\nArguments\n\nfed: The Federate to set the global through\nlogmessage: The message to put in the log\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederatePendingMessageCount-Tuple{HELICS.Federate}","page":"API","title":"HELICS.helicsFederatePendingMessageCount","text":"helicsFederatePendingMessageCount(fed::HELICS.Federate) -> Int64\n\n\nReturns the number of pending receives for a federate\n\nArguments\n\nfed: The Federate to get the number of waiting messages\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateProcessCommunications-Tuple{HELICS.Federate, Union{Float64, Int64}}","page":"API","title":"HELICS.helicsFederateProcessCommunications","text":"helicsFederateProcessCommunications(fed::HELICS.Federate, period::Union{Float64, Int64})\n\n\nTell helics to process internal communications for a period of time.\n\nArguments\n\nfed: the Federate to tell to process\n`period1: The length of time to process communications and then return control.\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateProtect-Tuple{String}","page":"API","title":"HELICS.helicsFederateProtect","text":"helicsFederateProtect(fedName::String)\n\n\nProtect a federate from finalizing and closing if all references go out of scope\n\nthis function allows a federate to be retrieved on demand, it must be explicitly close later otherwise it will be destroyed when the library is closed\n\nArguments\n\nfedName: The name of an existing HelicsFederate.\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederatePublishJSON-Tuple{HELICS.Federate, String}","page":"API","title":"HELICS.helicsFederatePublishJSON","text":"helicsFederatePublishJSON(fed::HELICS.Federate, json::String)\n\n\nPublish data contained in a json file or string\n\nArguments\n\nfed: The Federate\njson: json file or string\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateRegisterCloningFilter-Tuple{HELICS.Federate, String}","page":"API","title":"HELICS.helicsFederateRegisterCloningFilter","text":"helicsFederateRegisterCloningFilter(fed::HELICS.Federate, name::String) -> HELICS.Filter\n\n\nCreate a cloning Filter on the specified federate\n\nCloning filters copy a message and send it to multiple locations source and destination can be added through other functions\n\nArguments\n\nfed: the fed to register through\nname: the name of the Filter (can be NULL)\n\nReturns\n\na Filter object\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateRegisterEndpoint-Tuple{HELICS.Federate, String, String}","page":"API","title":"HELICS.helicsFederateRegisterEndpoint","text":"helicsFederateRegisterEndpoint(fed::HELICS.Federate, name::String, kind::String) -> HELICS.Endpoint\n\n\nCreate an Endpoint\n\nThe Endpoint becomes part of the Federate and is destroyed when the Federate is freed so there are no separate free functions for endpoints.\n\nArguments\n\nfed: the Federate in which to create an Endpoint must have been create with helicsCreateMessageFederate or helicsCreateCombinationFederate\nname: the identifier for the Endpoint, this will be prepended with the Federate name for the global identifier\ntype: a string describing the expected type of the Publication may be NULL\n\nReturns\n\nEndpoint\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateRegisterFilter-Tuple{HELICS.Federate, Union{Int64, HELICS.Lib.HelicsFilterTypes}, String}","page":"API","title":"HELICS.helicsFederateRegisterFilter","text":"helicsFederateRegisterFilter(fed::HELICS.Federate, kind::Union{Int64, HELICS.Lib.HelicsFilterTypes}, name::String) -> HELICS.Filter\n\n\nCreate a source Filter on the specified federate\n\nfilters can be created through a Federate or a core , linking through a federate allows a few extra features of name matching to function on the Federate interface but otherwise equivalent behavior\n\nArguments\n\nfed: the fed to register through\ntype: the type of filter to create HelicsFilterTypes\nname: the name of the Filter (can be NULL)\n\nReturns\n\na Filter object\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateRegisterFromPublicationJSON-Tuple{HELICS.Federate, String}","page":"API","title":"HELICS.helicsFederateRegisterFromPublicationJSON","text":"helicsFederateRegisterFromPublicationJSON(fed::HELICS.Federate, json::String)\n\n\nRegister the Publications via JSON publication string\n\nThis would be the same JSON that would be used to publish data\n\nArguments\n\nfed: the Federate\njson: json string\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateRegisterGlobalCloningFilter-Tuple{HELICS.Federate, String}","page":"API","title":"HELICS.helicsFederateRegisterGlobalCloningFilter","text":"helicsFederateRegisterGlobalCloningFilter(fed::HELICS.Federate, name::String) -> HELICS.Filter\n\n\nCreate a global cloning Filter on the specified federate\n\nCloning filters copy a message and send it to multiple locations source and destination can be added through other functions\n\nArguments\n\nfed: the fed to register through\nname: the name of the Filter (can be NULL)\n\nReturns\n\na Filter object\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateRegisterGlobalEndpoint-Tuple{HELICS.Federate, String, String}","page":"API","title":"HELICS.helicsFederateRegisterGlobalEndpoint","text":"helicsFederateRegisterGlobalEndpoint(fed::HELICS.Federate, name::String, type::String) -> HELICS.Endpoint\n\n\nCreate an Endpoint\n\nThe Endpoint becomes part of the Federate and is destroyed when the federate is freed so there are no separate free functions for endpoints\n\nArguments\n\nfed: the Federate in which to create an Endpoint must have been create with helicsCreateMessageFederate or helicsCreateCombinationFederate\nname: the identifier for the Endpoint, the given name is the global identifier\ntype: a string describing the expected type of the Publication may be NULL\n\nReturns\n\nEndpoint\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateRegisterGlobalFilter-Tuple{HELICS.Federate, Union{Int64, HELICS.Lib.HelicsFilterTypes}, String}","page":"API","title":"HELICS.helicsFederateRegisterGlobalFilter","text":"helicsFederateRegisterGlobalFilter(fed::HELICS.Federate, kind::Union{Int64, HELICS.Lib.HelicsFilterTypes}, name::String) -> HELICS.Filter\n\n\nCreate a global source filter through a Federate\n\nFilters can be created through a Federate or a core , linking through a federate allows a few extra features of name matching to function on the Federate interface but otherwise equivalent behavior\n\nArguments\n\nfed: the fed to register through\ntype: the type of filter to create HelicsFilterTypes\nname: the name of the Filter (can be NULL)\n\nReturns\n\na Filter object\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateRegisterGlobalInput","page":"API","title":"HELICS.helicsFederateRegisterGlobalInput","text":"helicsFederateRegisterGlobalInput(fed::HELICS.Federate, key::String, kind::Union{Int64, HELICS.Lib.HelicsDataTypes}) -> HELICS.Input\nhelicsFederateRegisterGlobalInput(fed::HELICS.Federate, key::String, kind::Union{Int64, HELICS.Lib.HelicsDataTypes}, units::String) -> HELICS.Input\n\n\nRegister a global named input\n\nThe Publication becomes part of the Federate and is destroyed when the Federate is freed so there are no separate free functions for subscriptions and publications\n\nArguments\n\nfed: the Federate in which to create a Publication\nkey: the identifier for the Publication\ntype: a code identifying the type of the Input see HelicsDataTypes for available options\nunits: a string listing the units of the Subscription maybe NULL\n\nReturns\n\nthe Publication\n\n\n\n\n\n","category":"function"},{"location":"api/#HELICS.helicsFederateRegisterGlobalPublication","page":"API","title":"HELICS.helicsFederateRegisterGlobalPublication","text":"helicsFederateRegisterGlobalPublication(fed::HELICS.Federate, key::String, kind::Union{Int64, HELICS.Lib.HelicsDataTypes}) -> HELICS.Publication\nhelicsFederateRegisterGlobalPublication(fed::HELICS.Federate, key::String, kind::Union{Int64, HELICS.Lib.HelicsDataTypes}, units::String) -> HELICS.Publication\n\n\nRegister a global named publication with an arbitrary type\n\nArguments\n\nThe Publication becomes part of the Federate and is destroyed when the Federate is freed so there are no separate free functions for subscriptions and publications\n\nArguments\n\nfed: the Federate in which to create a Publication\nkey: the identifier for the Publication\ntype: a code identifying the type of the Input see HelicsDataTypes for available options\nunits: a string listing the units of the Subscription maybe NULL\n\nReturns\n\nthe Publication\n\n\n\n\n\n","category":"function"},{"location":"api/#HELICS.helicsFederateRegisterGlobalTargetedEndpoint-Tuple{HELICS.Federate, String, String}","page":"API","title":"HELICS.helicsFederateRegisterGlobalTargetedEndpoint","text":"helicsFederateRegisterGlobalTargetedEndpoint(fed::HELICS.Federate, name::String, type::String) -> HELICS.Endpoint\n\n\nCreate a global targeted endpoint, Targeted endpoints have specific destinations predefined and do not allow sending messages to other endpoints\n\n@details The endpoint becomes part of the federate and is destroyed when the federate is freed so there are no separate free functions for endpoints.\n\nArguments\n\nfed: the Federate in which to create an Endpoint must have been create with helicsCreateMessageFederate or helicsCreateCombinationFederate\nname: the identifier for the Endpoint, the given name is the global identifier\ntype: a string describing the expected type of the Publication may be NULL\n\nReturns\n\nEndpoint\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateRegisterGlobalTranslator-Tuple{HELICS.Federate, Int64, String}","page":"API","title":"HELICS.helicsFederateRegisterGlobalTranslator","text":"helicsFederateRegisterGlobalTranslator(fed::HELICS.Federate, type::Int64, name::String)\n\n\nCreate a global translator through a federate.\n\nTranslators can be created through a federate or a core. Linking through a federate allows a few extra features of name matching to function on the federate interface but otherwise have equivalent behavior.\n\nArguments\n\nfed: the Federate to register through.\ntype: The type of translator to create /ref HelicsTranslatorTypes\nname: The name of the translator, it can be null\n\nReturns\n\nA Translator\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateRegisterGlobalTypeInput","page":"API","title":"HELICS.helicsFederateRegisterGlobalTypeInput","text":"helicsFederateRegisterGlobalTypeInput(fed::HELICS.Federate, key::String, kind::String) -> HELICS.Input\nhelicsFederateRegisterGlobalTypeInput(fed::HELICS.Federate, key::String, kind::String, units::String) -> HELICS.Input\n\n\nRegister a global publication with an arbitrary type\n\nThe Publication becomes part of the Federate and is destroyed when the Federate is freed so there are no separate free functions for subscriptions and publications\n\nArguments\n\nfed: the Federate in which to create a Publication\nkey: the identifier for the Publication\ntype: a string defining the type of the Input\nunits: a string listing the units of the Subscription maybe NULL\n\nReturns\n\nthe Publication\n\n\n\n\n\n","category":"function"},{"location":"api/#HELICS.helicsFederateRegisterGlobalTypePublication","page":"API","title":"HELICS.helicsFederateRegisterGlobalTypePublication","text":"helicsFederateRegisterGlobalTypePublication(fed::HELICS.Federate, key::String, kind::String) -> HELICS.Publication\nhelicsFederateRegisterGlobalTypePublication(fed::HELICS.Federate, key::String, kind::String, units::String) -> HELICS.Publication\n\n\nRegister a global publication with a defined type\n\nArguments\n\nThe Publication becomes part of the Federate and is destroyed when the Federate is freed so there are no separate free functions for subscriptions and publications\n\nfed: the Federate in which to create a Publication\nkey: the identifier for the Publication\ntype: a string describing the expected type of the Publication\nunits: a string listing the units of the Subscription maybe NULL\n\nReturns\n\nthe Publication\n\n\n\n\n\n","category":"function"},{"location":"api/#HELICS.helicsFederateRegisterInput","page":"API","title":"HELICS.helicsFederateRegisterInput","text":"helicsFederateRegisterInput(fed::HELICS.Federate, key::String, kind::Union{Int64, HELICS.Lib.HelicsDataTypes}) -> HELICS.Input\nhelicsFederateRegisterInput(fed::HELICS.Federate, key::String, kind::Union{Int64, HELICS.Lib.HelicsDataTypes}, units::String) -> HELICS.Input\n\n\nRegister a named input\n\nThe Input becomes part of the Federate and is destroyed when the Federate is freed so there are no separate free functions for subscriptions, inputs, and publications\n\nArguments\n\nfed: the Federate in which to create an Input\nkey: the identifier for the Publication the global input key will be prepended with the Federate name\ntype: a code identifying the type of the Input see HelicsDataTypes for available options\nunits: a string listing the units of the Input maybe NULL\n\nReturns\n\nthe Input\n\n\n\n\n\n","category":"function"},{"location":"api/#HELICS.helicsFederateRegisterInterfaces-Tuple{HELICS.Federate, String}","page":"API","title":"HELICS.helicsFederateRegisterInterfaces","text":"helicsFederateRegisterInterfaces(fed::HELICS.Federate, file::String)\n\n\nLoad interfaces from a file\n\nArguments\n\nfed: the Federate to which to load interfaces\nfile: the name of a file to load the interfaces from either JSON, or TOML\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateRegisterPublication","page":"API","title":"HELICS.helicsFederateRegisterPublication","text":"helicsFederateRegisterPublication(fed::HELICS.Federate, key::String, kind::Union{Int64, HELICS.Lib.HelicsDataTypes}) -> HELICS.Publication\nhelicsFederateRegisterPublication(fed::HELICS.Federate, key::String, kind::Union{Int64, HELICS.Lib.HelicsDataTypes}, units::String) -> HELICS.Publication\n\n\nRegister a Publication with a known type\n\nThe Publication becomes part of the Federate and is destroyed when the Federate is freed so there are no separate free functions for subscriptions and publications\n\nArguments\n\nfed: the Federate in which to create a Publication\nkey: the identifier for the Publication the global publication key will be prepended with the Federate name\ntype: a code identifying the type of the Input see HelicsDataTypes for available options\nunits: a string listing the units of the Subscription maybe NULL\n\nReturns\n\nthe Publication\n\n\n\n\n\n","category":"function"},{"location":"api/#HELICS.helicsFederateRegisterSubscription","page":"API","title":"HELICS.helicsFederateRegisterSubscription","text":"helicsFederateRegisterSubscription(fed::HELICS.Federate, key::String) -> HELICS.Input\nhelicsFederateRegisterSubscription(fed::HELICS.Federate, key::String, units::String) -> HELICS.Input\n\n\nCreate a Subscription\n\nThe Subscription becomes part of the Federate and is destroyed when the Federate is freed so there are no separate free functions for subscriptions and publications\n\nArguments\n\nfed: the Federate in which to create a Subscription must have been create with helicsCreateValueFederate or helicsCreateCombinationFederate\nkey: the identifier matching a Publication to get a Subscription for\nunits: a string listing the units of the Subscription maybe NULL\n\nReturns\n\nthe Subscription\n\n\n\n\n\n","category":"function"},{"location":"api/#HELICS.helicsFederateRegisterTargetedEndpoint-Tuple{HELICS.Federate, String, String}","page":"API","title":"HELICS.helicsFederateRegisterTargetedEndpoint","text":"helicsFederateRegisterTargetedEndpoint(fed::HELICS.Federate, name::String, type::String) -> HELICS.Endpoint\n\n\nCreate a targeted endpoint. Targeted endpoints have specific destinations predefined and do not allow sending messages to other endpoints\n\nThe endpoint becomes part of the federate and is destroyed when the federate is freed so there are no separate free functions for endpoints.\n\nArguments\n\nfed: the Federate in which to create an Endpoint must have been create with helicsCreateMessageFederate or helicsCreateCombinationFederate\nname: the identifier for the Endpoint. This will be prepended with the federate name for the global identifier.\ntype: a string describing the expected type of the Publication may be NULL\n\nReturns\n\nEndpoint\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateRegisterTranslator-Tuple{HELICS.Federate, Int64, String}","page":"API","title":"HELICS.helicsFederateRegisterTranslator","text":"helicsFederateRegisterTranslator(fed::HELICS.Federate, type::Int64, name::String)\n\n\nCreate a Translator on the specified federate.\n\nTranslators can be created through a federate or a core. Linking through a federate allows a few extra features of name matching to function on the federate interface but otherwise have equivalent behavior.\n\nArguments\n\nfed: the Federate to register through.\ntype: The type of translator to create /ref HelicsTranslatorTypes\nname: The name of the translator, it can be null\n\nReturns\n\nA Translator\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateRegisterTypeInput","page":"API","title":"HELICS.helicsFederateRegisterTypeInput","text":"helicsFederateRegisterTypeInput(fed::HELICS.Federate, key::String, kind::String) -> HELICS.Input\nhelicsFederateRegisterTypeInput(fed::HELICS.Federate, key::String, kind::String, units::String) -> HELICS.Input\n\n\nRegister an Input with a defined type\n\nThe Input becomes part of the Federate and is destroyed when the Federate is freed so there are no separate free functions for subscriptions, inputs and publications\n\nArguments\n\nfed: the Federate in which to create an Input\nkey: the identifier for the Input\ntype: a string describing the expected type of the Input\nunits: a string listing the units of the Input maybe NULL\n\nReturns\n\nthe Publication\n\n\n\n\n\n","category":"function"},{"location":"api/#HELICS.helicsFederateRegisterTypePublication","page":"API","title":"HELICS.helicsFederateRegisterTypePublication","text":"helicsFederateRegisterTypePublication(fed::HELICS.Federate, key::String, kind::String) -> HELICS.Publication\nhelicsFederateRegisterTypePublication(fed::HELICS.Federate, key::String, kind::String, units::String) -> HELICS.Publication\n\n\nRegister a Publication with a defined type\n\nThe Publication becomes part of the Federate and is destroyed when the Federate is freed so there are no separate free functions for subscriptions and publications\n\nArguments\n\nfed: the Federate in which to create a Publication\nkey: the identifier for the Publication\ntype: a string labeling the type of the Publication\nunits: a string listing the units of the Subscription maybe NULL\n\nReturns\n\nthe Publication\n\n\n\n\n\n","category":"function"},{"location":"api/#HELICS.helicsFederateRequestNextStep-Tuple{HELICS.Federate}","page":"API","title":"HELICS.helicsFederateRequestNextStep","text":"helicsFederateRequestNextStep(fed::HELICS.Federate) -> Float64\n\n\nRequest the next time step for federate execution\n\nfeds should have setup the period or minDelta for this to work well but it will request the next time step which is the current time plus the minimum time step.\n\nArguments\n\nfed: the Federate to make the request of\n\nReturns\n\nthe time granted to the Federate\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateRequestTime-Tuple{HELICS.Federate, Union{Float64, Int64}}","page":"API","title":"HELICS.helicsFederateRequestTime","text":"helicsFederateRequestTime(fed::HELICS.Federate, requestTime::Union{Float64, Int64}) -> Float64\n\n\nRequest the next time for federate execution\n\nArguments\n\nfed: the Federate to make the request of\nrequestTime: the next requested time\n\nReturns\n\nthe time granted to the Federate invalid\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateRequestTimeAdvance-Tuple{HELICS.Federate, Union{Float64, Int64}}","page":"API","title":"HELICS.helicsFederateRequestTimeAdvance","text":"helicsFederateRequestTimeAdvance(fed::HELICS.Federate, timeDelta::Union{Float64, Int64}) -> Float64\n\n\nRequest the next time for federate execution\n\nArguments\n\nfed: The Federate to make the request of\ntimeDelta: The requested amount of time to advance\n\nReturns\n\nthe time granted to the Federate, will return maximum time if the simulation has terminated invalid\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateRequestTimeAsync-Tuple{HELICS.Federate, Union{Float64, Int64}}","page":"API","title":"HELICS.helicsFederateRequestTimeAsync","text":"helicsFederateRequestTimeAsync(fed::HELICS.Federate, requestTime::Union{Float64, Int64})\n\n\nRequest the next time for federate execution in an asynchronous call Call helicsFederateRequestTimeComplete to finish the call\n\nArguments\n\nfed: the Federate to make the request of\nrequestTime: the next requested time\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateRequestTimeComplete-Tuple{HELICS.Federate}","page":"API","title":"HELICS.helicsFederateRequestTimeComplete","text":"helicsFederateRequestTimeComplete(fed::HELICS.Federate) -> Float64\n\n\nComplete an asynchronous requestTime call\n\nArguments\n\nfed: the Federate to make the request of\n\nReturns\n\nthe time granted to the Federate\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateRequestTimeIterative-Tuple{HELICS.Federate, Union{Float64, Int64}, Union{Int64, HELICS.Lib.HelicsIterationRequest}}","page":"API","title":"HELICS.helicsFederateRequestTimeIterative","text":"helicsFederateRequestTimeIterative(fed::HELICS.Federate, requestTime::Union{Float64, Int64}, iterate::Union{Int64, HELICS.Lib.HelicsIterationRequest}) -> Tuple{Float64, HELICS.Lib.HelicsIterationResult}\n\n\nRequest an iterative time\n\nthis call allows for finer grain control of the iterative process then helicsFederateRequestTime it takes a time and iteration request and return a time and iteration status.\n\nArguments\n\nfed: the Federate to make the request of\nrequestTime: the next desired time\niterate: the requested iteration mode\n\nReturns\n\nthe granted time\nthe iteration specification of the result\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateRequestTimeIterativeAsync-Tuple{HELICS.Federate, Union{Float64, Int64}, Union{Int64, HELICS.Lib.HelicsIterationRequest}}","page":"API","title":"HELICS.helicsFederateRequestTimeIterativeAsync","text":"helicsFederateRequestTimeIterativeAsync(fed::HELICS.Federate, requestTime::Union{Float64, Int64}, iterate::Union{Int64, HELICS.Lib.HelicsIterationRequest})\n\n\nRequest an iterative time through an asynchronous call\n\nthis call allows for finer grain control of the iterative process then helicsFederateRequestTime it takes a time an iteration request and returns a time and iteration status call helicsFederateRequestTimeIterativeComplete to finish the process.\n\nArguments\n\nfed: the Federate to make the request of\nrequestTime: the next desired time\niterate: the requested iteration mode\n\nReturns\n\na void object with a return code of the result\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateRequestTimeIterativeComplete-Tuple{HELICS.Federate}","page":"API","title":"HELICS.helicsFederateRequestTimeIterativeComplete","text":"helicsFederateRequestTimeIterativeComplete(fed::HELICS.Federate) -> Tuple{Float64, HELICS.Lib.HelicsIterationResult}\n\n\nComplete an iterative time request asynchronous call\n\nArguments\n\nfed: the Federate to make the request of\n\nReturns\n\nthe granted time\noutIterate the iteration specification of the result\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateSendCommand-Tuple{HELICS.Federate, String, String}","page":"API","title":"HELICS.helicsFederateSendCommand","text":"helicsFederateSendCommand(fed::HELICS.Federate, target::String, command::String)\n\n\nSend a command to another helics object through a federate.\n\nArguments\n\nfed: The Federate to set the command through\ntarget: The name of the object to send the command to\ncommand: the command to send\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateSetFlagOption-Tuple{HELICS.Federate, Union{Int64, HELICS.Lib.HelicsFederateFlags, HELICS.Lib.HelicsHandleOptions}, Bool}","page":"API","title":"HELICS.helicsFederateSetFlagOption","text":"helicsFederateSetFlagOption(fed::HELICS.Federate, flag::Union{Int64, HELICS.Lib.HelicsFederateFlags, HELICS.Lib.HelicsHandleOptions}, flagValue::Bool)\n\n\nSet a flag for the Federate\n\nArguments\n\nfed: the Federate to alter a flag for\nflag: the flag to change\nflagValue: the new value of the flag 0 for false !=0 for true\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateSetGlobal-Tuple{HELICS.Federate, String, String}","page":"API","title":"HELICS.helicsFederateSetGlobal","text":"helicsFederateSetGlobal(fed::HELICS.Federate, valueName::String, value::String)\n\n\nSet a federation global value through a Federate\n\nthis overwrites any previous value for this name\n\nArguments\n\nfed: the Federate to set the global through\nvalueName: the name of the global to set\nvalue: the value of the global\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateSetIntegerProperty-Tuple{HELICS.Federate, Union{Int64, HELICS.Lib.HelicsProperties}, Int64}","page":"API","title":"HELICS.helicsFederateSetIntegerProperty","text":"helicsFederateSetIntegerProperty(fed::HELICS.Federate, intProperty::Union{Int64, HELICS.Lib.HelicsProperties}, propertyVal::Int64)\n\n\nSet an integer based property of a Federate\n\nArguments\n\nfed: the Federate to change the property for\nintProperty: the property to set\npropertyVal: the value of the property\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateSetLogFile-Tuple{HELICS.Federate, String}","page":"API","title":"HELICS.helicsFederateSetLogFile","text":"helicsFederateSetLogFile(fed::HELICS.Federate, logFile::String)\n\n\nSet the logging file for a Federate (actually on the core associated with a federate)\n\nArguments\n\nfed: the Federate to set the log file for\nlogFile: the name of the log file\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateSetLoggingCallback-Tuple{HELICS.Federate, Ptr{Nothing}, Any}","page":"API","title":"HELICS.helicsFederateSetLoggingCallback","text":"helicsFederateSetLoggingCallback(fed::HELICS.Federate, logger::Ptr{Nothing}, userdata)\n\n\nSet the logging callback for a Federate\n\nAdd a logging callback function for the C The logging callback will be called when a message flows into a Federate from the core or from a federate\n\nArguments\n\nfed: the Federate in which to create a Subscription must have been create with helicsCreateValueFederate or helicsCreateCombinationFederate\nlogger: a callback with signature void(int, const char *, const char *, void *); the function arguments are loglevel, an identifier string, and a message string, and a pointer to user data\nuserdata: a point to user data that is passed to the function when executing\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateSetQueryCallback-Tuple{HELICS.Federate, Ptr{Nothing}, Ptr{Nothing}}","page":"API","title":"HELICS.helicsFederateSetQueryCallback","text":"helicsFederateSetQueryCallback(fed::HELICS.Federate, queryAnswer::Ptr{Nothing}, userdata::Ptr{Nothing})\n\n\nSet callback for queries executed against a federate.\n\nThere are many queries that HELICS understands directly, but it is occasionally useful to have a federate be able to respond to specific queries with answers specific to a federate.\n\nArguments\n\nfed: the Federate to set a callback for.\nqueryAnswer: A callback with signature void(const char *query, int querySize, HelicsQueryBuffer buffer, void *userdata); The function arguments include the query string requesting an answer along with its size; the string is not guaranteed to\n\n\t\t\t be null terminated. HelicsQueryBuffer is the buffer intended to filled out by the userCallback. The buffer can be empty if the query is not\n\t\t\t recognized and HELICS will generate the appropriate response. The buffer is used to ensure memory ownership separation between user code\n\t\t\t and HELICS code.\n\t\t\t The HelicsQueryBufferFill method can be used to load a string into the buffer.\n\nuserdata: a point to user data that is passed to the function when executing\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateSetSeparator-Tuple{HELICS.Federate, Char}","page":"API","title":"HELICS.helicsFederateSetSeparator","text":"helicsFederateSetSeparator(fed::HELICS.Federate, separator::Char)\n\n\nSet the separator character in a Federate\n\nThe separator character is the separation character for local publications/endpoints in creating their global name. for example if the separator character is '/' then a local endpoint would have a globally reachable name of fedName/localName.\n\nArguments\n\nfed: the Federate object to alter\nseparator: the character to use as a separator\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateSetStateChangeCallback-Tuple{HELICS.Federate, Ptr{Nothing}, Ptr{Nothing}}","page":"API","title":"HELICS.helicsFederateSetStateChangeCallback","text":"helicsFederateSetStateChangeCallback(fed::HELICS.Federate, stateChange::Ptr{Nothing}, userdata::Ptr{Nothing})\n\n\nSet callback for the federate mode change.\n\nThis callback will be executed every time the operating mode of the federate changes.\n\nArguments\n\nfed: the Federate to set a callback for.\nstateChange: A callback with signature void(HelicsFederateState newState, HelicsFederateState oldState, void *userdata); The function arguments are the new state, the old state, and pointer to the userdata.\nuserdata: a point to user data that is passed to the function when executing\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateSetTag-Tuple{HELICS.Federate, String, String}","page":"API","title":"HELICS.helicsFederateSetTag","text":"helicsFederateSetTag(fed::HELICS.Federate, tagName::String, value::String)\n\n\nSet a federate tag value. This overwrites any previous value for this tag.\n\nArguments\n\nfed: the Federate to set the tag for\ntagName: the name of the tag to set\nvalue: the value of the tag\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateSetTimeProperty-Tuple{HELICS.Federate, Union{Int64, HELICS.Lib.HelicsProperties}, Union{Float64, Int64}}","page":"API","title":"HELICS.helicsFederateSetTimeProperty","text":"helicsFederateSetTimeProperty(fed::HELICS.Federate, timeProperty::Union{Int64, HELICS.Lib.HelicsProperties}, time::Union{Float64, Int64})\n\n\nSet a time based property for a Federate\n\nArguments\n\nfed: the Federate set the property for\ntimeProperty: a integer code for a time property\ntime: the requested value of the property\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateSetTimeRequestEntryCallback-Tuple{HELICS.Federate, Ptr{Nothing}, Ptr{Nothing}}","page":"API","title":"HELICS.helicsFederateSetTimeRequestEntryCallback","text":"helicsFederateSetTimeRequestEntryCallback(fed::HELICS.Federate, requestTime::Ptr{Nothing}, userdata::Ptr{Nothing})\n\n\nSet callback for the time request.\n\nThis callback will be executed when a valid time request is made. It is intended for the possibility of embedded data grabbers in a callback to simplify user code.\n\nArguments\n\nfed: the Federate to set a callback for.\nrequestTime: A callback with signature void(HelicsTime currentTime, HelicsTime requestTime, bool iterating, void *userdata); The function arguments are the current time value, the requested time value, a bool indicating that the time is\n\n\t\t\t iterating, and pointer to the userdata.\n\nuserdata: a point to user data that is passed to the function when executing\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateSetTimeRequestReturnCallback-Tuple{HELICS.Federate, Ptr{Nothing}, Ptr{Nothing}}","page":"API","title":"HELICS.helicsFederateSetTimeRequestReturnCallback","text":"helicsFederateSetTimeRequestReturnCallback(fed::HELICS.Federate, requestTimeReturn::Ptr{Nothing}, userdata::Ptr{Nothing})\n\n\nSet callback for the time request return.\n\nThis callback will be executed after all other callbacks for a time request return. This callback will be the last thing executed before returning control to the user program. The difference between this and the TimeUpdate callback is the order of execution. The timeUpdate callback is executed prior to individual interface callbacks, this callback is executed after all others.\n\nArguments\n\nfed: the Federate to set a callback for.\nrequestTimeReturn: A callback with signature void(HelicsTime newTime, bool iterating, void *userdata);\n\n\t\t\t\t The function arguments are the new time value, a bool indicating that the time is iterating, and pointer to the userdata.\n\nuserdata: a point to user data that is passed to the function when executing\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateSetTimeUpdateCallback-Tuple{HELICS.Federate, Ptr{Nothing}, Ptr{Nothing}}","page":"API","title":"HELICS.helicsFederateSetTimeUpdateCallback","text":"helicsFederateSetTimeUpdateCallback(fed::HELICS.Federate, timeUpdate::Ptr{Nothing}, userdata::Ptr{Nothing})\n\n\nSet callback for the time update.\n\nThis callback will be executed every time the simulation time is updated starting on entry to executing mode.\n\nArguments\n\nfed: the Federate to set a callback for.\ntimeUpdate: A callback with signature void(HelicsTime newTime, bool iterating, void *userdata); The function arguments are the new time value, a bool indicating that the time is iterating, and pointer to the userdata.\nuserdata: a point to user data that is passed to the function when executing\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateUnProtect-Tuple{String}","page":"API","title":"HELICS.helicsFederateUnProtect","text":"helicsFederateUnProtect(fedName::String)\n\n\nremove the protection of an existing federate\n\nthis function allows a federate to be retrieved on demand, it must be explicitly close later otherwise it will be destroyed when the library is closed\n\nArguments\n\nfedName: The name of an existing HelicsFederate that should not be protected.\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateWaitCommand-Tuple{HELICS.Federate}","page":"API","title":"HELICS.helicsFederateWaitCommand","text":"helicsFederateWaitCommand(fed::HELICS.Federate) -> String\n\n\nGet a command sent to the federate. Blocks until a command is received.\n\nArguments\n\nfed: The Federate to get the command for\n\nReturns\n\nA string with the command.\n\n\n\n\n\n","category":"method"},{"location":"api/#FederateInfo","page":"API","title":"FederateInfo","text":"","category":"section"},{"location":"api/","page":"API","title":"API","text":"Modules = [HELICS]\nFilter = t -> typeof(t) <: Function && startswith(string(t), \"helicsFederateInfo\")","category":"page"},{"location":"api/#HELICS.helicsFederateInfoClone-Tuple{HELICS.FederateInfo}","page":"API","title":"HELICS.helicsFederateInfoClone","text":"helicsFederateInfoClone(fi::HELICS.FederateInfo) -> HELICS.FederateInfo\n\n\nCreate a FederateInfo object from an existing one and clone the information\n\nArguments\n\nfi: a FederateInfo object to duplicate\n\nReturns\n\na FederateInfo object which is a reference to the created object\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateInfoFree-Tuple{HELICS.FederateInfo}","page":"API","title":"HELICS.helicsFederateInfoFree","text":"helicsFederateInfoFree(fi::HELICS.FederateInfo)\n\n\nDelete the memory associated with a FederateInfo object\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateInfoLoadFromArgs-Tuple{HELICS.FederateInfo, Vector{<:AbstractString}}","page":"API","title":"HELICS.helicsFederateInfoLoadFromArgs","text":"helicsFederateInfoLoadFromArgs(fi::HELICS.FederateInfo, argv::Vector{<:AbstractString})\n\n\nLoad a FederateInfo from command line arguments\n\nArguments\n\nfi: a FederateInfo object\nargc: the number of command line arguments\nargv: an array of strings from the command line\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateInfoLoadFromString-Tuple{HELICS.FederateInfo, String}","page":"API","title":"HELICS.helicsFederateInfoLoadFromString","text":"helicsFederateInfoLoadFromString(fi::HELICS.FederateInfo, args::String)\n\n\nLoad a FederateInfo from command line arguments contained in a string.\n\nArguments\n\nfi: a FederateInfo object\nargs: Command line arguments specified in a string\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateInfoSetBroker-Tuple{HELICS.FederateInfo, String}","page":"API","title":"HELICS.helicsFederateInfoSetBroker","text":"helicsFederateInfoSetBroker(fi::HELICS.FederateInfo, broker::String)\n\n\nSet the name or connection information for a broker\n\nthis is only used if the core is automatically created, the Broker information will be transferred to the core for connection\n\nArguments\n\nfi: the FederateInfo object to alter\nbroker: a string which defined the connection information for a broker either a name or an address\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateInfoSetBrokerInitString-Tuple{HELICS.FederateInfo, String}","page":"API","title":"HELICS.helicsFederateInfoSetBrokerInitString","text":"helicsFederateInfoSetBrokerInitString(fi::HELICS.FederateInfo, brokerInit::String)\n\n\nSet the initialization string that a core will pass to a generated broker usually in the form of command line arguments\n\nArguments\n\nfi: The Federate info object to alter\nbrokerInit: A string with command line arguments for a generated broker\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateInfoSetBrokerKey-Tuple{HELICS.FederateInfo, String}","page":"API","title":"HELICS.helicsFederateInfoSetBrokerKey","text":"helicsFederateInfoSetBrokerKey(fi::HELICS.FederateInfo, brokerKey::String)\n\n\nSet the key for a broker connection\n\nthis is only used if the core is automatically created, the Broker information will be transferred to the core for connection\n\nArguments\n\nfi: The Federate info object to alter\nbrokerkey: A string containing a key for the Broker to connect\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateInfoSetBrokerPort-Tuple{HELICS.FederateInfo, Int64}","page":"API","title":"HELICS.helicsFederateInfoSetBrokerPort","text":"helicsFederateInfoSetBrokerPort(fi::HELICS.FederateInfo, brokerPort::Int64)\n\n\nSet the port to use for the Broker\n\nthis is only used if the core is automatically created, the Broker information will be transferred to the core for connection this will only be useful for network broker connections\n\nArguments\n\nfi: the FederateInfo object to alter\nbrokerPort: the integer port number to use for connection with a broker\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateInfoSetCoreInitString-Tuple{HELICS.FederateInfo, String}","page":"API","title":"HELICS.helicsFederateInfoSetCoreInitString","text":"helicsFederateInfoSetCoreInitString(fi::HELICS.FederateInfo, coreInit::String)\n\n\nSet the initialization string for the core usually in the form of command line arguments\n\nArguments\n\nfi: the FederateInfo object to alter\ncoreInit: a string with the core initialization strings\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateInfoSetCoreName-Tuple{HELICS.FederateInfo, String}","page":"API","title":"HELICS.helicsFederateInfoSetCoreName","text":"helicsFederateInfoSetCoreName(fi::HELICS.FederateInfo, corename::String)\n\n\nSet the name of the core to link to for a Federate\n\nArguments\n\nfi: the FederateInfo object to alter\ncorename: the identifier for a core to link to\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateInfoSetCoreType-Tuple{HELICS.FederateInfo, Union{Int64, HELICS.Lib.HelicsCoreTypes}}","page":"API","title":"HELICS.helicsFederateInfoSetCoreType","text":"helicsFederateInfoSetCoreType(fi::HELICS.FederateInfo, coretype::Union{Int64, HELICS.Lib.HelicsCoreTypes})\n\n\nSet the core type by integer code\n\nvalid values available by definitions in api-data.h\n\nArguments\n\nfi: the FederateInfo object to alter\ncoretype: an numerical code for a core type see /ref HelicsCoreTypes\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateInfoSetCoreTypeFromString-Tuple{HELICS.FederateInfo, String}","page":"API","title":"HELICS.helicsFederateInfoSetCoreTypeFromString","text":"helicsFederateInfoSetCoreTypeFromString(fi::HELICS.FederateInfo, coretype::String)\n\n\nSet the core type from a string\n\nArguments\n\nfi: the FederateInfo object to alter\ncoretype: a string naming a core type\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateInfoSetFlagOption-Tuple{HELICS.FederateInfo, Union{Int64, HELICS.Lib.HelicsFederateFlags}, Bool}","page":"API","title":"HELICS.helicsFederateInfoSetFlagOption","text":"helicsFederateInfoSetFlagOption(fi::HELICS.FederateInfo, flag::Union{Int64, HELICS.Lib.HelicsFederateFlags}, value::Bool)\n\n\nSet a flag in the info structure\n\nvalid flags are available HelicsFederateFlags\n\nArguments\n\nfi: the FederateInfo object to alter\nflag: a numerical index for a flag\nvalue: the desired value of the flag true or false\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateInfoSetIntegerProperty-Tuple{HELICS.FederateInfo, Union{Int64, HELICS.Lib.HelicsProperties}, Int64}","page":"API","title":"HELICS.helicsFederateInfoSetIntegerProperty","text":"helicsFederateInfoSetIntegerProperty(fi::HELICS.FederateInfo, intProperty::Union{Int64, HELICS.Lib.HelicsProperties}, propertyValue::Int64)\n\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateInfoSetLocalPort-Tuple{HELICS.FederateInfo, String}","page":"API","title":"HELICS.helicsFederateInfoSetLocalPort","text":"helicsFederateInfoSetLocalPort(fi::HELICS.FederateInfo, localPort::String)\n\n\nSet the local port to use\n\nthis is only used if the core is automatically created, the port information will be transferred to the core for connection\n\nArguments\n\nfi: the FederateInfo object to alter\nlocalPort: a string with the port information to use as the local server port can be a number or \"auto\" or \"os_local\"\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateInfoSetSeparator-Tuple{HELICS.FederateInfo, Char}","page":"API","title":"HELICS.helicsFederateInfoSetSeparator","text":"helicsFederateInfoSetSeparator(fi::HELICS.FederateInfo, separator::Char)\n\n\nSet the separator character in the info structure\n\nthe separator character is the separation character for local publications/endpoints in creating their global name. for example if the separator character is '/' then a local endpoint would have a globally reachable name of fedName/localName\n\nArguments\n\nfi: the FederateInfo object to alter\nseparator: the character to use as a separator\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFederateInfoSetTimeProperty-Tuple{HELICS.FederateInfo, Union{Int64, HELICS.Lib.HelicsProperties}, Union{Float64, Int64}}","page":"API","title":"HELICS.helicsFederateInfoSetTimeProperty","text":"helicsFederateInfoSetTimeProperty(fi::HELICS.FederateInfo, timeProperty::Union{Int64, HELICS.Lib.HelicsProperties}, propertyValue::Union{Float64, Int64})\n\n\n\n\n\n\n","category":"method"},{"location":"api/#Filter","page":"API","title":"Filter","text":"","category":"section"},{"location":"api/","page":"API","title":"API","text":"Modules = [HELICS]\nFilter = t -> typeof(t) <: Function && startswith(string(t), \"helicsFilter\")","category":"page"},{"location":"api/#HELICS.helicsFilterAddDeliveryEndpoint-Tuple{HELICS.Filter, String}","page":"API","title":"HELICS.helicsFilterAddDeliveryEndpoint","text":"helicsFilterAddDeliveryEndpoint(filt::HELICS.Filter, deliveryEndpoint::String)\n\n\nAdd a delivery endpoint to a cloning filter\n\nAll cloned messages are sent to the delivery address(es)\n\nArguments\n\nfilt: the given Filter\ndeliveryEndpoint: the name of the Endpoint to deliver messages to\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFilterAddDestinationTarget-Tuple{HELICS.Filter, String}","page":"API","title":"HELICS.helicsFilterAddDestinationTarget","text":"helicsFilterAddDestinationTarget(filt::HELICS.Filter, dest::String)\n\n\nAdd a destination target to a Filter\n\nAll messages going to a destination are copied to the delivery address(es)\n\nArguments\n\nfilt: the given Filter to add a destination target\ndest: the name of the Endpoint to add as a destination target\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFilterAddSourceTarget-Tuple{HELICS.Filter, String}","page":"API","title":"HELICS.helicsFilterAddSourceTarget","text":"helicsFilterAddSourceTarget(filt::HELICS.Filter, source::String)\n\n\nAdd a source target to a Filter\n\nAll messages coming from a source are copied to the delivery address(es)\n\nfilt: the given Filter\nsource: the name of the Endpoint to add as a source target\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFilterGetInfo-Tuple{HELICS.Filter}","page":"API","title":"HELICS.helicsFilterGetInfo","text":"helicsFilterGetInfo(filt::HELICS.Filter) -> String\n\n\nGet the data in the info field of an filter\n\nArguments\n\nfilt: the given Filter\n\nReturns\n\na string with the info field string\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFilterGetName-Tuple{HELICS.Filter}","page":"API","title":"HELICS.helicsFilterGetName","text":"helicsFilterGetName(filt::HELICS.Filter) -> String\n\n\nGet the name of the Filter and store in the given string\n\nArguments\n\nfilt: the given Filter\n\nReturns\n\na string with the name of the Filter\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFilterGetOption-Tuple{HELICS.Filter, Union{Int64, HELICS.Lib.HelicsHandleOptions}}","page":"API","title":"HELICS.helicsFilterGetOption","text":"helicsFilterGetOption(filt::HELICS.Filter, option::Union{Int64, HELICS.Lib.HelicsHandleOptions}) -> Bool\n\n\nGet a handle option for the Filter\n\nArguments\n\nfilt: the given Filter to query\noption: the option to query HelicsHandleOptions\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFilterGetTag-Tuple{HELICS.Filter, String}","page":"API","title":"HELICS.helicsFilterGetTag","text":"helicsFilterGetTag(filt::HELICS.Filter, tagName::String) -> String\n\n\nGet the data in a specified tag of a filter.\n\nArguments\n\nfilt: the given Filter\ntagName: The name of the tag to query.\n\nReturns\n\nA string withthe tag data\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFilterIsValid-Tuple{HELICS.Filter}","page":"API","title":"HELICS.helicsFilterIsValid","text":"helicsFilterIsValid(filt::HELICS.Filter) -> Bool\n\n\nCheck if a Filter is valid.\n\nArguments\n\nfilt: The Filter object to check.\n\nReturns\n\n@return true if the Filter object represents a valid filter.\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFilterRemoveDeliveryEndpoint-Tuple{HELICS.Filter, String}","page":"API","title":"HELICS.helicsFilterRemoveDeliveryEndpoint","text":"helicsFilterRemoveDeliveryEndpoint(filt::HELICS.Filter, deliveryEndpoint::String)\n\n\nRemove a delivery destination from a cloning filter\n\nArguments\n\nfilt: the given Filter (must be a cloning filter)\ndeliveryEndpoint: a string with the deliverEndpoint to remove\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFilterRemoveTarget-Tuple{HELICS.Filter, String}","page":"API","title":"HELICS.helicsFilterRemoveTarget","text":"helicsFilterRemoveTarget(filt::HELICS.Filter, target::String)\n\n\nRemove a destination target from a Filter\n\nfilt: the given Filter\ntarget: the named endpoint to remove as a target\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFilterSet-Tuple{HELICS.Filter, String, Float64}","page":"API","title":"HELICS.helicsFilterSet","text":"helicsFilterSet(filt::HELICS.Filter, prop::String, val::Float64)\n\n\nSet a property on a Filter\n\nArguments\n\nfilt: the Filter to modify\nprop: a string containing the property to set\nval: a numerical value of the property\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFilterSetCustomCallback-Tuple{HELICS.Filter, Ptr{Nothing}, Ptr{Nothing}}","page":"API","title":"HELICS.helicsFilterSetCustomCallback","text":"helicsFilterSetCustomCallback(filter::HELICS.Filter, filtCall::Ptr{Nothing}, userdata::Ptr{Nothing})\n\n\nSet a general callback for a custom filter.\n\nAdd a custom filter callback for creating a custom filter operation in the C shared library.\n\nArguments\n\nfilter: the Filter to set a callback for.\nfiltCall: A callback with signature Message(Message, void *); The function arguments are the message to filter and a pointer to user data. The filter should return a new message.\nuserdata: a point to user data that is passed to the function when executing\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFilterSetInfo-Tuple{HELICS.Filter, String}","page":"API","title":"HELICS.helicsFilterSetInfo","text":"helicsFilterSetInfo(filt::HELICS.Filter, info::String)\n\n\nSet the data in the info field for an filter\n\nArguments\n\nfilt: the given Filter\ninfo: the string to set\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFilterSetOption-Tuple{HELICS.Filter, Union{Int64, HELICS.Lib.HelicsHandleOptions}, Bool}","page":"API","title":"HELICS.helicsFilterSetOption","text":"helicsFilterSetOption(filt::HELICS.Filter, option::Union{Int64, HELICS.Lib.HelicsHandleOptions}, value::Bool)\n\n\nSet the data in the info field for an filter\n\nArguments\n\nfilt: the given Filter\noption: the option to set HelicsHandleOptions\nvalue: the value of the option (helicstrue or helicsfalse)\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFilterSetString-Tuple{HELICS.Filter, String, String}","page":"API","title":"HELICS.helicsFilterSetString","text":"helicsFilterSetString(filt::HELICS.Filter, prop::String, val::String)\n\n\nSet a string property on a Filter\n\nArguments\n\nfilt: the Filter to modify\nprop: a string containing the property to set\nval: a string containing the new value\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsFilterSetTag-Tuple{HELICS.Filter, String, String}","page":"API","title":"HELICS.helicsFilterSetTag","text":"helicsFilterSetTag(filt::HELICS.Filter, tagName::String, tagValue::String)\n\n\nGet the data in a specified tag of a filter.\n\nArguments\n\nfilt: the given Filter\ntagName: The name of the tag to query.\ntagValue: A string with the tag data\n\n\n\n\n\n","category":"method"},{"location":"api/#Input","page":"API","title":"Input","text":"","category":"section"},{"location":"api/","page":"API","title":"API","text":"Modules = [HELICS]\nFilter = t -> typeof(t) <: Function && startswith(string(t), \"helicsInput\")","category":"page"},{"location":"api/#HELICS.helicsInputAddTarget-Tuple{HELICS.Input, String}","page":"API","title":"HELICS.helicsInputAddTarget","text":"helicsInputAddTarget(ipt::HELICS.Input, target::String)\n\n\nAdd a Publication to the list of data that an Input subscribes to\n\nArguments\n\nipt: the named input to modify\ntarget: the name of a Publication that an Input should subscribe to\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsInputClearUpdate-Tuple{HELICS.Input}","page":"API","title":"HELICS.helicsInputClearUpdate","text":"helicsInputClearUpdate(ipt::HELICS.Input)\n\n\nClear the updated flag from an Input\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsInputGetBoolean-Tuple{HELICS.Input}","page":"API","title":"HELICS.helicsInputGetBoolean","text":"helicsInputGetBoolean(ipt::HELICS.Input) -> Bool\n\n\nGet a boolean value from a Subscription\n\nArguments\n\nipt: the Input to get the data for\n\nReturns\n\na boolean value of current input value\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsInputGetByteCount-Tuple{HELICS.Input}","page":"API","title":"HELICS.helicsInputGetByteCount","text":"helicsInputGetByteCount(ipt::HELICS.Input) -> Int64\n\n\nGet the size of the raw value for subscription\n\nReturns\n\nthe size of the raw data/string in bytes\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsInputGetBytes-Tuple{HELICS.Input}","page":"API","title":"HELICS.helicsInputGetBytes","text":"helicsInputGetBytes(ipt::HELICS.Input) -> String\n\n\nGet the raw data for the latest value of a Subscription\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsInputGetChar-Tuple{HELICS.Input}","page":"API","title":"HELICS.helicsInputGetChar","text":"helicsInputGetChar(ipt::HELICS.Input) -> Char\n\n\nGet a single character value from an Input\n\nArguments\n\nipt: the Input to get the data for\n\nReturns\n\nthe resulting character value\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsInputGetComplex-Tuple{HELICS.Input}","page":"API","title":"HELICS.helicsInputGetComplex","text":"helicsInputGetComplex(ipt::HELICS.Input) -> ComplexF64\n\n\nGet a pair of double forming a complex number from a Subscriptions\n\nArguments\n\nipt: the Input to get the data for\n\nReturns\n\nComplexF64\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsInputGetComplexObject-Tuple{HELICS.Input}","page":"API","title":"HELICS.helicsInputGetComplexObject","text":"helicsInputGetComplexObject(ipt::HELICS.Input) -> ComplexF64\n\n\nGet a complex object from an Input object\n\nArguments\n\nipt: the Input to get the data for\n\nReturns\n\nComplexF64\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsInputGetComplexVector-Tuple{HELICS.Input}","page":"API","title":"HELICS.helicsInputGetComplexVector","text":"helicsInputGetComplexVector(ipt::HELICS.Input) -> Vector{ComplexF64}\n\n\nGet a complex vector from a Subscription\n\nArguments\n\nipt: the Input to get the result for\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsInputGetDouble-Tuple{HELICS.Input}","page":"API","title":"HELICS.helicsInputGetDouble","text":"helicsInputGetDouble(ipt::HELICS.Input) -> Float64\n\n\nGet a double value from a Subscription\n\nArguments\n\nipt: the Input to get the data for\n\nReturns\n\nthe double value of the Input\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsInputGetExtractionUnits-Tuple{HELICS.Input}","page":"API","title":"HELICS.helicsInputGetExtractionUnits","text":"helicsInputGetExtractionUnits(ipt::HELICS.Input) -> String\n\n\nGet the units of an Input\n\nThe same as helicsInputGetUnits\n\nArguments\n\nipt: the Input to query\n\nReturns\n\na void enumeration, helics_ok if everything worked\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsInputGetInfo-Tuple{HELICS.Input}","page":"API","title":"HELICS.helicsInputGetInfo","text":"helicsInputGetInfo(inp::HELICS.Input) -> String\n\n\nGet the data in the info field of an Input\n\nArguments\n\ninp: the Input to query\n\nReturns\n\na string with the info field string\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsInputGetInjectionUnits-Tuple{HELICS.Input}","page":"API","title":"HELICS.helicsInputGetInjectionUnits","text":"helicsInputGetInjectionUnits(ipt::HELICS.Input) -> String\n\n\nGet the units of the Publication that an Input is linked to\n\nArguments\n\nipt: the Input to query\n\nReturns\n\na void enumeration, helics_ok if everything worked\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsInputGetInteger-Tuple{HELICS.Input}","page":"API","title":"HELICS.helicsInputGetInteger","text":"helicsInputGetInteger(ipt::HELICS.Input) -> Int64\n\n\nGet an integer value from a Subscription\n\nArguments\n\nipt: the Input to get the data for\n\nReturns\n\nan int64_t value with the current value of the Input\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsInputGetName-Tuple{HELICS.Input}","page":"API","title":"HELICS.helicsInputGetName","text":"helicsInputGetName(ipt::HELICS.Input) -> String\n\n\nGet the name of an Input\n\nArguments\n\nipt: the Input to query\n\nReturns\n\nA string of the input name\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsInputGetNamedPoint-Tuple{HELICS.Input}","page":"API","title":"HELICS.helicsInputGetNamedPoint","text":"helicsInputGetNamedPoint(ipt::HELICS.Input) -> Tuple{String, Float64}\n\n\nGet a named point from a Subscription\n\nArguments\n\nipt: the Input to get the result for\n\nReturns\n\noutputString storage for copying a null terminated string\nval the double value for the named point\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsInputGetOption-Tuple{HELICS.Input, Union{Int64, HELICS.Lib.HelicsHandleOptions}}","page":"API","title":"HELICS.helicsInputGetOption","text":"helicsInputGetOption(inp::HELICS.Input, option::Union{Int64, HELICS.Lib.HelicsHandleOptions}) -> Bool\n\n\nGet the data in the info field of an Input\n\nArguments\n\ninp: the Input to query\noption: integer representation of the option in question see HelicsHandleOptions\n\nReturns\n\na string with the info field string\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsInputGetPublicationDataType-Tuple{HELICS.Input}","page":"API","title":"HELICS.helicsInputGetPublicationDataType","text":"helicsInputGetPublicationDataType(ipt::HELICS.Input) -> Int64\n\n\nGet the type of the publisher to an Input is sending\n\nArguments\n\nipt: the Input to query\n\nReturns\n\nAn int containing the enumeration value of the publication type.\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsInputGetPublicationType-Tuple{HELICS.Input}","page":"API","title":"HELICS.helicsInputGetPublicationType","text":"helicsInputGetPublicationType(ipt::HELICS.Input) -> String\n\n\nGet the type of the publisher to an Input is sending\n\nArguments\n\nipt: the Input to query\n\nReturns\n\nA string with the type name\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsInputGetString-Tuple{HELICS.Input}","page":"API","title":"HELICS.helicsInputGetString","text":"helicsInputGetString(ipt::HELICS.Input) -> String\n\n\nGet a string value from a Subscription\n\nArguments\n\nipt: the Input to get the data for\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsInputGetStringSize-Tuple{HELICS.Input}","page":"API","title":"HELICS.helicsInputGetStringSize","text":"helicsInputGetStringSize(ipt::HELICS.Input) -> Int64\n\n\nGet the size of a value for subscription assuming return as a string\n\nReturns\n\nthe size of the string\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsInputGetTag-Tuple{HELICS.Input, String}","page":"API","title":"HELICS.helicsInputGetTag","text":"helicsInputGetTag(inp::HELICS.Input, tagName::String) -> String\n\n\nGet the data in the tag field of an Input\n\nArguments\n\ninp: the Input to query\ntagName: the name of the tage to the get the value for\n\nReturns\n\na string with the tag data\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsInputGetTarget-Tuple{HELICS.Input}","page":"API","title":"HELICS.helicsInputGetTarget","text":"helicsInputGetTarget(ipt::HELICS.Input) -> String\n\n\nGet the target of an Input\n\nArguments\n\nipt: the Input to query\n\nReturns\n\nA string of the input target\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsInputGetTime-Tuple{HELICS.Input}","page":"API","title":"HELICS.helicsInputGetTime","text":"helicsInputGetTime(ipt::HELICS.Input) -> Float64\n\n\nGet a double value from a Subscription\n\nArguments\n\nipt: the Input to get the data for\n\nReturns\n\nthe resulting double value\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsInputGetType-Tuple{HELICS.Input}","page":"API","title":"HELICS.helicsInputGetType","text":"helicsInputGetType(ipt::HELICS.Input) -> String\n\n\nGet the type of an Input\n\nArguments\n\nipt: the Input to query\n\nReturns\n\nA string with the type name\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsInputGetUnits-Tuple{HELICS.Input}","page":"API","title":"HELICS.helicsInputGetUnits","text":"helicsInputGetUnits(ipt::HELICS.Input) -> String\n\n\nGet the units of an Input\n\nArguments\n\nipt: the Input to query\n\nReturns\n\na void enumeration, helics_ok if everything worked\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsInputGetVector-Tuple{HELICS.Input}","page":"API","title":"HELICS.helicsInputGetVector","text":"helicsInputGetVector(ipt::HELICS.Input) -> Vector{Float64}\n\n\nGet a vector from a Subscription\n\nArguments\n\nipt: the Input to get the result for\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsInputGetVectorSize-Tuple{HELICS.Input}","page":"API","title":"HELICS.helicsInputGetVectorSize","text":"helicsInputGetVectorSize(ipt::HELICS.Input) -> Int64\n\n\nGet the size of a value for subscription assuming return as an array of doubles\n\nReturns\n\nthe number of double in a return vector\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsInputIsUpdated-Tuple{HELICS.Input}","page":"API","title":"HELICS.helicsInputIsUpdated","text":"helicsInputIsUpdated(ipt::HELICS.Input) -> Bool\n\n\nCheck if a particular subscription was updated\n\nArguments\n\nipt: the Input to query\n\nReturns\n\ntrue if it has been updated since the last value retrieval\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsInputIsValid-Tuple{Any}","page":"API","title":"HELICS.helicsInputIsValid","text":"helicsInputIsValid(ipt) -> Bool\n\n\nCheck if a Input is valid.\n\nArguments\n\nipt: The Input object to check.\n\nReturns\n\n@return true if the Input object represents a valid input.\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsInputLastUpdateTime-Tuple{HELICS.Input}","page":"API","title":"HELICS.helicsInputLastUpdateTime","text":"helicsInputLastUpdateTime(ipt::HELICS.Input) -> Float64\n\n\nGet the last time a Subscription was updated\n\nArguments\n\nipt: the Input to query\n\nReturns\n\nFloat64\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsInputSetDefaultBoolean-Tuple{HELICS.Input, Bool}","page":"API","title":"HELICS.helicsInputSetDefaultBoolean","text":"helicsInputSetDefaultBoolean(ipt::HELICS.Input, val::Bool)\n\n\nSet the default as a boolean\n\nArguments\n\nipt: the Input to set the default for\nval: the default boolean value\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsInputSetDefaultBytes-Tuple{HELICS.Input, String}","page":"API","title":"HELICS.helicsInputSetDefaultBytes","text":"helicsInputSetDefaultBytes(ipt::HELICS.Input, data::String)\n\n\nSet the default as a raw data array\n\nArguments\n\nipt: the Input to set the default for\ndata: a pointer to the raw data to use for the default\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsInputSetDefaultChar-Tuple{HELICS.Input, Char}","page":"API","title":"HELICS.helicsInputSetDefaultChar","text":"helicsInputSetDefaultChar(ipt::HELICS.Input, val::Char)\n\n\nSet the default as a double\n\nArguments\n\nipt: the Input to set the default for\nval: the default double value\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsInputSetDefaultComplex-Tuple{HELICS.Input, ComplexF64}","page":"API","title":"HELICS.helicsInputSetDefaultComplex","text":"helicsInputSetDefaultComplex(ipt::HELICS.Input, c::ComplexF64)\n\n\nSet the default as a complex number\n\nArguments\n\nipt: the Input to set the default for\nc: the default ComplexF64\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsInputSetDefaultComplexVector-Tuple{HELICS.Input, Vector{ComplexF64}}","page":"API","title":"HELICS.helicsInputSetDefaultComplexVector","text":"helicsInputSetDefaultComplexVector(ipt::HELICS.Input, vectorInput::Vector{ComplexF64})\n\n\nSet the default as a vector of complex doubles\n\nArguments\n\nipt: the Input to set the default for\nvectorInput: an array of complex double data\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsInputSetDefaultDouble-Tuple{HELICS.Input, Float64}","page":"API","title":"HELICS.helicsInputSetDefaultDouble","text":"helicsInputSetDefaultDouble(ipt::HELICS.Input, val::Float64)\n\n\nSet the default as a double\n\nArguments\n\nipt: the Input to set the default for\nval: the default double value\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsInputSetDefaultInteger-Tuple{HELICS.Input, Int64}","page":"API","title":"HELICS.helicsInputSetDefaultInteger","text":"helicsInputSetDefaultInteger(ipt::HELICS.Input, val::Int64)\n\n\nSet the default as an integer\n\nArguments\n\nipt: the Input to set the default for\nval: the default integer\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsInputSetDefaultNamedPoint-Tuple{HELICS.Input, String, Float64}","page":"API","title":"HELICS.helicsInputSetDefaultNamedPoint","text":"helicsInputSetDefaultNamedPoint(ipt::HELICS.Input, str::String, val::Float64)\n\n\nSet the default as a NamedPoint\n\nArguments\n\nipt: the Input to set the default for\nstr: a pointer to a string representing the name\nval: a double value for the value of the named point\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsInputSetDefaultString-Tuple{HELICS.Input, String}","page":"API","title":"HELICS.helicsInputSetDefaultString","text":"helicsInputSetDefaultString(ipt::HELICS.Input, str::String)\n\n\nSet the default as a string\n\nArguments\n\nipt: the Input to set the default for\nstr: a pointer to the default string\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsInputSetDefaultTime-Tuple{HELICS.Input, Union{Float64, Int64}}","page":"API","title":"HELICS.helicsInputSetDefaultTime","text":"helicsInputSetDefaultTime(ipt::HELICS.Input, val::Union{Float64, Int64})\n\n\nSet the default as a double\n\nArguments\n\nipt: the Input to set the default for\nval: the default double value\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsInputSetDefaultVector-Tuple{HELICS.Input, Vector{Float64}}","page":"API","title":"HELICS.helicsInputSetDefaultVector","text":"helicsInputSetDefaultVector(ipt::HELICS.Input, vectorInput::Vector{Float64})\n\n\nSet the default as a vector of doubles\n\nArguments\n\nipt: the Input to set the default for\nvectorInput: an array of double data\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsInputSetInfo-Tuple{HELICS.Input, String}","page":"API","title":"HELICS.helicsInputSetInfo","text":"helicsInputSetInfo(inp::HELICS.Input, info::String)\n\n\nSet the data in the info field for an Input\n\nArguments\n\ninp: the Input to query\ninfo: the string to set\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsInputSetMinimumChange-Tuple{HELICS.Input, Float64}","page":"API","title":"HELICS.helicsInputSetMinimumChange","text":"helicsInputSetMinimumChange(inp::HELICS.Input, tolerance::Float64)\n\n\nSet the minimum change detection tolerance\n\nArguments\n\ninp: the Input to modify\ntolerance: the tolerance level for registering an update, values changing less than this value will not show as being updated\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsInputSetOption-Tuple{HELICS.Input, Union{Int64, HELICS.Lib.HelicsHandleOptions}, Bool}","page":"API","title":"HELICS.helicsInputSetOption","text":"helicsInputSetOption(inp::HELICS.Input, option::Union{Int64, HELICS.Lib.HelicsHandleOptions}, value::Bool)\n\n\nSet the data in the info field for an Input\n\nArguments\n\ninp: the Input to query\noption: the option to set for the Input HelicsHandleOptions\nvalue: the value to set the option to\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsInputSetTag-Tuple{HELICS.Input, String, String}","page":"API","title":"HELICS.helicsInputSetTag","text":"helicsInputSetTag(inp::HELICS.Input, tagName::String, tagValue::String)\n\n\nSet the data in the tag field for an Input\n\nArguments\n\ninp: the Input to query\ntagName: the name of the tag to set\ntagValue: the string value to associate with a tag\n\n\n\n\n\n","category":"method"},{"location":"api/#Message","page":"API","title":"Message","text":"","category":"section"},{"location":"api/","page":"API","title":"API","text":"Modules = [HELICS]\nFilter = t -> typeof(t) <: Function && startswith(string(t), \"helicsMessage\")","category":"page"},{"location":"api/#HELICS.helicsMessageAppendData-Tuple{HELICS.Message, String}","page":"API","title":"HELICS.helicsMessageAppendData","text":"helicsMessageAppendData(message::HELICS.Message, data::String)\n\n\nAppend data to the payload\n\nArguments\n\nmessage: The message object in question\ndata: A string containing the message data to append\ninputDataLength: The length of the data to input\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsMessageClearFlags-Tuple{HELICS.Message}","page":"API","title":"HELICS.helicsMessageClearFlags","text":"helicsMessageClearFlags(message::HELICS.Message)\n\n\nClear the flags of a message\n\nArguments\n\nmessage: The message object in question\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsMessageCopy-Tuple{HELICS.Message, HELICS.Message}","page":"API","title":"HELICS.helicsMessageCopy","text":"helicsMessageCopy(srcMessage::HELICS.Message, dstMessage::HELICS.Message)\n\n\nClopy a message object.\n\nArguments\n\nsrcMessage: The message object to copy from\ndstMessage: The message object to copy to.\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsMessageGetByteCount-Tuple{HELICS.Message}","page":"API","title":"HELICS.helicsMessageGetByteCount","text":"helicsMessageGetByteCount(message::HELICS.Message) -> Int64\n\n\nGet the size of the data payload in bytes\n\nArguments\n\nmessage: The message object in question\n\nReturns\n\nthe size of the data payload\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsMessageGetBytes-Tuple{HELICS.Message}","page":"API","title":"HELICS.helicsMessageGetBytes","text":"helicsMessageGetBytes(message::HELICS.Message) -> String\n\n\nGet the raw data for a message object\n\nmessage: A message object to get the data for\ndata: The memory location of the data\nmaxMessagelen: The maximum size of information that data can hold\nactualSize: The actual length of data copied to data\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsMessageGetBytesPointer-Tuple{HELICS.Message}","page":"API","title":"HELICS.helicsMessageGetBytesPointer","text":"helicsMessageGetBytesPointer(message::HELICS.Message) -> Ptr{Nothing}\n\n\nGet a pointer to the raw data of a message\n\nArguments\n\nmessage: A message object to get the data for\n\nReturns\n\na pointer to the raw data in memory, the\n\npointer may be NULL if the message is not a valid message\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsMessageGetDestination-Tuple{HELICS.Message}","page":"API","title":"HELICS.helicsMessageGetDestination","text":"helicsMessageGetDestination(message::HELICS.Message) -> String\n\n\nGet the destination endpoint of a message\n\nArguments\n\nmessage: The message object in question\n\nReturns\n\na string with the destination endpoint\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsMessageGetFlagOption-Tuple{HELICS.Message, Int64}","page":"API","title":"HELICS.helicsMessageGetFlagOption","text":"helicsMessageGetFlagOption(message::HELICS.Message, flag::Int64) -> Bool\n\n\nCheck if a flag is set on a message.\n\nArguments\n\nmessage: The message object in question\nflag: The flag to check should be between [0,15]\n\nReturns\n\ntrue if set otherwise false\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsMessageGetMessageID-Tuple{HELICS.Message}","page":"API","title":"HELICS.helicsMessageGetMessageID","text":"helicsMessageGetMessageID(message::HELICS.Message) -> Int64\n\n\nGet the messageID of a message\n\nArguments\n\nmessage: The message object in question\n\nReturns\n\nthe messageID\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsMessageGetOriginalDestination-Tuple{HELICS.Message}","page":"API","title":"HELICS.helicsMessageGetOriginalDestination","text":"helicsMessageGetOriginalDestination(message::HELICS.Message) -> String\n\n\nGet the original destination endpoint of a message, the destination may have been modified by filters or other actions\n\nArguments\n\nmessage: The message object in question\n\nReturns\n\na string with the original destination of a message\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsMessageGetOriginalSource-Tuple{HELICS.Message}","page":"API","title":"HELICS.helicsMessageGetOriginalSource","text":"helicsMessageGetOriginalSource(message::HELICS.Message) -> String\n\n\nGet the original source endpoint of a message, the source may have modified by filters or other actions\n\nArguments\n\nmessage: The message object in question\n\nReturns\n\na string with the source of a message\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsMessageGetSource-Tuple{HELICS.Message}","page":"API","title":"HELICS.helicsMessageGetSource","text":"helicsMessageGetSource(message::HELICS.Message) -> String\n\n\nGet the source endpoint of a message\n\n message operation functions\n\nfunctions for working with helics message envelopes\n\nArguments\n\nmessage: The message object in question\n\nReturns\n\na string with the source endpoint\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsMessageGetString-Tuple{HELICS.Message}","page":"API","title":"HELICS.helicsMessageGetString","text":"helicsMessageGetString(message::HELICS.Message) -> String\n\n\nGet the payload of a message as a string\n\nArguments\n\nmessage: The message object in question\n\nReturns\n\na string representing the payload of a message\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsMessageGetTime-Tuple{HELICS.Message}","page":"API","title":"HELICS.helicsMessageGetTime","text":"helicsMessageGetTime(message::HELICS.Message) -> Float64\n\n\nGet the helics time associated with a message\n\nArguments\n\nmessage: The message object in question\n\nReturns\n\nthe time associated with a message\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsMessageIsValid-Tuple{HELICS.Message}","page":"API","title":"HELICS.helicsMessageIsValid","text":"helicsMessageIsValid(message::HELICS.Message) -> Bool\n\n\nA check if the message contains a valid payload\n\nArguments\n\nmessage: The message object in question\n\nReturns\n\ntrue if the message contains a payload\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsMessageReserve-Tuple{HELICS.Message, Int64}","page":"API","title":"HELICS.helicsMessageReserve","text":"helicsMessageReserve(message::HELICS.Message, reserveSize::Int64)\n\n\nReserve space in a buffer but don't actually resize\n\nthe message data buffer will be reserved but not resized\n\nArguments\n\nmessage: The message object in question\nreserveSize: The number of bytes to reserve in the message object\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsMessageResize-Tuple{HELICS.Message, Int64}","page":"API","title":"HELICS.helicsMessageResize","text":"helicsMessageResize(message::HELICS.Message, newSize::Int64)\n\n\nResize the data buffer for a message\n\nthe message data buffer will be resized there is no guarantees on what is in the buffer in newly allocated space if the allocated space is not sufficient new allocations will occur\n\nArguments\n\nmessage: The message object in question\nnewSize: The new size in bytes of the buffer\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsMessageSetData-Tuple{HELICS.Message, String}","page":"API","title":"HELICS.helicsMessageSetData","text":"helicsMessageSetData(message::HELICS.Message, data::String)\n\n\nSet the data payload of a message as raw data\n\nArguments\n\nmessage: The message object in question\ndata: A string containing the message data\ninputDataLength: The length of the data to input\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsMessageSetDestination-Tuple{HELICS.Message, String}","page":"API","title":"HELICS.helicsMessageSetDestination","text":"helicsMessageSetDestination(message::HELICS.Message, dest::String)\n\n\nSet the destination of a message\n\nArguments\n\nmessage: The message object in question\ndest: A string containing the new destination\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsMessageSetFlagOption-Tuple{HELICS.Message, Union{Int64, HELICS.Lib.HelicsFederateFlags}, Bool}","page":"API","title":"HELICS.helicsMessageSetFlagOption","text":"helicsMessageSetFlagOption(message::HELICS.Message, flag::Union{Int64, HELICS.Lib.HelicsFederateFlags}, flagValue::Bool)\n\n\nSet a flag on a message\n\nArguments\n\nmessage: The message object in question\nflag: An index of a flag to set on the message\nflagValue: The desired value of the flag\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsMessageSetMessageID-Tuple{HELICS.Message, Int32}","page":"API","title":"HELICS.helicsMessageSetMessageID","text":"helicsMessageSetMessageID(message::HELICS.Message, messageID::Int32)\n\n\nSet the message ID for the message\n\nnormally this is not needed and the core of HELICS will adjust as needed\n\nArguments\n\nmessage: The message object in question\nmessageID: A new message ID\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsMessageSetOriginalDestination-Tuple{HELICS.Message, String}","page":"API","title":"HELICS.helicsMessageSetOriginalDestination","text":"helicsMessageSetOriginalDestination(message::HELICS.Message, dest::String)\n\n\nSet the original destination of a message\n\nArguments\n\nmessage: The message object in question\ndest: A string containing the new original source\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsMessageSetOriginalSource-Tuple{HELICS.Message, String}","page":"API","title":"HELICS.helicsMessageSetOriginalSource","text":"helicsMessageSetOriginalSource(message::HELICS.Message, src::String)\n\n\nSet the original source of a message\n\nArguments\n\nmessage: The message object in question\nsrc: A string containing the new original source\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsMessageSetSource-Tuple{HELICS.Message, String}","page":"API","title":"HELICS.helicsMessageSetSource","text":"helicsMessageSetSource(message::HELICS.Message, src::String)\n\n\nSet the source of a message\n\nArguments\n\nmessage: The message object in question\nsrc: A string containing the source\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsMessageSetString-Tuple{HELICS.Message, String}","page":"API","title":"HELICS.helicsMessageSetString","text":"helicsMessageSetString(message::HELICS.Message, str::String)\n\n\nSet the data payload of a message as a string\n\nArguments\n\nmessage: The message object in question\nstr: A string containing the message data\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsMessageSetTime-Tuple{HELICS.Message, Union{Float64, Int64}}","page":"API","title":"HELICS.helicsMessageSetTime","text":"helicsMessageSetTime(message::HELICS.Message, time::Union{Float64, Int64})\n\n\nSet the delivery time for a message\n\nArguments\n\nmessage: The message object in question\ntime: The time the message should be delivered\n\n\n\n\n\n","category":"method"},{"location":"api/#Publication","page":"API","title":"Publication","text":"","category":"section"},{"location":"api/","page":"API","title":"API","text":"Modules = [HELICS]\nFilter = t -> typeof(t) <: Function && startswith(string(t), \"helicsPublication\")","category":"page"},{"location":"api/#HELICS.helicsPublicationAddTarget-Tuple{HELICS.Publication, String}","page":"API","title":"HELICS.helicsPublicationAddTarget","text":"helicsPublicationAddTarget(pub::HELICS.Publication, target::String)\n\n\nAdd a named input to the list of targets a Publication publishes to\n\nArguments\n\npub: the Publication to add the target for\ntarget: the name of an Input that the data should be sent to\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsPublicationGetInfo-Tuple{HELICS.Publication}","page":"API","title":"HELICS.helicsPublicationGetInfo","text":"helicsPublicationGetInfo(pub::HELICS.Publication) -> String\n\n\nGet the data in the info field of an publication\n\nArguments\n\npub: the Publication to query\n\nReturns\n\na string with the info field string\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsPublicationGetName-Tuple{HELICS.Publication}","page":"API","title":"HELICS.helicsPublicationGetName","text":"helicsPublicationGetName(pub::HELICS.Publication) -> String\n\n\nGet the name of a Publication\n\nthis will be the global name used to identify the Publication to the federation\n\nArguments\n\npub: the Publication to query\n\nReturns\n\na string of the publication name\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsPublicationGetOption-Tuple{HELICS.Publication, Union{Int64, HELICS.Lib.HelicsHandleOptions}}","page":"API","title":"HELICS.helicsPublicationGetOption","text":"helicsPublicationGetOption(pub::HELICS.Publication, option::Union{Int64, HELICS.Lib.HelicsHandleOptions}) -> Bool\n\n\nGet the data in the info field of an publication\n\nArguments\n\npub: the Publication to query\noption: the value to query see HelicsHandleOptions\n\nArguments\n\na string with the info field string\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsPublicationGetTag-Tuple{HELICS.Publication, String}","page":"API","title":"HELICS.helicsPublicationGetTag","text":"helicsPublicationGetTag(pub::HELICS.Publication, tagName::String) -> String\n\n\nGet the data in the tag field of a Publication\n\nArguments\n\npub: the Publication to query\ntagName: the name of the tage to the get the value for\n\nReturns\n\na string with the tag data\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsPublicationGetType-Tuple{HELICS.Publication}","page":"API","title":"HELICS.helicsPublicationGetType","text":"helicsPublicationGetType(pub::HELICS.Publication) -> String\n\n\nGet the type of a Publication\n\nArguments\n\npub: the Publication to query\n\nReturns\n\nA string with the type name\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsPublicationGetUnits-Tuple{HELICS.Publication}","page":"API","title":"HELICS.helicsPublicationGetUnits","text":"helicsPublicationGetUnits(pub::HELICS.Publication) -> String\n\n\nGet the units of the Publication that an Input is linked to\n\nArguments\n\nipt: the Input to query\n\nReturns\n\na void enumeration, helics_ok if everything worked\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsPublicationIsValid-Tuple{HELICS.Publication}","page":"API","title":"HELICS.helicsPublicationIsValid","text":"helicsPublicationIsValid(pub::HELICS.Publication) -> Bool\n\n\nCheck if a Publication is valid.\n\nArguments\n\npub: The Publication object to check.\n\nReturns\n\n@return true if the Publication object represents a valid publication.\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsPublicationPublishBoolean-Tuple{HELICS.Publication, Bool}","page":"API","title":"HELICS.helicsPublicationPublishBoolean","text":"helicsPublicationPublishBoolean(pub::HELICS.Publication, val::Bool)\n\n\nPublish a Boolean Value\n\nArguments\n\npub: the Publication to publish for\nval: the boolean value to publish either true or false\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsPublicationPublishBytes-Tuple{HELICS.Publication, String}","page":"API","title":"HELICS.helicsPublicationPublishBytes","text":"helicsPublicationPublishBytes(pub::HELICS.Publication, data::String)\n\n\nPublish raw bytes from string\n\nArguments\n\npub: the Publication to publish for\ndata: the raw data\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsPublicationPublishChar-Tuple{HELICS.Publication, Char}","page":"API","title":"HELICS.helicsPublicationPublishChar","text":"helicsPublicationPublishChar(pub::HELICS.Publication, val::Char)\n\n\nPublish a single character\n\nArguments\n\npub: the Publication to publish for\nval: the numerical value to publish\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsPublicationPublishComplex-Tuple{HELICS.Publication, ComplexF64}","page":"API","title":"HELICS.helicsPublicationPublishComplex","text":"helicsPublicationPublishComplex(pub::HELICS.Publication, c::ComplexF64)\n\n\nPublish a complex value (or pair of values)\n\nArguments\n\npub: the Publication to publish for\nc: the complex number to publish\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsPublicationPublishComplexVector-Tuple{HELICS.Publication, Vector{ComplexF64}}","page":"API","title":"HELICS.helicsPublicationPublishComplexVector","text":"helicsPublicationPublishComplexVector(pub::HELICS.Publication, vectorInput::Vector{ComplexF64})\n\n\nPublish a vector of complex doubles\n\nArguments\n\npub: the Publication to publish for\nvectorInput: Vector of ComplexF64 data\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsPublicationPublishDouble-Tuple{HELICS.Publication, Float64}","page":"API","title":"HELICS.helicsPublicationPublishDouble","text":"helicsPublicationPublishDouble(pub::HELICS.Publication, val::Float64)\n\n\nPublish a double floating point value\n\nArguments\n\npub the Publication to publish for\nval the numerical value to publish\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsPublicationPublishInteger-Tuple{HELICS.Publication, Int64}","page":"API","title":"HELICS.helicsPublicationPublishInteger","text":"helicsPublicationPublishInteger(pub::HELICS.Publication, val::Int64)\n\n\nPublish an integer value\n\nArguments\n\npub: the Publication to publish for\nval: the numerical value to publish\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsPublicationPublishNamedPoint-Tuple{HELICS.Publication, String, Float64}","page":"API","title":"HELICS.helicsPublicationPublishNamedPoint","text":"helicsPublicationPublishNamedPoint(pub::HELICS.Publication, str::String, val::Float64)\n\n\nPublish a named point\n\nArguments\n\npub: the Publication to publish for\nstr: a String\nval: a Float64 to publish\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsPublicationPublishString-Tuple{HELICS.Publication, String}","page":"API","title":"HELICS.helicsPublicationPublishString","text":"helicsPublicationPublishString(pub::HELICS.Publication, str::String)\n\n\nPublish a string\n\nArguments\n\npub: the Publication to publish for\nstr: String\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsPublicationPublishTime-Tuple{HELICS.Publication, Union{Float64, Int64}}","page":"API","title":"HELICS.helicsPublicationPublishTime","text":"helicsPublicationPublishTime(pub::HELICS.Publication, val::Union{Float64, Int64})\n\n\nPublish a time value\n\nArguments\n\npub: the Publication to publish for\nval: the numerical value to publish\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsPublicationPublishVector-Tuple{HELICS.Publication, Vector{Float64}}","page":"API","title":"HELICS.helicsPublicationPublishVector","text":"helicsPublicationPublishVector(pub::HELICS.Publication, vectorInput::Vector{Float64})\n\n\nPublish a vector of doubles\n\nArguments\n\npub: the Publication to publish for\nvectorInput: Vector of Float64 data\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsPublicationSetInfo-Tuple{HELICS.Publication, String}","page":"API","title":"HELICS.helicsPublicationSetInfo","text":"helicsPublicationSetInfo(pub::HELICS.Publication, info::String)\n\n\nSet the data in the info field for an publication\n\nArguments\n\npub: the Publication to set the info field for\ninfo: the string to set\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsPublicationSetMinimumChange-Tuple{HELICS.Publication, Float64}","page":"API","title":"HELICS.helicsPublicationSetMinimumChange","text":"helicsPublicationSetMinimumChange(pub::HELICS.Publication, tolerance::Float64)\n\n\nSet the minimum change detection tolerance\n\nArguments\n\npub: the Publication to modify\ntolerance: the tolerance level for the Publication, values changing less than this value will not be published\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsPublicationSetOption-Tuple{HELICS.Publication, Union{Int64, HELICS.Lib.HelicsHandleOptions}, Bool}","page":"API","title":"HELICS.helicsPublicationSetOption","text":"helicsPublicationSetOption(pub::HELICS.Publication, option::Union{Int64, HELICS.Lib.HelicsHandleOptions}, val::Bool)\n\n\nSet the data in the info field for an publication\n\nArguments\n\npub: the Publication to query\noption: integer code for the option to set HelicsHandleOptions\nval: the value to set the option to\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsPublicationSetTag-Tuple{HELICS.Publication, String, String}","page":"API","title":"HELICS.helicsPublicationSetTag","text":"helicsPublicationSetTag(pub::HELICS.Publication, tagName::String, tagValue::String)\n\n\nSet the data in the tag field for an Publication\n\nArguments\n\npub: the Publication to query\ntagName: the name of the tag to set\ntagValue: the string value to associate with a tag\n\n\n\n\n\n","category":"method"},{"location":"api/#Query","page":"API","title":"Query","text":"","category":"section"},{"location":"api/","page":"API","title":"API","text":"Modules = [HELICS]\nFilter = t -> typeof(t) <: Function && startswith(string(t), \"helicsQuery\")","category":"page"},{"location":"api/#HELICS.helicsQueryBrokerExecute-Tuple{HELICS.Query, HELICS.Broker}","page":"API","title":"HELICS.helicsQueryBrokerExecute","text":"helicsQueryBrokerExecute(query::HELICS.Query, broker::HELICS.Broker) -> String\n\n\nExecute a Query directly on a broker\n\nthe call will block until the Query finishes which may require communication or other delays\n\nArguments\n\nquery: the Query to use in the query\nbroker: the Broker to send the Query to\n\nReturns\n\na string. String will remain valid until the Query is freed or executed again\n\nthe return will be nullptr if fed or Query is an invalid object, the return string will be \"#invalid\" if the Query itself was invalid\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsQueryBufferFill-Tuple{HELICS.QueryBuffer, String}","page":"API","title":"HELICS.helicsQueryBufferFill","text":"helicsQueryBufferFill(buffer::HELICS.QueryBuffer, queryResult::String)\n\n\nSet the data for a query callback.\n\nThere are many queries that HELICS understands directly, but it is occasionally useful to have a federate be able to respond to specific queries with answers specific to a federate.\n\nArguments\n\nbuffer: the QueryBuffer to set a callback for.\nqueryResult: A callback with signature HelicsIterationRequest(void *userdata)\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsQueryCoreExecute-Tuple{HELICS.Query, HELICS.Core}","page":"API","title":"HELICS.helicsQueryCoreExecute","text":"helicsQueryCoreExecute(query::HELICS.Query, core::HELICS.Core) -> String\n\n\nExecute a Query directly on a core\n\nthe call will block until the Query finishes which may require communication or other delays\n\nArguments\n\nquery: the Query to use in the query\ncore: the core to send the Query to\n\nReturns\n\na string. String will remain valid until the Query is freed or executed again\n\nthe return will be nullptr if fed or Query is an invalid object, the return string will be \"#invalid\" if the Query itself was invalid\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsQueryExecute-Tuple{HELICS.Query, HELICS.Federate}","page":"API","title":"HELICS.helicsQueryExecute","text":"helicsQueryExecute(query::HELICS.Query, fed::HELICS.Federate) -> String\n\n\nExecute a query\n\nthe call will block until the Query finishes which may require communication or other delays\n\nArguments\n\nquery: the Query to use in the query\nfed: a Federate to send the Query through\n\nReturns\n\na string. String will remain valid until the Query is freed or executed again\n\nthe return will be nullptr if fed or Query is an invalid object, the return string will be \"#invalid\" if the Query itself was invalid\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsQueryExecuteAsync-Tuple{HELICS.Query, HELICS.Federate}","page":"API","title":"HELICS.helicsQueryExecuteAsync","text":"helicsQueryExecuteAsync(query::HELICS.Query, fed::HELICS.Federate)\n\n\nExecute a Query in a non-blocking call\n\nArguments\n\nquery: the Query to use in the query\nfed: a Federate to send the Query through\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsQueryExecuteComplete-Tuple{HELICS.Query}","page":"API","title":"HELICS.helicsQueryExecuteComplete","text":"helicsQueryExecuteComplete(query::HELICS.Query) -> String\n\n\nComplete the return from a Query called with helicsQueryExecuteAsync\n\nthe function will block until the Query completes helicsQueryIsCompleted can be called to determine if a Query has completed or not.\n\nArguments\n\nquery: the Query to complete execution of\n\nReturns\n\na string. String will remain valid until the Query is freed or executed again\n\nthe return will be nullptr if Query is an invalid object\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsQueryFree-Tuple{HELICS.Query}","page":"API","title":"HELICS.helicsQueryFree","text":"helicsQueryFree(query::HELICS.Query)\n\n\nFree the memory associated with a Query\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsQueryIsCompleted-Tuple{HELICS.Query}","page":"API","title":"HELICS.helicsQueryIsCompleted","text":"helicsQueryIsCompleted(query::HELICS.Query) -> Bool\n\n\nCheck if an asynchronously executed Query has completed\n\nthis function should usually be called after a QueryExecuteAsync function has been called.\n\nArguments\n\nquery: the Query to check if completed\n\nReturns\n\nwill return true if an asynchronous Query has complete or a regular Query call was made with a result and false if an asynchronous Query has not completed or is invalid\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsQuerySetOrdering-Tuple{HELICS.Query, Int32}","page":"API","title":"HELICS.helicsQuerySetOrdering","text":"helicsQuerySetOrdering(query::HELICS.Query, mode::Int32)\n\n\nUpdate the ordering mode of the query, fast runs on priority channels, ordered goes on normal channels but goes in sequence\n\nArguments\n\nquery: the query object to change the order for.\nmode: 0 for fast, 1 for ordered.\n\n\n\n\n\n","category":"method"},{"location":"api/#Others","page":"API","title":"Others","text":"","category":"section"},{"location":"api/","page":"API","title":"API","text":"Modules = [HELICS]\nFilter = t -> typeof(t) <: Function && !any(startswith.(string(t), [\"helicsBroker\", \"helicsCore\", \"helicsEndpoint\", \"helicsFederate\", \"helicsFederateInfo\", \"helicsFilter\", \"helicsInput\", \"helicsMessage\", \"helicsPublication\", \"helicsQuery\"]))","category":"page"},{"location":"api/#HELICS.helicsAbort-Tuple{Int64, String}","page":"API","title":"HELICS.helicsAbort","text":"helicsAbort(errorCode::Int64, errorString::String)\n\n\nExecute a global abort by sending an error code to all cores, brokers, and federates that were created through the current library instance.\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsBooleanToBytes-Tuple{Bool, HELICS.DataBuffer}","page":"API","title":"HELICS.helicsBooleanToBytes","text":"helicsBooleanToBytes(value::Bool, data::HELICS.DataBuffer) -> Int32\n\n\nconvert a boolean to serialized bytes\n\nArguments\n\nvalue: the boolean to convert\ndata: the DataBuffer to hold the serialized bytes\n\nReturns\n\nInt32 Bytes serialized.\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsCallbackFederateInitializeCallback-Tuple{HELICS.Federate, Ptr{Nothing}, Ptr{Nothing}}","page":"API","title":"HELICS.helicsCallbackFederateInitializeCallback","text":"helicsCallbackFederateInitializeCallback(fed::HELICS.Federate, initialize::Ptr{Nothing}, userdata::Ptr{Nothing})\n\n\nSet callback for initialization.\n\nThis callback will be executed when computing whether to iterate in initialization mode.\n\nArguments\n\nfed: the Federate to set a callback for.\ninitialize: A callback with signature HelicsIterationRequest(void *userdata)\nuserdata: a point to user data that is passed to the function when executing\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsCallbackFederateNextTimeCallback-Tuple{HELICS.Federate, Ptr{Nothing}, Ptr{Nothing}}","page":"API","title":"HELICS.helicsCallbackFederateNextTimeCallback","text":"helicsCallbackFederateNextTimeCallback(fed::HELICS.Federate, timeUpdate::Ptr{Nothing}, userdata::Ptr{Nothing})\n\n\nSet callback for the next time update.\n\nThis callback will be triggered to compute the next time update for a callback federate.\n\nArguments\n\nfed: the Federate to set a callback for.\ntimeUpdate: A callback with signature HelicsTime(HelicsTime time, void *userdata)\nuserdata: a point to user data that is passed to the function when executing\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsCallbackFederateNextTimeIterativeCallback-Tuple{HELICS.Federate, Ptr{Nothing}, Ptr{Nothing}}","page":"API","title":"HELICS.helicsCallbackFederateNextTimeIterativeCallback","text":"helicsCallbackFederateNextTimeIterativeCallback(fed::HELICS.Federate, timeUpdate::Ptr{Nothing}, userdata::Ptr{Nothing})\n\n\nSet callback for the next time update with iteration capability.\n\nThis callback will be triggered to compute the next time update for a callback federate.\n\nArguments\n\nfed: the Federate to set a callback for.\ntimeUpdate: A callback with signature HelicsTime(HelicsTime time, HelicsIterationResult result, HelicsIterationRequest* iteration, void *userdata)\nuserdata: a point to user data that is passed to the function when executing\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsCharToBytes-Tuple{Char, HELICS.DataBuffer}","page":"API","title":"HELICS.helicsCharToBytes","text":"helicsCharToBytes(value::Char, data::HELICS.DataBuffer) -> Int32\n\n\nconvert a char to serialized bytes\n\nArguments\n\nvalue: the char to convert\ndata: the DataBuffer to hold the serialized bytes\n\nReturns\n\nInt32 Bytes serialized.\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsCleanupLibrary-Tuple{}","page":"API","title":"HELICS.helicsCleanupLibrary","text":"helicsCleanupLibrary()\n\n\nFunction to do some housekeeping work\n\nthis runs some cleanup routines and tries to close out any residual thread that haven't been shutdown yet.\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsClearSignalHandler-Tuple{}","page":"API","title":"HELICS.helicsClearSignalHandler","text":"helicsClearSignalHandler()\n\n\nClear HELICS based signal handlers.\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsCloseLibrary-Tuple{}","page":"API","title":"HELICS.helicsCloseLibrary","text":"helicsCloseLibrary()\n\n\nCall when done using the helics library, this function will ensure the threads are closed properly if possible this should be the last call before exiting,\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsComplexToBytes-Tuple{ComplexF64, HELICS.DataBuffer}","page":"API","title":"HELICS.helicsComplexToBytes","text":"helicsComplexToBytes(value::ComplexF64, data::HELICS.DataBuffer) -> Int32\n\n\nconvert a complex to serialized bytes\n\nArguments\n\nvalue: the complex to convert\ndata: the DataBuffer to hold the serialized bytes\n\nReturns\n\nInt32 Bytes serialized.\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsComplexVectorToBytes-Tuple{Vector{ComplexF64}, HELICS.DataBuffer}","page":"API","title":"HELICS.helicsComplexVectorToBytes","text":"helicsComplexVectorToBytes(value::Vector{ComplexF64}, data::HELICS.DataBuffer) -> Int32\n\n\nconvert a vector of complex values to serialized bytes\n\nArguments\n\nvalue: the vector to convert\ndata: the DataBuffer to hold the serialized bytes\n\nReturns\n\nInt32 Bytes serialized.\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsCreateBroker-Tuple{String, String, String}","page":"API","title":"HELICS.helicsCreateBroker","text":"helicsCreateBroker(kind::String, name::String, initString::String) -> HELICS.Broker\n\n\nCreate a broker object\n\nArguments\n\ntype: the type of Broker to create\nname: the name of Broker, may be a empty string to have a name automatically assigned\ninitString: an initialization string to send to the core-the format is similar to command line arguments. Typical options include a broker address –broker=\"XSSAF\" if this is a subbroker or the number of federates or the address\n\nReturns\n\na Broker object, will be NULL if there was an error indicated in the err object\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsCreateBrokerFromArgs-Tuple{String, String, Vector{<:AbstractString}}","page":"API","title":"HELICS.helicsCreateBrokerFromArgs","text":"helicsCreateBrokerFromArgs(kind::String, name::String, argv::Vector{<:AbstractString}) -> HELICS.Broker\n\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsCreateCallbackFederate-Tuple{String, HELICS.FederateInfo}","page":"API","title":"HELICS.helicsCreateCallbackFederate","text":"helicsCreateCallbackFederate(fedName::String, fi::HELICS.FederateInfo) -> HELICS.CallbackFederate\n\n\nCreate a callback federate from a federate info object.\n\nArguments\n\nfedName: A string with the name of the federate, can be NULL or an empty string to pull the default name from fi.\nfi: fi The federate info object that contains details on the federate.\n\nReturns\n\nCallbackFederate\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsCreateCallbackFederateFromConfig-Tuple{String}","page":"API","title":"HELICS.helicsCreateCallbackFederateFromConfig","text":"helicsCreateCallbackFederateFromConfig(configFile::String) -> HELICS.CallbackFederate\n\n\nCreate a callback federate from a JSON file or JSON string or TOML file.\n\nArguments\n\nconfigFile: A JSON file or a JSON string or TOML file that contains setup and configuration information.\n\nReturns\n\nCallbackFederate\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsCreateCombinationFederate-Tuple{String, HELICS.FederateInfo}","page":"API","title":"HELICS.helicsCreateCombinationFederate","text":"helicsCreateCombinationFederate(fedName::String, fi::HELICS.FederateInfo) -> HELICS.CombinationFederate\n\n\nCreate a CombinationFederate from a FederateInfo object\n\nCombinationFederate are both ValueFederate and MessageFederate, objects can be used in all functions that take a Federate, MessageFederate or ValueFederate object as an argument\n\nArguments\n\nfedName: a string with the name of the Federate, can be NULL or an empty string to pull the default name from fi\nfi: the FederateInfo object that contains details on the Federate\n\nReturns\n\nValueFederate\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsCreateCombinationFederateFromConfig-Tuple{String}","page":"API","title":"HELICS.helicsCreateCombinationFederateFromConfig","text":"helicsCreateCombinationFederateFromConfig(configFile::String) -> HELICS.CombinationFederate\n\n\nCreate a CombinationFederate from a JSON file or JSON string\n\nCombinationFederate are both ValueFederate and MessageFederate, objects can be used in all functions that take a Federate, MessageFederate or ValueFederate object as an argument\n\nArguments\n\nconfigFile: a JSON file or a JSON string or TOML file that contains setup and configuration information\n\nReturns\n\nCombinationFederate\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsCreateCore-Tuple{String, String, String}","page":"API","title":"HELICS.helicsCreateCore","text":"helicsCreateCore(kind::String, name::String, initString::String) -> HELICS.Core\n\n\nCreate a core object\n\nArguments\n\ntype: the type of the core to create\nname: the name of the core , may be a empty string to have a name automatically assigned\ninitString: an initialization string to send to the core-the format is similar to command line arguments. Typical options include a broker address –broker=\"XSSAF\" or the number of federates or the address\n\nReturns\n\na Core object if the core is invalid err will contain some indication\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsCreateCoreFromArgs-Tuple{String, String, Vector{<:AbstractString}}","page":"API","title":"HELICS.helicsCreateCoreFromArgs","text":"helicsCreateCoreFromArgs(kind::String, name::String, argv::Vector{<:AbstractString}) -> HELICS.Core\n\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsCreateDataBuffer-Tuple{Int32}","page":"API","title":"HELICS.helicsCreateDataBuffer","text":"helicsCreateDataBuffer(initialCapacity::Int32) -> HELICS.DataBuffer\n\n\nCreate an DataBuffer\n\nArguments\n\ninitialCapaciy: the initial capacity of the DataBuffer\n\nReturns\n\nDataBuffer\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsCreateFederateInfo-Tuple{}","page":"API","title":"HELICS.helicsCreateFederateInfo","text":"helicsCreateFederateInfo() -> HELICS.FederateInfo\n\n\nCreate a FederateInfo object for specifying federate information when constructing a Federate\n\nReturns\n\na FederateInfo object which is a reference to the created object\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsCreateMessageFederate-Tuple{String, HELICS.FederateInfo}","page":"API","title":"HELICS.helicsCreateMessageFederate","text":"helicsCreateMessageFederate(fedName::String, fi::HELICS.FederateInfo) -> HELICS.MessageFederate\n\n\nCreate a MessageFederate from a FederateInfo object\n\nMessageFederate objects can be used in all functions that take a MessageFederate or Federate object as an argument\n\nArguments\n\nfedName: the name of the Federate to create\nfi: the FederateInfo object that contains details on the Federate\n\nReturns\n\nMessageFederate\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsCreateMessageFederateFromConfig-Tuple{String}","page":"API","title":"HELICS.helicsCreateMessageFederateFromConfig","text":"helicsCreateMessageFederateFromConfig(configFile::String) -> HELICS.MessageFederate\n\n\nCreate a MessageFederate from a JSON file or JSON string or TOML file\n\nMessageFederate objects can be used in all functions that take a MessageFederate or Federate object as an argument\n\nArguments\n\nconfigFile: a Config(JSON,TOML) file or a JSON string that contains setup and configuration information\n\nReturns\n\nMessageFederate\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsCreateQuery-Tuple{String, String}","page":"API","title":"HELICS.helicsCreateQuery","text":"helicsCreateQuery(target::String, query::String) -> HELICS.Query\n\n\nCreate a Query\n\na Query consists of a target and query string\n\nArguments\n\ntarget: the name of the target to query\nquery: the query string to make of the target\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsCreateValueFederate-Tuple{String, HELICS.FederateInfo}","page":"API","title":"HELICS.helicsCreateValueFederate","text":"helicsCreateValueFederate(fedName::String, fi::HELICS.FederateInfo) -> HELICS.ValueFederate\n\n\nCreate a value federate from a FederateInfo object\n\nFederate objects can be used in all functions that take a Federate object as an argument\n\nArguments\n\nfedName: the name of the Federate to create, can NULL or an empty string to use the default name from fi or an assigned name\nfi: the FederateInfo object that contains details on the Federate\n\nReturns\n\nValueFederate\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsCreateValueFederateFromConfig-Tuple{String}","page":"API","title":"HELICS.helicsCreateValueFederateFromConfig","text":"helicsCreateValueFederateFromConfig(configFile::String) -> HELICS.ValueFederate\n\n\nCreate a value federate from a JSON file, JSON string, or TOML file\n\nFederate objects can be used in all functions that take a Federate object as an argument\n\nArguments\n\nconfigFile: a JSON file or a JSON string or TOML file that contains setup and configuration information\n\nReturns\n\nValueFederate\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsDataBufferCapacity-Tuple{HELICS.DataBuffer}","page":"API","title":"HELICS.helicsDataBufferCapacity","text":"helicsDataBufferCapacity(data::HELICS.DataBuffer) -> Int32\n\n\nGet capacity of aDataBuffer\n\nArguments\n\ndata: the DataBuffer\n\nReturns\n\nInt32\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsDataBufferClone-Tuple{HELICS.DataBuffer}","page":"API","title":"HELICS.helicsDataBufferClone","text":"helicsDataBufferClone(data::HELICS.DataBuffer) -> HELICS.DataBuffer\n\n\ncopy and existing DataBuffer to and new one\n\nArguments\n\ndata: the DataBuffer to copy\n\nReturns\n\nDataBuffer\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsDataBufferConvertToType-Tuple{HELICS.DataBuffer, Int64}","page":"API","title":"HELICS.helicsDataBufferConvertToType","text":"helicsDataBufferConvertToType(data::HELICS.DataBuffer, newDataType::Int64) -> Bool\n\n\nchange data type of DataBuffer.\n\nArguments\n\ndata: the DataBuffer\n\n-newDataType: integer of data type you want to change data to.\n\nReturns\n\nBool, true if successful otherwise false\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsDataBufferData-Tuple{HELICS.DataBuffer}","page":"API","title":"HELICS.helicsDataBufferData","text":"helicsDataBufferData(data::HELICS.DataBuffer) -> Ptr{Nothing}\n\n\nGet a pointer to the raw data in a DataBuffer\n\nArguments\n\ndata: the DataBuffer\n\nReturns\n\nPtr{Cvoid} \n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsDataBufferFree-Tuple{HELICS.DataBuffer}","page":"API","title":"HELICS.helicsDataBufferFree","text":"helicsDataBufferFree(data::HELICS.DataBuffer)\n\n\nFree a DataBuffer\n\nArguments\n\ndata: the DataBuffer\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsDataBufferIsValid-Tuple{HELICS.DataBuffer}","page":"API","title":"HELICS.helicsDataBufferIsValid","text":"helicsDataBufferIsValid(data::HELICS.DataBuffer) -> Bool\n\n\nCheck if DataBuffer is valid\n\nArguments\n\ndata: the DataBuffer to check\n\nReturns\n\na boolean\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsDataBufferReserve-Tuple{HELICS.DataBuffer, Int32}","page":"API","title":"HELICS.helicsDataBufferReserve","text":"helicsDataBufferReserve(data::HELICS.DataBuffer, newCapacity::Int32)\n\n\nIncrease DataBuffer capacity without reallocating memory\n\nArguments\n\ndata: the DataBuffer\nnewCapacity: the new capacity\n\nReturns\n\ntrue is successful else false\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsDataBufferSize-Tuple{HELICS.DataBuffer}","page":"API","title":"HELICS.helicsDataBufferSize","text":"helicsDataBufferSize(data::HELICS.DataBuffer) -> Int32\n\n\nGet size of aDataBuffer\n\nArguments\n\ndata: the DataBuffer\n\nReturns\n\nInt32\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsDataBufferStringSize-Tuple{HELICS.DataBuffer}","page":"API","title":"HELICS.helicsDataBufferStringSize","text":"helicsDataBufferStringSize(data::HELICS.DataBuffer) -> Int64\n\n\nGet size of string data size from DataBuffer.\n\nArguments\n\ndata: the DataBuffer\n\nReturns\n\nInt\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsDataBufferToBoolean-Tuple{HELICS.DataBuffer}","page":"API","title":"HELICS.helicsDataBufferToBoolean","text":"helicsDataBufferToBoolean(data::HELICS.DataBuffer) -> Bool\n\n\nGet data from DataBuffer as a boolean.\n\nArguments\n\ndata: the DataBuffer\n\nReturns\n\nBool\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsDataBufferToChar-Tuple{HELICS.DataBuffer}","page":"API","title":"HELICS.helicsDataBufferToChar","text":"helicsDataBufferToChar(data::HELICS.DataBuffer) -> Char\n\n\nGet data from DataBuffer as a single char.\n\nArguments\n\ndata: the DataBuffer\n\nReturns\n\nChar\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsDataBufferToComplex-Tuple{HELICS.DataBuffer}","page":"API","title":"HELICS.helicsDataBufferToComplex","text":"helicsDataBufferToComplex(data::HELICS.DataBuffer) -> ComplexF64\n\n\nGet data from DataBuffer as a complex.\n\nArguments\n\ndata: the DataBuffer\n\nReturns\n\nComplexF64\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsDataBufferToComplexObject-Tuple{HELICS.DataBuffer}","page":"API","title":"HELICS.helicsDataBufferToComplexObject","text":"helicsDataBufferToComplexObject(data::HELICS.DataBuffer)\n\n\nGet HelicsComplex data from DataBuffer.\n\nArguments\n\ndata: the DataBuffer\n\nReturns\n\nComplexF64\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsDataBufferToComplexVector-Tuple{HELICS.DataBuffer}","page":"API","title":"HELICS.helicsDataBufferToComplexVector","text":"helicsDataBufferToComplexVector(data::HELICS.DataBuffer) -> Vector{ComplexF64}\n\n\nGet vector of complex values from DataBuffer.\n\nArguments\n\ndata: the DataBuffer\n\nReturns\n\nVector{ComplexF64}\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsDataBufferToDouble-Tuple{HELICS.DataBuffer}","page":"API","title":"HELICS.helicsDataBufferToDouble","text":"helicsDataBufferToDouble(data::HELICS.DataBuffer) -> Float64\n\n\nGet data from DataBuffer as a double.\n\nArguments\n\ndata: the DataBuffer\n\nReturns\n\nFloat64\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsDataBufferToInteger-Tuple{HELICS.DataBuffer}","page":"API","title":"HELICS.helicsDataBufferToInteger","text":"helicsDataBufferToInteger(data::HELICS.DataBuffer) -> Int64\n\n\nGet data from DataBuffer as an integer.\n\nArguments\n\ndata: the DataBuffer\n\nReturns\n\nInt64\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsDataBufferToNamedPoint-Tuple{HELICS.DataBuffer}","page":"API","title":"HELICS.helicsDataBufferToNamedPoint","text":"helicsDataBufferToNamedPoint(data::HELICS.DataBuffer) -> Tuple{String, Float64}\n\n\nGet a named point from DataBuffer.\n\nArguments\n\ndata: the DataBuffer\n\nReturns\n\nTuple{String, Float64}\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsDataBufferToRawString-Tuple{HELICS.DataBuffer}","page":"API","title":"HELICS.helicsDataBufferToRawString","text":"helicsDataBufferToRawString(data::HELICS.DataBuffer) -> String\n\n\nGet raw string data from DataBuffer.\n\nArguments\n\ndata: the DataBuffer\n\nReturns\n\nString\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsDataBufferToString-Tuple{HELICS.DataBuffer}","page":"API","title":"HELICS.helicsDataBufferToString","text":"helicsDataBufferToString(data::HELICS.DataBuffer) -> String\n\n\nGet string data from DataBuffer.\n\nArguments\n\ndata: the DataBuffer\n\nReturns\n\nString\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsDataBufferToTime-Tuple{HELICS.DataBuffer}","page":"API","title":"HELICS.helicsDataBufferToTime","text":"helicsDataBufferToTime(data::HELICS.DataBuffer) -> Float64\n\n\nGet data from DataBuffer as a HELICS.HelicsTime.\n\nArguments\n\ndata: the DataBuffer\n\nReturns\n\nFloat64\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsDataBufferToVector-Tuple{HELICS.DataBuffer}","page":"API","title":"HELICS.helicsDataBufferToVector","text":"helicsDataBufferToVector(data::HELICS.DataBuffer) -> Vector{Float64}\n\n\nGet vector of doubles from DataBuffer.\n\nArguments\n\ndata: the DataBuffer\n\nReturns\n\nVector{Float64}\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsDataBufferType-Tuple{HELICS.DataBuffer}","page":"API","title":"HELICS.helicsDataBufferType","text":"helicsDataBufferType(data::HELICS.DataBuffer) -> Int64\n\n\nreturn the an integer value of the data type of a DataBuffer.\n\nArguments\n\ndata: the DataBuffer\n\nReturns\n\nInt data type integer value.\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsDataBufferVectorSize-Tuple{HELICS.DataBuffer}","page":"API","title":"HELICS.helicsDataBufferVectorSize","text":"helicsDataBufferVectorSize(data::HELICS.DataBuffer) -> Int64\n\n\nGet size of vector data size from DataBuffer.\n\nArguments\n\ndata: the DataBuffer\n\nReturns\n\nInt\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsDoubleToBytes-Tuple{Float64, HELICS.DataBuffer}","page":"API","title":"HELICS.helicsDoubleToBytes","text":"helicsDoubleToBytes(value::Float64, data::HELICS.DataBuffer) -> Int32\n\n\nconvert a double to serialized bytes\n\nArguments\n\nvalue: the Float64 to convert\ndata: the DataBuffer to hold the serialized bytes\n\nReturns\n\nInt32 Bytes serialized.\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsErrorClear-Tuple{Ref{HELICS.Lib.HelicsError}}","page":"API","title":"HELICS.helicsErrorClear","text":"helicsErrorClear(err::Ref{HELICS.Lib.HelicsError})\n\n\nClear an error object\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsErrorInitialize-Tuple{}","page":"API","title":"HELICS.helicsErrorInitialize","text":"helicsErrorInitialize() -> HELICS.Lib.HelicsError\n\n\nReturn an initialized error object\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsGetFederateByName-Tuple{String}","page":"API","title":"HELICS.helicsGetFederateByName","text":"helicsGetFederateByName(fedName::String) -> HELICS.CombinationFederate\n\n\nGet an existing Federate from a core by name\n\nthe Federate must have been created by one of the other functions and at least one of the objects referencing the created federate must still be active in the process\n\nArguments\n\nfedName: the name of the Federate to retrieve\n\nReturns\n\nNULL if no fed is available by that name otherwise a Federate with that name\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsGetOptionIndex-Tuple{String}","page":"API","title":"HELICS.helicsGetOptionIndex","text":"helicsGetOptionIndex(val::String) -> Int64\n\n\nGet an option index for use in helicsPublicationSetOption, helicsInputSetOption, helicsEndpointSetOption, helicsFilterSetOption, and the corresponding get functions\n\nArguments\n\nval: a string with the option name\n\nReturns\n\nan int with the option index (-1) if not a valid property\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsGetPropertyIndex-Tuple{String}","page":"API","title":"HELICS.helicsGetPropertyIndex","text":"helicsGetPropertyIndex(val::String) -> Int64\n\n\nGet a property index for use in helicsFederateInfoSetFlagOption, helicsFederateInfoSetTimeProperty, helicsFederateInfoSetIntegerProperty\n\nArguments\n\nval: a string with the property name\n\nReturns\n\nan int with the property code (-1) if not a valid property\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsGetVersion-Tuple{}","page":"API","title":"HELICS.helicsGetVersion","text":"helicsGetVersion() -> String\n\n\nGet a version string for HELICS\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsIntegerToBytes-Tuple{Int64, HELICS.DataBuffer}","page":"API","title":"HELICS.helicsIntegerToBytes","text":"helicsIntegerToBytes(value::Int64, data::HELICS.DataBuffer) -> Int32\n\n\nconvert an integer to serialized bytes\n\nArguments\n\nvalue: the Int64 to convert\ndata: the DataBuffer to hold the serialized bytes\n\nReturns\n\nInt32 Bytes serialized.\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsIsCoreTypeAvailable-Tuple{String}","page":"API","title":"HELICS.helicsIsCoreTypeAvailable","text":"helicsIsCoreTypeAvailable(kind::String) -> Bool\n\n\nReturns true if core/broker type specified is available in current compilation.\n\nArguments\n\ntype: a string representing a core type\n\nReturns\n\na Bool\n\npossible options include \"test\",\"zmq\",\"udp\",\"ipc\",\"interprocess\",\"tcp\",\"default\", \"mpi\"\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsLoadSignalHandler-Tuple{}","page":"API","title":"HELICS.helicsLoadSignalHandler","text":"helicsLoadSignalHandler()\n\n\nLoad a signal handler that handles Ctrl-C and shuts down all HELICS brokers, cores, and federates then exits the process\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsLoadSignalHandlerCallback-Tuple{Ptr{Nothing}, Bool}","page":"API","title":"HELICS.helicsLoadSignalHandlerCallback","text":"helicsLoadSignalHandlerCallback(handler::Ptr{Nothing}, useSeparateThread::Bool)\n\n\nLoad a custom signal handler to execute prior to the abort signal handler. @details This function is not 100% reliable it will most likely work but uses some functions and techniques that are not 100% guaranteed to work in a signal handler and in worst case it could deadlock. That is somewhat unlikely given usage patterns but it is possible. The callback has signature HelicsBool(*handler)(int) and it will take the SIGINT as an argument and return a boolean. If the boolean return value is HELICSTRUE (or the callback is null) the default signal handler is run after the callback finishes; if it is HELICSFALSE the default callback is not run and the default signal handler is executed. If the second argument is set to HELICSTRUE the default signal handler will execute in a separate thread(this may be a bad idea). \n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsLoadSignalHandlerCallbackNoExit-Tuple{Ptr{Nothing}, Bool}","page":"API","title":"HELICS.helicsLoadSignalHandlerCallbackNoExit","text":"helicsLoadSignalHandlerCallbackNoExit(handler::Ptr{Nothing}, useSeparateThread::Bool)\n\n\nLoad a custom signal handler to execute prior to the abort signal handler. The signal handler does not call exit. @details This function is not 100% reliable. It will most likely work but uses some functions and techniques that are not 100% guaranteed to work in a signal handler and in worst case it could deadlock. That is somewhat unlikely given usage patterns but it is possible. The callback has signature HelicsBool(*handler)(int) and it will take the SIGINT as an argument and return a boolean. If the boolean return value is HELICSTRUE (or the callback is null) the no exit signal handler is run after the callback finishes; if it is HELICSFALSE the default callback is not run and the default signal handler is executed. If the second argument is set to HELICSTRUE the default signal handler will execute in a separate thread (this may be a bad idea).\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsLoadThreadedSignalHandler-Tuple{}","page":"API","title":"HELICS.helicsLoadThreadedSignalHandler","text":"helicsLoadThreadedSignalHandler()\n\n\nLoad a signal handler that handles Ctrl-C and shuts down all HELICS brokers, cores, and federates then exits the process. This operation will execute in a newly created and detached thread returning control back to the calling program before completing operations.\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsNamedPointToBytes-Tuple{String, Int64, HELICS.DataBuffer}","page":"API","title":"HELICS.helicsNamedPointToBytes","text":"helicsNamedPointToBytes(name::String, value::Int64, data::HELICS.DataBuffer)\n\n\nconvert a named point to serialized bytes\n\nArguments\n\nname: the name of the point of doubles to convert\nvalue: the integer value of the point to convert\ndata: the DataBuffer to hold the serialized bytes\n\nReturns\n\nInt32 Bytes serialized.\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsRawStringToBytes-Tuple{String, HELICS.DataBuffer}","page":"API","title":"HELICS.helicsRawStringToBytes","text":"helicsRawStringToBytes(value::String, data::HELICS.DataBuffer)\n\n\nconvert a raw string to serialized bytes\n\nArguments\n\nvalue: the raw string to convert\ndata: the DataBuffer to hold the serialized bytes\n\nReturns\n\nInt32 Bytes serialized.\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsStringToBytes-Tuple{String, HELICS.DataBuffer}","page":"API","title":"HELICS.helicsStringToBytes","text":"helicsStringToBytes(value::String, data::HELICS.DataBuffer) -> Int32\n\n\nconvert a string to serialized bytes\n\nArguments\n\nvalue: the string to convert\ndata: the DataBuffer to hold the serialized bytes\n\nReturns\n\nInt32 Bytes serialized.\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsSubscriptionGetTarget-Tuple{HELICS.Input}","page":"API","title":"HELICS.helicsSubscriptionGetTarget","text":"helicsSubscriptionGetTarget(ipt::HELICS.Input) -> String\n\n\nGet the target of an Input\n\nArguments\n\nipt: the Input to query\n\nReturns\n\nA string of the input target\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsTimeToBytes-Tuple{Union{Float64, Int64}, HELICS.DataBuffer}","page":"API","title":"HELICS.helicsTimeToBytes","text":"helicsTimeToBytes(value::Union{Float64, Int64}, data::HELICS.DataBuffer) -> Int32\n\n\nconvert a HelicsTime to serialized bytes\n\nArguments\n\nvalue: the HelicsTime to convert\ndata: the DataBuffer to hold the serialized bytes\n\nReturns\n\nInt32 Bytes serialized.\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsTranslatorAddDestinationEndpoint-Tuple{HELICS.Translator, String}","page":"API","title":"HELICS.helicsTranslatorAddDestinationEndpoint","text":"helicsTranslatorAddDestinationEndpoint(trans::HELICS.Translator, ept::String)\n\n\nAdd a destination target endpoint to a translator.\n\nThe translator will \"translate\" all message sent to it. This method adds an endpoint which will receive data published to the translator.\n\nArguments\n\ntrans: the Translator to modify\nept: The name of the endpoint the translator sends data to.\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsTranslatorAddInputTarget-Tuple{HELICS.Translator, String}","page":"API","title":"HELICS.helicsTranslatorAddInputTarget","text":"helicsTranslatorAddInputTarget(trans::HELICS.Translator, input::String)\n\n\nAdd an input to send a translator output.\n\nAll messages sent to a translator endpoint get translated and published to the translators target inputs. This method adds an input to a translators which will receive translated messages.\n\nArguments\n\ntrans: the Translator to add a destination target to.\ninput: The name of the input which will be receiving translated messages\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsTranslatorAddPublicationTarget-Tuple{HELICS.Translator, String}","page":"API","title":"HELICS.helicsTranslatorAddPublicationTarget","text":"helicsTranslatorAddPublicationTarget(trans::HELICS.Translator, pub::String)\n\n\nAdd a source publication target to a translator.\n\nWhen a publication publishes data the translator will receive it and convert it to a message sent to a translators destination endpoints. This method adds a publication which publishes data the translator receives and sends to its destination endpoints.\n\nArguments\n\ntrans: the Translator to modify\npub: The name of the publication to subscribe.\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsTranslatorAddSourceEndpoint-Tuple{HELICS.Translator, String}","page":"API","title":"HELICS.helicsTranslatorAddSourceEndpoint","text":"helicsTranslatorAddSourceEndpoint(trans::HELICS.Translator, ept::String)\n\n\nAdd a source endpoint target to a translator.\n\nThe translator will \"translate\" all message sent to it. This method adds an endpoint which can send the translator data.\n\nArguments\n\ntrans: the Translator to modify\nept: The name of the endpoint which will send the endpoint data\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsTranslatorGetInfo-Tuple{HELICS.Translator}","page":"API","title":"HELICS.helicsTranslatorGetInfo","text":"helicsTranslatorGetInfo(trans::HELICS.Translator) -> String\n\n\nGet the data in the info field of a translator.\n\nArguments\n\ntrans: the Translator to get the info from.\n\nReturns\n\nthe info field string.\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsTranslatorGetName-Tuple{HELICS.Translator}","page":"API","title":"HELICS.helicsTranslatorGetName","text":"helicsTranslatorGetName(trans::HELICS.Translator) -> String\n\n\nGet the name of the translator and store in the given string.\n\nArguments\n\ntrans: the Translator to check\n\nReturns\n\na string with the name of the translator\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsTranslatorGetOption-Tuple{HELICS.Translator, Int64}","page":"API","title":"HELICS.helicsTranslatorGetOption","text":"helicsTranslatorGetOption(trans::HELICS.Translator, option::Int64) -> Int64\n\n\nGet a handle option for the translator.\n\nArguments\n\ntrans: the Translator to set the info field for.\noption: The option to query /ref HelicsHandleOptions.\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsTranslatorGetTag-Tuple{HELICS.Translator, String}","page":"API","title":"HELICS.helicsTranslatorGetTag","text":"helicsTranslatorGetTag(trans::HELICS.Translator, tagName::String) -> String\n\n\nGet the data in a specified tag of a translator.\n\nArguments\n\ntrans: the Translator to get the tag from.\n\n-tagName: The name of the tag to query.\n\nReturns\n\nthe string with the tag data.\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsTranslatorIsValid-Tuple{HELICS.Translator}","page":"API","title":"HELICS.helicsTranslatorIsValid","text":"helicsTranslatorIsValid(trans::HELICS.Translator) -> Bool\n\n\nCheck if a translator is valid.\n\nArguments\n\ntrans: the Translator to check\n\nReturns\n\ntrue if valid, false otherwise\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsTranslatorRemoveTarget-Tuple{HELICS.Translator, String}","page":"API","title":"HELICS.helicsTranslatorRemoveTarget","text":"helicsTranslatorRemoveTarget(trans::HELICS.Translator, target::String)\n\n\nRemove a target from a translator.\n\nArguments\n\ntrans: the Translator to modify\ntarget: The name of the interface to remove as a target.\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsTranslatorSet-Tuple{HELICS.Translator, String, Float64}","page":"API","title":"HELICS.helicsTranslatorSet","text":"helicsTranslatorSet(trans::HELICS.Translator, prop::String, val::Float64)\n\n\nSet a double property on a translator.\n\nArguments\n\ntrans: the Translator to modify\nprop: A string containing the property to set.\nval: A numerical value for the property.\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsTranslatorSetCustomCallback-Tuple{HELICS.Translator, Ptr{Nothing}, Ptr{Nothing}, Ptr{Nothing}}","page":"API","title":"HELICS.helicsTranslatorSetCustomCallback","text":"helicsTranslatorSetCustomCallback(translator::HELICS.Translator, toMessageCall::Ptr{Nothing}, toValueCall::Ptr{Nothing}, userdata::Ptr{Nothing})\n\n\nSet a general callback for a custom translator.\n\nAdd a pair of custom callbacks for running a translator operation in the C shared library.\n\nArguments\n\ntranslator: the Translator to set a callback for.\ntoMessageCall: A callback with signature void(DataBuffer, HelicsMessage, void *); The function arguments are raw Value data, the messageObject to fill out and a pointer to user data.\ntoValueCall: A callback with signature void(HelicsMessage, DataBuffer, void *);\n The function arguments are a message object, the data buffer to fill out and a pointer to user data.\nuserdata: a point to user data that is passed to the function when executing\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsTranslatorSetInfo-Tuple{HELICS.Translator, String}","page":"API","title":"HELICS.helicsTranslatorSetInfo","text":"helicsTranslatorSetInfo(trans::HELICS.Translator, info::String)\n\n\nSet the data in the info field for a translator.\n\nArguments\n\ntrans: the Translator to set the info field for.\ninfo: the string to set.\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsTranslatorSetOption-Tuple{HELICS.Translator, Int64, Int64}","page":"API","title":"HELICS.helicsTranslatorSetOption","text":"helicsTranslatorSetOption(trans::HELICS.Translator, option::Int64, value::Int64)\n\n\nSet an option value for a translator.\n\nArguments\n\ntrans: the Translator to set the option for\noption: The option to set /ref HelicsHandleOptions.\nvalue: The value of the option, commonly 0 for false or 1 for true.\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsTranslatorSetString-Tuple{HELICS.Translator, String, String}","page":"API","title":"HELICS.helicsTranslatorSetString","text":"helicsTranslatorSetString(trans::HELICS.Translator, prop::String, val::String)\n\n\nSet a string property on a translator.\n\nArguments\n\ntrans: the Translator to modify\nprop: A string containing the property to set.\nval: A string value for the property.\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsTranslatorSetTag-Tuple{HELICS.Translator, String, String}","page":"API","title":"HELICS.helicsTranslatorSetTag","text":"helicsTranslatorSetTag(trans::HELICS.Translator, tagName::String, tagValue::String)\n\n\nSet the data in a specific tag for a translator.\n\nArguments\n\ntrans: the Translator to set the tag for.\ntagName: the tag to set.\ntagValue: the string value to assocate with the tag.\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsVectorToBytes-Tuple{Vector{Float64}, HELICS.DataBuffer}","page":"API","title":"HELICS.helicsVectorToBytes","text":"helicsVectorToBytes(value::Vector{Float64}, data::HELICS.DataBuffer) -> Int32\n\n\nconvert a vector of doubles to serialized bytes\n\nArguments\n\nvalue: the vector of doubles to convert\ndata: the DataBuffer to hold the serialized bytes\n\nReturns\n\nInt32 Bytes serialized.\n\n\n\n\n\n","category":"method"},{"location":"api/#HELICS.helicsWrapDataInBuffer-Tuple{String}","page":"API","title":"HELICS.helicsWrapDataInBuffer","text":"helicsWrapDataInBuffer(data::String)\n\n\nWrap data in DataBuffer\n\nArguments\n\ndata: the data to place in a DataBuffer\n\nReturns\n\nDataBuffer\n\n\n\n\n\n","category":"method"},{"location":"api/#Types","page":"API","title":"Types","text":"","category":"section"},{"location":"api/","page":"API","title":"API","text":"Modules = [HELICS]\nFilter = t -> typeof(t) === DataType && !(t <: HELICS.Lib.CEnum.Cenum)","category":"page"},{"location":"api/#HELICS.Broker","page":"API","title":"HELICS.Broker","text":"Summary\n\nstruct HELICS.Broker <: HELICS.CWrapper\n\n\n\n\n\n","category":"type"},{"location":"api/#HELICS.CWrapper","page":"API","title":"HELICS.CWrapper","text":"Summary\n\nabstract type HELICS.CWrapper\n\n\n\n\n\n","category":"type"},{"location":"api/#HELICS.CallbackFederate","page":"API","title":"HELICS.CallbackFederate","text":"Summary\n\nstruct HELICS.CallbackFederate <: HELICS.Federate\n\n\n\n\n\n","category":"type"},{"location":"api/#HELICS.CombinationFederate","page":"API","title":"HELICS.CombinationFederate","text":"Summary\n\nstruct HELICS.CombinationFederate <: HELICS.Federate\n\n\n\n\n\n","category":"type"},{"location":"api/#HELICS.Core","page":"API","title":"HELICS.Core","text":"Summary\n\nstruct HELICS.Core <: HELICS.CWrapper\n\n\n\n\n\n","category":"type"},{"location":"api/#HELICS.DataBuffer","page":"API","title":"HELICS.DataBuffer","text":"Summary\n\nstruct HELICS.DataBuffer <: HELICS.CWrapper\n\n\n\n\n\n","category":"type"},{"location":"api/#HELICS.Endpoint","page":"API","title":"HELICS.Endpoint","text":"Summary\n\nstruct HELICS.Endpoint <: HELICS.CWrapper\n\n\n\n\n\n","category":"type"},{"location":"api/#HELICS.Federate","page":"API","title":"HELICS.Federate","text":"Summary\n\nabstract type HELICS.Federate <: HELICS.CWrapper\n\nSubtypes\n\nHELICS.CombinationFederate\nHELICS.MessageFederate\nHELICS.ValueFederate\n\nSupertype Hierarchy\n\nHELICS.Federate <: HELICS.CWrapper <: Any\n\n\n\n\n\n","category":"type"},{"location":"api/#HELICS.FederateInfo","page":"API","title":"HELICS.FederateInfo","text":"Summary\n\nstruct HELICS.FederateInfo <: HELICS.CWrapper\n\n\n\n\n\n","category":"type"},{"location":"api/#HELICS.Filter","page":"API","title":"HELICS.Filter","text":"Summary\n\nstruct HELICS.Filter <: HELICS.CWrapper\n\n\n\n\n\n","category":"type"},{"location":"api/#HELICS.Input","page":"API","title":"HELICS.Input","text":"Summary\n\nstruct HELICS.Input <: HELICS.CWrapper\n\n\n\n\n\n","category":"type"},{"location":"api/#HELICS.Message","page":"API","title":"HELICS.Message","text":"Summary\n\nstruct HELICS.Message <: HELICS.CWrapper\n\n\n\n\n\n","category":"type"},{"location":"api/#HELICS.MessageFederate","page":"API","title":"HELICS.MessageFederate","text":"Summary\n\nstruct HELICS.MessageFederate <: HELICS.Federate\n\n\n\n\n\n","category":"type"},{"location":"api/#HELICS.Publication","page":"API","title":"HELICS.Publication","text":"Summary\n\nstruct HELICS.Publication <: HELICS.CWrapper\n\n\n\n\n\n","category":"type"},{"location":"api/#HELICS.Query","page":"API","title":"HELICS.Query","text":"Summary\n\nstruct HELICS.Query <: HELICS.CWrapper\n\n\n\n\n\n","category":"type"},{"location":"api/#HELICS.QueryBuffer","page":"API","title":"HELICS.QueryBuffer","text":"Summary\n\nstruct HELICS.QueryBuffer <: HELICS.CWrapper\n\n\n\n\n\n","category":"type"},{"location":"api/#HELICS.Translator","page":"API","title":"HELICS.Translator","text":"Summary\n\nstruct HELICS.Translator <: HELICS.CWrapper\n\n\n\n\n\n","category":"type"},{"location":"api/#HELICS.ValueFederate","page":"API","title":"HELICS.ValueFederate","text":"Summary\n\nstruct HELICS.ValueFederate <: HELICS.Federate\n\n\n\n\n\n","category":"type"},{"location":"api/#Index","page":"API","title":"Index","text":"","category":"section"},{"location":"api/","page":"API","title":"API","text":"Pages = [\"api.md\"]","category":"page"},{"location":"#HELICS.jl","page":"Home","title":"HELICS.jl","text":"","category":"section"},{"location":"","page":"Home","title":"Home","text":"(Image: CI) (Image: Docs) (Image: Codecov) (Image: Coverage Status) (Image: Gitter) (Image: Releases)","category":"page"},{"location":"","page":"Home","title":"Home","text":"HELICS.jl is a cross-platform Julia wrapper around the HELICS library.","category":"page"},{"location":"","page":"Home","title":"Home","text":"This package is now available for Windows, Mac, and Linux.","category":"page"},{"location":"#Documentation","page":"Home","title":"Documentation","text":"","category":"section"},{"location":"","page":"Home","title":"Home","text":"The documentation for the development latest of this package is here.","category":"page"},{"location":"#Installation","page":"Home","title":"Installation","text":"","category":"section"},{"location":"","page":"Home","title":"Home","text":"Use the Julia package manager to install HELICS.jl","category":"page"},{"location":"","page":"Home","title":"Home","text":"julia> ]\n(v1.1)> add HELICS","category":"page"},{"location":"","page":"Home","title":"Home","text":"Open the package manager REPL (using ])","category":"page"},{"location":"","page":"Home","title":"Home","text":"To install the latest development version, use the following from within Julia:","category":"page"},{"location":"","page":"Home","title":"Home","text":"(v1.1) pkg> add HELICS#master","category":"page"},{"location":"","page":"Home","title":"Home","text":"This package includes HELICS as a library. You do not have to install HELICS separately.","category":"page"},{"location":"","page":"Home","title":"Home","text":"Note that this should work on 64-bit Windows, Mac and Linux systems.","category":"page"},{"location":"","page":"Home","title":"Home","text":"If you wish to develop HELICS.jl you may want to use the following:","category":"page"},{"location":"","page":"Home","title":"Home","text":"(v1.1) pkg> dev HELICS","category":"page"},{"location":"","page":"Home","title":"Home","text":"You can also get a specific version,","category":"page"},{"location":"","page":"Home","title":"Home","text":"(v1.1) pkg> add HELICS#33c98625","category":"page"},{"location":"","page":"Home","title":"Home","text":"or specific branch,","category":"page"},{"location":"","page":"Home","title":"Home","text":"(v1.1) pkg> add HELICS#kd/some-new-feature","category":"page"},{"location":"","page":"Home","title":"Home","text":"if these features haven't been merged to master yet.","category":"page"},{"location":"#Troubleshooting","page":"Home","title":"Troubleshooting","text":"","category":"section"},{"location":"","page":"Home","title":"Home","text":"This package interfaces with HELICS, so a good understanding of HELICS will help troubleshooting. There are plenty of useful resources located here.","category":"page"},{"location":"","page":"Home","title":"Home","text":"If you are having issues using this Julia interface, feel free to open an issue on GitHub here.","category":"page"},{"location":"#Acknowledgements","page":"Home","title":"Acknowledgements","text":"","category":"section"},{"location":"","page":"Home","title":"Home","text":"This work was initially developed as an extension to work done as part of the Scalable Integrated Infrastructure Planning (SIIP) initiative at the U.S. Department of Energy's National Renewable Energy Laboratory (NREL).","category":"page"},{"location":"#Release","page":"Home","title":"Release","text":"","category":"section"},{"location":"","page":"Home","title":"Home","text":"HELICS.jl is distributed under the terms of the BSD-3 clause license. All new contributions must be made under this license. LICENSE","category":"page"},{"location":"","page":"Home","title":"Home","text":"SPDX-License-Identifier: BSD-3-Clause","category":"page"},{"location":"terminology/#Terminology","page":"Terminology","title":"Terminology","text":"","category":"section"},{"location":"terminology/","page":"Terminology","title":"Terminology","text":"Illustration of a simple federation consisting of two federates.","category":"page"},{"location":"terminology/","page":"Terminology","title":"Terminology","text":" +--------------------+ +--------------------+\n | | | |\n | | | |\n | | | |\n | | | |\n | | | |\n | | | |\n | | | |\n | Federate - 1 | | Federate - 2 |\n | | | |\n | | | |\n | | | |\n | +-----------------+ +-----------------+ |\n | | | | | |\n | | | | | |\n | | helicsSharedLib | | helicsSharedLib | |\n | | | | | |\n | | | | | |\n | +---------------x-+ +-x---------------+ |\n | | ^ ^ | |\n +--------------------+ | | +--------------------+\n | |\n v v\n +--x---------x--+\n | |\n | |\n | helics-broker |\n | |\n | |\n +---------------+","category":"page"},{"location":"terminology/","page":"Terminology","title":"Terminology","text":"A federation, also called a co-simulation consists of multiple federates, or components, agents or actors. These federates exchange data at given points in time. HELICS manages time in a distributed fashion based on how the federation is configured during initialization. If you have a Julia program, and you wish to exchange data with another HELICS federate, you can create a Federate by calling the HELICS.helicsCreateCombinationFederate function. This federate must be provided with some information in order to set it up correctly. A FederateInfo object must be first created in order to set up a Federate. This FederateInfo object contains information about what type of communication core is used in HELICS (e.g. zmq, mpi, tcp, udp), the name of the Federate, where the Broker is located, etc. All Federates must connect to a Broker. A Broker is a separate process that can run on the same machine or a remote machine. You can start a Broker by running HELICS.helicsCreateBroker, or running helics_broker -f ${NUMBER_OF_FEDERATES} from the command line. Both creating a FederateInfo and Broker object can take some initialization options in the form of a initstring. See the examples folder for more information.","category":"page"},{"location":"terminology/","page":"Terminology","title":"Terminology","text":"After creating a Federate, you will want to create Publications and Subscriptions. The strings you choose for these publications and subscriptions must be unique, and they act like topics in a federation. You can send data in the form of values from a Publication to a Subscription. Additionally, you can register Endpoints as well, which allow you to send Messages. Messages can be filtered on by any Federate and can be used to model complex communication interactions.","category":"page"},{"location":"terminology/","page":"Terminology","title":"Terminology","text":"You can use functions like HELICS.helicsPublicationPublishDouble to send values at the \"current time\", and use functions like HELICS.helicsSubscriptionGetKey or HELICS.helicsInputGetDouble to receive values at the \"current time\". You can use functions like HELICS.helicsEndpointSendMessage to send messages at the \"current time\", and use functions like HELICS.helicsEndpointGetMessage functions to receive messages that arrived before the \"current time\".","category":"page"},{"location":"terminology/","page":"Terminology","title":"Terminology","text":"You can request to move to a time by using the HELICS.helicsFederateRequestTime function. This function returns a time back that you can safely move to. The time granted will always be less than or equal to the requested time. If you wish to move to the requested time, you may use a while loop until that the granted time is equal to the requested time.","category":"page"},{"location":"terminology/","page":"Terminology","title":"Terminology","text":"for t in 1:100\n\n requested_time = t\n while granted_time < requested_time\n granted_time = helicsFederateRequestTime(requested_time)\n end\n\n # granted_time here will be equal to requested time\n # Send or Receive data here\n\nend","category":"page"},{"location":"terminology/","page":"Terminology","title":"Terminology","text":"HELICS.helicsFederateRequestTime is a blocking call. There are other asynchronous request time functions available that allow you to do work while you wait for others to move forward in simulation time.","category":"page"},{"location":"terminology/","page":"Terminology","title":"Terminology","text":"helicsSharedLib is a shared library that is included in the Julia package. This C/C++ shared library interfaces with the broker in other to communicate with other federates.","category":"page"}] +} diff --git a/previews/PR33/siteinfo.js b/previews/PR33/siteinfo.js new file mode 100644 index 0000000..b14164d --- /dev/null +++ b/previews/PR33/siteinfo.js @@ -0,0 +1 @@ +var DOCUMENTER_CURRENT_VERSION = "previews/PR33"; diff --git a/previews/PR33/terminology/index.html b/previews/PR33/terminology/index.html new file mode 100644 index 0000000..9c1c06f --- /dev/null +++ b/previews/PR33/terminology/index.html @@ -0,0 +1,41 @@ + +Terminology · HELICS.jl

      Terminology

      Illustration of a simple federation consisting of two federates.

          +--------------------+               +--------------------+
      +    |                    |               |                    |
      +    |                    |               |                    |
      +    |                    |               |                    |
      +    |                    |               |                    |
      +    |                    |               |                    |
      +    |                    |               |                    |
      +    |                    |               |                    |
      +    |    Federate - 1    |               |    Federate - 2    |
      +    |                    |               |                    |
      +    |                    |               |                    |
      +    |                    |               |                    |
      +    |       +-----------------+     +-----------------+       |
      +    |       |                 |     |                 |       |
      +    |       |                 |     |                 |       |
      +    |       | helicsSharedLib |     | helicsSharedLib |       |
      +    |       |                 |     |                 |       |
      +    |       |                 |     |                 |       |
      +    |       +---------------x-+     +-x---------------+       |
      +    |                    |  ^         ^  |                    |
      +    +--------------------+  |         |  +--------------------+
      +                            |         |
      +                            v         v
      +                         +--x---------x--+
      +                         |               |
      +                         |               |
      +                         | helics-broker |
      +                         |               |
      +                         |               |
      +                         +---------------+

      A federation, also called a co-simulation consists of multiple federates, or components, agents or actors. These federates exchange data at given points in time. HELICS manages time in a distributed fashion based on how the federation is configured during initialization. If you have a Julia program, and you wish to exchange data with another HELICS federate, you can create a Federate by calling the HELICS.helicsCreateCombinationFederate function. This federate must be provided with some information in order to set it up correctly. A FederateInfo object must be first created in order to set up a Federate. This FederateInfo object contains information about what type of communication core is used in HELICS (e.g. zmq, mpi, tcp, udp), the name of the Federate, where the Broker is located, etc. All Federates must connect to a Broker. A Broker is a separate process that can run on the same machine or a remote machine. You can start a Broker by running HELICS.helicsCreateBroker, or running helics_broker -f ${NUMBER_OF_FEDERATES} from the command line. Both creating a FederateInfo and Broker object can take some initialization options in the form of a initstring. See the examples folder for more information.

      After creating a Federate, you will want to create Publications and Subscriptions. The strings you choose for these publications and subscriptions must be unique, and they act like topics in a federation. You can send data in the form of values from a Publication to a Subscription. Additionally, you can register Endpoints as well, which allow you to send Messages. Messages can be filtered on by any Federate and can be used to model complex communication interactions.

      You can use functions like HELICS.helicsPublicationPublishDouble to send values at the "current time", and use functions like HELICS.helicsSubscriptionGetKey or HELICS.helicsInputGetDouble to receive values at the "current time". You can use functions like HELICS.helicsEndpointSendMessage to send messages at the "current time", and use functions like HELICS.helicsEndpointGetMessage functions to receive messages that arrived before the "current time".

      You can request to move to a time by using the HELICS.helicsFederateRequestTime function. This function returns a time back that you can safely move to. The time granted will always be less than or equal to the requested time. If you wish to move to the requested time, you may use a while loop until that the granted time is equal to the requested time.

      for t in 1:100
      +
      +    requested_time = t
      +    while granted_time < requested_time
      +        granted_time = helicsFederateRequestTime(requested_time)
      +    end
      +
      +    # granted_time here will be equal to requested time
      +    # Send or Receive data here
      +
      +end

      HELICS.helicsFederateRequestTime is a blocking call. There are other asynchronous request time functions available that allow you to do work while you wait for others to move forward in simulation time.

      helicsSharedLib is a shared library that is included in the Julia package. This C/C++ shared library interfaces with the broker in other to communicate with other federates.