From 12997cd6865d2bf57f7c4b715e01c4a9692fef6e Mon Sep 17 00:00:00 2001 From: YongDo-Hyun Date: Thu, 2 Apr 2026 18:14:32 +0000 Subject: deploy: 4d4efac796f3c1f355de8d925daa26b69263abd3 --- .nojekyll | 0 annotated.html | 166 + badge-TOML.svg | 1 + badge-awesome.svg | 1 + badge-gitter.svg | 1 + banner.svg | 1 + classtoml_1_1array.html | 1764 ++++ classtoml_1_1json__formatter.html | 255 + classtoml_1_1key.html | 381 + classtoml_1_1node.html | 1027 +++ classtoml_1_1node__view.html | 945 ++ classtoml_1_1parse__error.html | 210 + classtoml_1_1parse__result.html | 544 ++ classtoml_1_1path.html | 648 ++ classtoml_1_1path__component.html | 263 + classtoml_1_1table.html | 2153 +++++ classtoml_1_1toml__formatter.html | 247 + classtoml_1_1value.html | 1055 +++ classtoml_1_1yaml__formatter.html | 247 + concepts.html | 141 + favicon.ico | Bin 0 -> 1150 bytes files.html | 141 + group__configuration.html | 371 + index.html | 436 + logo.svg | 15 + modules.html | 142 + namespaces.html | 147 + namespacetoml.html | 1313 +++ namespacetoml_1_1literals.html | 267 + pages.html | 142 + .../6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7jsDJT9g.woff2 | Bin 0 -> 1068 bytes .../6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7ksDJT9g.woff2 | Bin 0 -> 1236 bytes .../6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDI.woff2 | Bin 0 -> 14180 bytes .../6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7osDJT9g.woff2 | Bin 0 -> 5836 bytes .../6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7psDJT9g.woff2 | Bin 0 -> 21796 bytes .../6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7qsDJT9g.woff2 | Bin 0 -> 1068 bytes .../6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7rsDJT9g.woff2 | Bin 0 -> 928 bytes .../6xK3dSBYKcSV-LCoeQqfX1RYOo3qN67lqDY.woff2 | Bin 0 -> 5840 bytes .../6xK3dSBYKcSV-LCoeQqfX1RYOo3qNK7lqDY.woff2 | Bin 0 -> 6032 bytes .../6xK3dSBYKcSV-LCoeQqfX1RYOo3qNa7lqDY.woff2 | Bin 0 -> 5036 bytes .../6xK3dSBYKcSV-LCoeQqfX1RYOo3qNq7lqDY.woff2 | Bin 0 -> 23124 bytes .../6xK3dSBYKcSV-LCoeQqfX1RYOo3qO67lqDY.woff2 | Bin 0 -> 7048 bytes poxy/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2 | Bin 0 -> 14868 bytes .../6xK3dSBYKcSV-LCoeQqfX1RYOo3qPK7lqDY.woff2 | Bin 0 -> 8044 bytes ...xKwdSBYKcSV-LCoeQqfX1RYOo3qPZY4lCdg18Smxg.woff2 | Bin 0 -> 932 bytes ...xKwdSBYKcSV-LCoeQqfX1RYOo3qPZY4lCdh18Smxg.woff2 | Bin 0 -> 1068 bytes ...xKwdSBYKcSV-LCoeQqfX1RYOo3qPZY4lCdi18Smxg.woff2 | Bin 0 -> 21952 bytes ...xKwdSBYKcSV-LCoeQqfX1RYOo3qPZY4lCdj18Smxg.woff2 | Bin 0 -> 5856 bytes ...xKwdSBYKcSV-LCoeQqfX1RYOo3qPZY4lCdo18Smxg.woff2 | Bin 0 -> 1072 bytes .../6xKwdSBYKcSV-LCoeQqfX1RYOo3qPZY4lCds18Q.woff2 | Bin 0 -> 14172 bytes ...xKwdSBYKcSV-LCoeQqfX1RYOo3qPZY4lCdv18Smxg.woff2 | Bin 0 -> 1264 bytes .../6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwkxduz8A.woff2 | Bin 0 -> 8024 bytes .../6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlBduz8A.woff2 | Bin 0 -> 7068 bytes .../6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlxdu.woff2 | Bin 0 -> 14876 bytes .../6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwmBduz8A.woff2 | Bin 0 -> 5852 bytes .../6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwmRduz8A.woff2 | Bin 0 -> 23112 bytes .../6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwmhduz8A.woff2 | Bin 0 -> 5044 bytes .../6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwmxduz8A.woff2 | Bin 0 -> 5992 bytes ..._SiYsKILxRpg3hIP6sJ7fM7PqlM-vWnsMnx0C9NAU.woff2 | Bin 0 -> 33572 bytes ..._SiYsKILxRpg3hIP6sJ7fM7PqlMOvWnsMnx0C9NAU.woff2 | Bin 0 -> 8700 bytes ..._SiYsKILxRpg3hIP6sJ7fM7PqlMevWnsMnx0C9NAU.woff2 | Bin 0 -> 3112 bytes ..._SiYsKILxRpg3hIP6sJ7fM7PqlMuvWnsMnx0C9NAU.woff2 | Bin 0 -> 8128 bytes ..._SiYsKILxRpg3hIP6sJ7fM7PqlOevWnsMnx0C9NAU.woff2 | Bin 0 -> 14108 bytes .../HI_SiYsKILxRpg3hIP6sJ7fM7PqlPevWnsMnx0C9.woff2 | Bin 0 -> 21960 bytes ..._SiYsKILxRpg3hIP6sJ7fM7PqlPuvWnsMnx0C9NAU.woff2 | Bin 0 -> 10664 bytes ...3hIP6sJ7fM7PqlOPHYvDP_W9O7GQTTbI1bQ10YVJg.woff2 | Bin 0 -> 1092 bytes ...3hIP6sJ7fM7PqlOPHYvDP_W9O7GQTTbI1bQF0YVJg.woff2 | Bin 0 -> 18256 bytes ...3hIP6sJ7fM7PqlOPHYvDP_W9O7GQTTbI1bQV0YVJg.woff2 | Bin 0 -> 4828 bytes ...3hIP6sJ7fM7PqlOPHYvDP_W9O7GQTTbI1bQl0YVJg.woff2 | Bin 0 -> 960 bytes ...3hIP6sJ7fM7PqlOPHYvDP_W9O7GQTTbI1bSl0YVJg.woff2 | Bin 0 -> 1304 bytes ...3hIP6sJ7fM7PqlOPHYvDP_W9O7GQTTbI1bTV0YVJg.woff2 | Bin 0 -> 1052 bytes ...Rpg3hIP6sJ7fM7PqlOPHYvDP_W9O7GQTTbI1bTl0Y.woff2 | Bin 0 -> 12012 bytes poxy/poxy-badge-c++17.svg | 1 + poxy/poxy-badge-license-mit.svg | 1 + poxy/poxy-icon-email.svg | 9 + poxy/poxy-icon-github.svg | 3 + poxy/poxy-icon-gitlab.svg | 3 + poxy/poxy-icon-sponsor.svg | 6 + poxy/poxy-icon-theme.svg | 12 + poxy/poxy-icon-twitter.svg | 5 + poxy/poxy.css | 2857 ++++++ poxy/poxy.js | 62 + poxy_changelog.html | 160 + search-v2.js | 898 ++ searchdata-v2.js | 2 + structtoml_1_1date.html | 220 + structtoml_1_1date__time.html | 342 + structtoml_1_1inserter.html | 133 + structtoml_1_1source__position.html | 258 + structtoml_1_1source__region.html | 237 + structtoml_1_1time.html | 226 + structtoml_1_1time__offset.html | 266 + toml++.tagfile.xml | 9199 ++++++++++++++++++++ 93 files changed, 27924 insertions(+) create mode 100644 .nojekyll create mode 100644 annotated.html create mode 100644 badge-TOML.svg create mode 100644 badge-awesome.svg create mode 100644 badge-gitter.svg create mode 100644 banner.svg create mode 100644 classtoml_1_1array.html create mode 100644 classtoml_1_1json__formatter.html create mode 100644 classtoml_1_1key.html create mode 100644 classtoml_1_1node.html create mode 100644 classtoml_1_1node__view.html create mode 100644 classtoml_1_1parse__error.html create mode 100644 classtoml_1_1parse__result.html create mode 100644 classtoml_1_1path.html create mode 100644 classtoml_1_1path__component.html create mode 100644 classtoml_1_1table.html create mode 100644 classtoml_1_1toml__formatter.html create mode 100644 classtoml_1_1value.html create mode 100644 classtoml_1_1yaml__formatter.html create mode 100644 concepts.html create mode 100644 favicon.ico create mode 100644 files.html create mode 100644 group__configuration.html create mode 100644 index.html create mode 100644 logo.svg create mode 100644 modules.html create mode 100644 namespaces.html create mode 100644 namespacetoml.html create mode 100644 namespacetoml_1_1literals.html create mode 100644 pages.html create mode 100644 poxy/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7jsDJT9g.woff2 create mode 100644 poxy/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7ksDJT9g.woff2 create mode 100644 poxy/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDI.woff2 create mode 100644 poxy/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7osDJT9g.woff2 create mode 100644 poxy/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7psDJT9g.woff2 create mode 100644 poxy/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7qsDJT9g.woff2 create mode 100644 poxy/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7rsDJT9g.woff2 create mode 100644 poxy/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qN67lqDY.woff2 create mode 100644 poxy/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qNK7lqDY.woff2 create mode 100644 poxy/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qNa7lqDY.woff2 create mode 100644 poxy/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qNq7lqDY.woff2 create mode 100644 poxy/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qO67lqDY.woff2 create mode 100644 poxy/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2 create mode 100644 poxy/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qPK7lqDY.woff2 create mode 100644 poxy/fonts/6xKwdSBYKcSV-LCoeQqfX1RYOo3qPZY4lCdg18Smxg.woff2 create mode 100644 poxy/fonts/6xKwdSBYKcSV-LCoeQqfX1RYOo3qPZY4lCdh18Smxg.woff2 create mode 100644 poxy/fonts/6xKwdSBYKcSV-LCoeQqfX1RYOo3qPZY4lCdi18Smxg.woff2 create mode 100644 poxy/fonts/6xKwdSBYKcSV-LCoeQqfX1RYOo3qPZY4lCdj18Smxg.woff2 create mode 100644 poxy/fonts/6xKwdSBYKcSV-LCoeQqfX1RYOo3qPZY4lCdo18Smxg.woff2 create mode 100644 poxy/fonts/6xKwdSBYKcSV-LCoeQqfX1RYOo3qPZY4lCds18Q.woff2 create mode 100644 poxy/fonts/6xKwdSBYKcSV-LCoeQqfX1RYOo3qPZY4lCdv18Smxg.woff2 create mode 100644 poxy/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwkxduz8A.woff2 create mode 100644 poxy/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlBduz8A.woff2 create mode 100644 poxy/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlxdu.woff2 create mode 100644 poxy/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwmBduz8A.woff2 create mode 100644 poxy/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwmRduz8A.woff2 create mode 100644 poxy/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwmhduz8A.woff2 create mode 100644 poxy/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwmxduz8A.woff2 create mode 100644 poxy/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlM-vWnsMnx0C9NAU.woff2 create mode 100644 poxy/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlMOvWnsMnx0C9NAU.woff2 create mode 100644 poxy/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlMevWnsMnx0C9NAU.woff2 create mode 100644 poxy/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlMuvWnsMnx0C9NAU.woff2 create mode 100644 poxy/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlOevWnsMnx0C9NAU.woff2 create mode 100644 poxy/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlPevWnsMnx0C9.woff2 create mode 100644 poxy/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlPuvWnsMnx0C9NAU.woff2 create mode 100644 poxy/fonts/HI_jiYsKILxRpg3hIP6sJ7fM7PqlOPHYvDP_W9O7GQTTbI1bQ10YVJg.woff2 create mode 100644 poxy/fonts/HI_jiYsKILxRpg3hIP6sJ7fM7PqlOPHYvDP_W9O7GQTTbI1bQF0YVJg.woff2 create mode 100644 poxy/fonts/HI_jiYsKILxRpg3hIP6sJ7fM7PqlOPHYvDP_W9O7GQTTbI1bQV0YVJg.woff2 create mode 100644 poxy/fonts/HI_jiYsKILxRpg3hIP6sJ7fM7PqlOPHYvDP_W9O7GQTTbI1bQl0YVJg.woff2 create mode 100644 poxy/fonts/HI_jiYsKILxRpg3hIP6sJ7fM7PqlOPHYvDP_W9O7GQTTbI1bSl0YVJg.woff2 create mode 100644 poxy/fonts/HI_jiYsKILxRpg3hIP6sJ7fM7PqlOPHYvDP_W9O7GQTTbI1bTV0YVJg.woff2 create mode 100644 poxy/fonts/HI_jiYsKILxRpg3hIP6sJ7fM7PqlOPHYvDP_W9O7GQTTbI1bTl0Y.woff2 create mode 100644 poxy/poxy-badge-c++17.svg create mode 100644 poxy/poxy-badge-license-mit.svg create mode 100644 poxy/poxy-icon-email.svg create mode 100644 poxy/poxy-icon-github.svg create mode 100644 poxy/poxy-icon-gitlab.svg create mode 100644 poxy/poxy-icon-sponsor.svg create mode 100644 poxy/poxy-icon-theme.svg create mode 100644 poxy/poxy-icon-twitter.svg create mode 100644 poxy/poxy.css create mode 100644 poxy/poxy.js create mode 100644 poxy_changelog.html create mode 100644 search-v2.js create mode 100644 searchdata-v2.js create mode 100644 structtoml_1_1date.html create mode 100644 structtoml_1_1date__time.html create mode 100644 structtoml_1_1inserter.html create mode 100644 structtoml_1_1source__position.html create mode 100644 structtoml_1_1source__region.html create mode 100644 structtoml_1_1time.html create mode 100644 structtoml_1_1time__offset.html create mode 100644 toml++.tagfile.xml diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000000..e69de29bb2 diff --git a/annotated.html b/annotated.html new file mode 100644 index 0000000000..da643bb9a0 --- /dev/null +++ b/annotated.html @@ -0,0 +1,166 @@ + + + + toml++ TOML for C++ + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Classes

+
    +
  • + namespace toml The root namespace for all toml++ functions and types. +
      +
    • class array A TOML array.
    • +
    • struct date A local date.
    • +
    • struct date_time A date-time.
    • +
    • struct inserter Helper class for suppressing move-construction in single-argument array constructors.
    • +
    • class json_formatter A wrapper for printing TOML objects out to a stream as formatted JSON.
    • +
    • class key A key parsed from a TOML document.
    • +
    • class node A TOML node.
    • +
    • class node_view A view of a node.
    • +
    • class parse_error An error generated when parsing fails.
    • +
    • class parse_result The result of a parsing operation.
    • +
    • class path A TOML path.
    • +
    • class path_component Represents a single component of a complete 'TOML-path': either a key or an array index.
    • +
    • struct source_position A source document line-and-column pair.
    • +
    • struct source_region A source document region.
    • +
    • class table A TOML table.
    • +
    • struct time A local time-of-day.
    • +
    • struct time_offset A timezone offset.
    • +
    • class toml_formatter A wrapper for printing TOML objects out to a stream as formatted TOML.
    • +
    • class value A TOML value.
    • +
    • class yaml_formatter A wrapper for printing TOML objects out to a stream as formatted YAML.
    • +
    +
  • +
+ +
+
+
+
+ + + + + + + \ No newline at end of file diff --git a/badge-TOML.svg b/badge-TOML.svg new file mode 100644 index 0000000000..01db3c410e --- /dev/null +++ b/badge-TOML.svg @@ -0,0 +1 @@ +TOML: v1.0.0TOMLv1.0.0 \ No newline at end of file diff --git a/badge-awesome.svg b/badge-awesome.svg new file mode 100644 index 0000000000..5d9da96924 --- /dev/null +++ b/badge-awesome.svg @@ -0,0 +1 @@ +Mentioned in an Awesome list diff --git a/badge-gitter.svg b/badge-gitter.svg new file mode 100644 index 0000000000..08a4223646 --- /dev/null +++ b/badge-gitter.svg @@ -0,0 +1 @@ +chat: on gitterchaton gitter \ No newline at end of file diff --git a/banner.svg b/banner.svg new file mode 100644 index 0000000000..b12d4d11f5 --- /dev/null +++ b/banner.svg @@ -0,0 +1 @@ +banner diff --git a/classtoml_1_1array.html b/classtoml_1_1array.html new file mode 100644 index 0000000000..6b923a558e --- /dev/null +++ b/classtoml_1_1array.html @@ -0,0 +1,1764 @@ + + + + toml::array class | toml++ TOML for C++ + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ toml::array class +

+

A TOML array.

+ +

The interface of this type is modeled after std::vector, with some additional considerations made for the heterogeneous nature of a TOML array.

Try this code on Compiler Explorer

toml::table tbl = toml::parse(R"( + arr = [1, 2, 3, 4, 'five'] +)"sv); + +// get the element as an array +toml::array& arr = *tbl.get_as<toml::array>("arr"); +std::cout << arr << "\n"; + +// increment each element with visit() +for (auto&& elem : arr) +{ + elem.visit([](auto&& el) noexcept + { + if constexpr (toml::is_number<decltype(el)>) + (*el)++; + else if constexpr (toml::is_string<decltype(el)>) + el = "six"sv; + }); +} +std::cout << arr << "\n"; + +// add and remove elements +arr.push_back(7); +arr.push_back(8.0f); +arr.push_back("nine"sv); +arr.erase(arr.cbegin()); +std::cout << arr << "\n"; + +// emplace elements +arr.emplace_back("ten"); +arr.emplace_back<toml::array>(11, 12.0); +std::cout << arr << "\n";
[ 1, 2, 3, 4, 'five' ]
+[ 2, 3, 4, 5, 'six' ]
+[ 3, 4, 5, 'six', 7, 8.0, 'nine' ]
+[ 3, 4, 5, 'six', 7, 8.0, 'nine', 'ten', [ 11, 12.0 ] ]
+
+

Base classes

+
+
+ class node +
+
A TOML node.
+
+
+
+

Constructors, destructors, conversion operators

+
+
+ array() noexcept +
+
Default constructor.
+
+ array(const array&) +
+
Copy constructor.
+
+ array(array&& other) noexcept +
+
Move constructor.
+
+
template <typename ElemType, typename... ElemTypes>
+ array(ElemType&& val, + ElemTypes && ... vals) explicit +
+
Constructs an array with one or more initial elements.
+
+
+
+

Public functions

+
+
+ auto operator=(const array&) →  array& +
+
Copy-assignment operator.
+
+ auto operator=(array&& rhs) →  array& noexcept +
+
Move-assignment operator.
+
+
+
+

Equality

+
+
+ auto operator!=(const array& lhs, + const array& rhs) →  bool noexcept +
+
Inequality operator.
+
+ auto operator==(const array& lhs, + const array& rhs) →  bool noexcept +
+
Equality operator.
+
+
template <typename T>
+ auto operator==(const array& lhs, + const std::initializer_list<T>& rhs) →  bool noexcept +
+
Initializer list equality operator.
+
+
template <typename T>
+ auto operator==(const array& lhs, + const std::vector<T>& rhs) →  bool noexcept +
+
Vector equality operator.
+
+
+
+

Erasure

+
+
+ void clear() noexcept +
+
Removes all elements from the array.
+
+ auto erase(const_iterator pos) →  iterator noexcept +
+
Removes the specified element from the array.
+
+ auto erase(const_iterator first, + const_iterator last) →  iterator noexcept +
+
Removes the elements in the range [first, last) from the array.
+
+ auto flatten() & →  array& +
+
Flattens this array, recursively hoisting the contents of child arrays up into itself.
+
+ auto flatten() && →  array&& +
+
Flattens this array, recursively hoisting the contents of child arrays up into itself (rvalue overload).
+
+ void pop_back() noexcept +
+
Removes the last element from the array.
+
+ auto prune(bool recursive = true) & →  array& noexcept +
+
Removes empty child arrays and tables.
+
+ auto prune(bool recursive = true) && →  array&& noexcept +
+
Removes empty child arrays and tables (rvalue overload).
+
+
+
+

Insertion and Emplacement

+
+
+
template <typename ElemType = void, typename... Args>
+ auto emplace(const_iterator pos, + Args && ... args) →  iterator +
+
Emplaces a new element at a specific position in the array.
+
+
template <typename ElemType = void, typename... Args>
+ auto emplace_back(Args && ... args) →  decltype(auto) +
+
Emplaces a new element at the end of the array.
+
+
template <typename ElemType>
+ auto insert(const_iterator pos, + ElemType&& val, + value_flags flags = preserve_source_value_flags) →  iterator +
+
Inserts a new element at a specific position in the array.
+
+
template <typename ElemType>
+ auto insert(const_iterator pos, + size_t count, + ElemType&& val, + value_flags flags = preserve_source_value_flags) →  iterator +
+
Repeatedly inserts a new element starting at a specific position in the array.
+
+
template <typename Iter>
+ auto insert(const_iterator pos, + Iter first, + Iter last, + value_flags flags = preserve_source_value_flags) →  iterator +
+
Inserts a range of elements into the array at a specific position.
+
+
template <typename ElemType>
+ auto insert(const_iterator pos, + std::initializer_list<ElemType> ilist, + value_flags flags = preserve_source_value_flags) →  iterator +
+
Inserts a range of elements into the array at a specific position.
+
+
template <typename ElemType>
+ void push_back(ElemType&& val, + value_flags flags = preserve_source_value_flags) +
+
Appends a new element to the end of the array.
+
+
template <typename ElemType>
+ auto replace(const_iterator pos, + ElemType&& val, + value_flags flags = preserve_source_value_flags) →  iterator +
+
Replaces the element at a specific position in the array with a different value.
+
+
+
+

Iteration

+
+
+ using const_iterator = const_array_iterator +
+
A RandomAccessIterator for iterating over const elements in a toml::array.
+
+ using iterator = array_iterator +
+
A RandomAccessIterator for iterating over elements in a toml::array.
+
+ auto begin() →  iterator noexcept +
+
Returns an iterator to the first element.
+
+ auto begin() const →  const_iterator noexcept +
+
Returns an iterator to the first element.
+
+ auto cbegin() const →  const_iterator noexcept +
+
Returns an iterator to the first element.
+
+ auto cend() const →  const_iterator noexcept +
+
Returns an iterator to one-past-the-last element.
+
+ auto end() →  iterator noexcept +
+
Returns an iterator to one-past-the-last element.
+
+ auto end() const →  const_iterator noexcept +
+
Returns an iterator to one-past-the-last element.
+
+
template <typename Func>
+ auto for_each(Func&& visitor) & →  array& noexcept(…) +
+
Invokes a visitor on each element in the array.
+
+
template <typename Func>
+ auto for_each(Func&& visitor) && →  array&& noexcept(…) +
+
Invokes a visitor on each element in the array (rvalue overload).
+
+
template <typename Func>
+ auto for_each(Func&& visitor) const & →  const array& noexcept(…) +
+
Invokes a visitor on each element in the array (const lvalue overload).
+
+
template <typename Func>
+ auto for_each(Func&& visitor) const && →  const array&& noexcept(…) +
+
Invokes a visitor on each element in the array (const rvalue overload).
+
+
+
+

Metadata

+
+
+ auto source() const →  const source_region& noexcept +
+
Returns the source region responsible for generating this node during parsing.
+
+
+
+

Node views

+
+
+ auto at_path(std::string_view path) →  node_view<node> noexcept +
+
Returns a view of the subnode matching a fully-qualified "TOML path".
+
+ auto at_path(std::string_view path) const →  node_view<const node> noexcept +
+
Returns a const view of the subnode matching a fully-qualified "TOML path".
+
+ auto at_path(const toml::path& path) →  node_view<node> noexcept +
+
Returns a view of the subnode matching a fully-qualified "TOML path".
+
+ auto at_path(const toml::path& path) const →  node_view<const node> noexcept +
+
Returns a const view of the subnode matching a fully-qualified "TOML path".
+
+ auto at_path(std::wstring_view path) →  node_view<node> +
+
Returns a view of the subnode matching a fully-qualified "TOML path".
+
+ auto at_path(std::wstring_view path) const →  node_view<const node> +
+
Returns a const view of the subnode matching a fully-qualified "TOML path".
+
+ operator node_view<const node>() const explicit noexcept +
+
Creates a node_view pointing to this node (const overload).
+
+ operator node_view<node>() explicit noexcept +
+
Creates a node_view pointing to this node.
+
+ auto operator[](const toml::path& path) →  node_view<node> noexcept +
+
Returns a const view of the subnode matching a fully-qualified "TOML path".
+
+ auto operator[](const toml::path& path) const →  node_view<const node> noexcept +
+
Returns a const view of the subnode matching a fully-qualified "TOML path".
+
+
+
+

Size and Capacity

+
+
+ auto capacity() const →  size_t noexcept +
+
Returns the current max number of elements that may be held in the array's internal storage.
+
+ auto empty() const →  bool noexcept +
+
Returns true if the array is empty.
+
+ auto max_size() const →  size_t noexcept +
+
Returns the maximum number of elements that can be stored in an array on the current platform.
+
+ void reserve(size_t new_capacity) +
+
Reserves internal storage capacity up to a pre-determined number of elements.
+
+
template <typename ElemType>
+ void resize(size_t new_size, + ElemType&& default_init_val, + value_flags default_init_flags = preserve_source_value_flags) +
+
Resizes the array.
+
+ void shrink_to_fit() +
+
Requests the removal of any unused internal storage capacity.
+
+ auto size() const →  size_t noexcept +
+
Returns the number of elements in the array.
+
+ void truncate(size_t new_size) +
+
Shrinks the array to the given size.
+
+
+
+

Type casts

+
+
+
template <typename T>
+ auto as() →  impl::wrap_node<T>* noexcept +
+
Gets a pointer to the node as a more specific node type.
+
+
template <typename T>
+ auto as() const →  const impl::wrap_node<T>* noexcept +
+
Gets a pointer to the node as a more specific node type (const overload).
+
+ auto as_array() →  array* final noexcept +
+
Returns a pointer to the array.
+
+ auto as_array() const →  const array* final noexcept +
+
Returns a const-qualified pointer to the array.
+
+ auto as_boolean() →  toml::value<bool>* final noexcept +
+
Returns nullptr.
+
+ auto as_boolean() const →  const toml::value<bool>* final noexcept +
+
Returns nullptr.
+
+ auto as_date() →  toml::value<date>* final noexcept +
+
Returns nullptr.
+
+ auto as_date() const →  const toml::value<date>* final noexcept +
+
Returns nullptr.
+
+ auto as_date_time() →  toml::value<date_time>* final noexcept +
+
Returns nullptr.
+
+ auto as_date_time() const →  const toml::value<date_time>* final noexcept +
+
Returns nullptr.
+
+ auto as_floating_point() →  toml::value<double>* final noexcept +
+
Returns nullptr.
+
+ auto as_floating_point() const →  const toml::value<double>* final noexcept +
+
Returns nullptr.
+
+ auto as_integer() →  toml::value<int64_t>* final noexcept +
+
Returns nullptr.
+
+ auto as_integer() const →  const toml::value<int64_t>* final noexcept +
+
Returns nullptr.
+
+ auto as_string() →  toml::value<std::string>* final noexcept +
+
Returns nullptr.
+
+ auto as_string() const →  const toml::value<std::string>* final noexcept +
+
Returns nullptr.
+
+ auto as_table() →  table* final noexcept +
+
Returns nullptr.
+
+ auto as_table() const →  const table* final noexcept +
+
Returns nullptr.
+
+ auto as_time() →  toml::value<time>* final noexcept +
+
Returns nullptr.
+
+ auto as_time() const →  const toml::value<time>* final noexcept +
+
Returns nullptr.
+
+
+
+

Type checks

+
+
+
template <typename T>
+ auto is() const →  bool noexcept +
+
Checks if a node is a specific type.
+
+ auto is_array() const →  bool final noexcept +
+
Returns true.
+
+ auto is_array_of_tables() const →  bool final noexcept +
+
Returns true if the array contains only tables.
+
+ auto is_boolean() const →  bool final noexcept +
+
Returns false.
+
+ auto is_date() const →  bool final noexcept +
+
Returns false.
+
+ auto is_date_time() const →  bool final noexcept +
+
Returns false.
+
+ auto is_floating_point() const →  bool final noexcept +
+
Returns false.
+
+ auto is_homogeneous(node_type ntype) const →  bool final noexcept +
+
Checks if the node contains values/elements of only one type.
+
+ auto is_homogeneous(node_type ntype, + node*& first_nonmatch) →  bool final noexcept +
+
Checks if a node contains values/elements of only one type.
+
+ auto is_homogeneous(node_type ntype, + const node*& first_nonmatch) const →  bool final noexcept +
+
Checks if a node contains values/elements of only one type (const overload).
+
+
template <typename ElemType = void>
+ auto is_homogeneous() const →  bool noexcept +
+
Checks if the node contains values/elements of only one type.
+
+ auto is_integer() const →  bool final noexcept +
+
Returns false.
+
+ auto is_number() const →  bool final noexcept +
+
Returns false.
+
+ auto is_string() const →  bool final noexcept +
+
Returns false.
+
+ auto is_table() const →  bool final noexcept +
+
Returns false.
+
+ auto is_time() const →  bool final noexcept +
+
Returns false.
+
+ auto is_value() const →  bool final noexcept +
+
Returns false.
+
+ auto type() const →  node_type final noexcept +
+
Returns toml::node_type::array.
+
+
+
+

Value retrieval

+
+
+ auto at(size_t index) →  node& +
+
Gets a reference to the element at a specific index, throwing std::out_of_range if none existed.
+
+ auto at(size_t index) const →  const node& +
+
Gets a reference to the element at a specific index, throwing std::out_of_range if none existed.
+
+ auto back() →  node& noexcept +
+
Returns a reference to the last element in the array.
+
+ auto back() const →  const node& noexcept +
+
Returns a reference to the last element in the array.
+
+ auto front() →  node& noexcept +
+
Returns a reference to the first element in the array.
+
+ auto front() const →  const node& noexcept +
+
Returns a reference to the first element in the array.
+
+ auto get(size_t index) →  node* noexcept +
+
Gets a pointer to the element at a specific index.
+
+ auto get(size_t index) const →  const node* noexcept +
+
Gets a pointer to the element at a specific index (const overload).
+
+
template <typename ElemType>
+ auto get_as(size_t index) →  impl::wrap_node<ElemType>* noexcept +
+
Gets a pointer to the element at a specific index if it is a particular type.
+
+
template <typename ElemType>
+ auto get_as(size_t index) const →  const impl::wrap_node<ElemType>* noexcept +
+
Gets a pointer to the element at a specific index if it is a particular type (const overload).
+
+ auto operator[](size_t index) →  node& noexcept +
+
Gets a reference to the element at a specific index.
+
+ auto operator[](size_t index) const →  const node& noexcept +
+
Gets a reference to the element at a specific index.
+
+
template <typename T>
+ auto ref() & →  decltype(auto) noexcept +
+
Gets a raw reference to a node's underlying data.
+
+
template <typename T>
+ auto ref() && →  decltype(auto) noexcept +
+
Gets a raw reference to a node's underlying data (rvalue overload).
+
+
template <typename T>
+ auto ref() const & →  decltype(auto) noexcept +
+
Gets a raw reference to a node's underlying data (const lvalue overload).
+
+
template <typename T>
+ auto ref() const && →  decltype(auto) noexcept +
+
Gets a raw reference to a node's underlying data (const rvalue overload).
+
+
template <typename T>
+ auto value() const →  optional<T> noexcept(…) +
+
Gets the value contained by this node.
+
+
template <typename T>
+ auto value_exact() const →  optional<T> noexcept(…) +
+
Gets the value contained by this node.
+
+
template <typename T>
+ auto value_or(T&& default_value) const →  auto noexcept(…) +
+
Gets the raw value contained by this node, or a default.
+
+
+
+

Visitation

+
+
+
template <typename Func>
+ auto visit(Func&& visitor) & →  decltype(auto) noexcept(…) +
+
Invokes a visitor on the node based on the node's concrete type.
+
+
template <typename Func>
+ auto visit(Func&& visitor) && →  decltype(auto) noexcept(…) +
+
Invokes a visitor on the node based on the node's concrete type (rvalue overload).
+
+
template <typename Func>
+ auto visit(Func&& visitor) const & →  decltype(auto) noexcept(…) +
+
Invokes a visitor on the node based on the node's concrete type (const lvalue overload).
+
+
template <typename Func>
+ auto visit(Func&& visitor) const && →  decltype(auto) noexcept(…) +
+
Invokes a visitor on the node based on the node's concrete type (const rvalue overload).
+
+
+
+

Friends

+
+
+ auto operator<<(std::ostream& lhs, + const array& rhs) →  std::ostream& +
+
Prints the array out to a stream as formatted TOML.
+
+
+
+

Function documentation

+
+

+
+ template <typename ElemType, typename... ElemTypes> +
+ toml::array::array(ElemType&& val, + ElemTypes && ... vals) explicit +

+

Constructs an array with one or more initial elements.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Template parameters
ElemTypeOne of the TOML node or value types (or a type promotable to one).
ElemTypesOne of the TOML node or value types (or a type promotable to one).
Parameters
valThe node or value used to initialize element 0.
valsThe nodes or values used to initialize elements 1...N.
+
auto arr = toml::array{ 1, 2.0, "three"sv, toml::array{ 4, 5 } };
+std::cout << arr << "\n";
[ 1, 2.0, 'three', [ 4, 5 ] ]
+
+
+

+ bool toml::array::operator!=(const array& lhs, + const array& rhs) noexcept +

+

Inequality operator.

+ + + + + + + + + + + + + + + + + + + + +
Parameters
lhsThe LHS array.
rhsThe RHS array.
ReturnsTrue if the arrays did not contain the same elements.
+
+
+

+ bool toml::array::operator==(const array& lhs, + const array& rhs) noexcept +

+

Equality operator.

+ + + + + + + + + + + + + + + + + + + + +
Parameters
lhsThe LHS array.
rhsThe RHS array.
ReturnsTrue if the arrays contained the same elements.
+
+
+

+ iterator toml::array::erase(const_iterator pos) noexcept +

+

Removes the specified element from the array.

+ + + + + + + + + + + + + + + + +
Parameters
posIterator to the element being erased.
ReturnsIterator to the first element immediately following the removed element.
+
auto arr = toml::array{ 1, 2, 3 };
+std::cout << arr << "\n";
+
+arr.erase(arr.cbegin() + 1);
+std::cout << arr << "\n";
[ 1, 2, 3 ]
+[ 1, 3 ]
+
+
+

+ iterator toml::array::erase(const_iterator first, + const_iterator last) noexcept +

+

Removes the elements in the range [first, last) from the array.

+ + + + + + + + + + + + + + + + + + + + +
Parameters
firstIterator to the first element being erased.
lastIterator to the one-past-the-last element being erased.
ReturnsIterator to the first element immediately following the last removed element.
+
auto arr = toml::array{ 1, "bad", "karma" 2 };
+std::cout << arr << "\n";
+
+arr.erase(arr.cbegin() + 1, arr.cbegin() + 3);
+std::cout << arr << "\n";
[ 1, 'bad', 'karma', 3 ]
+[ 1, 3 ]
+
+
+

+ array& toml::array::flatten() & +

+

Flattens this array, recursively hoisting the contents of child arrays up into itself.

+ + + + + + + +
ReturnsA reference to the array.
+
auto arr = toml::array{ 1, 2, toml::array{ 3, 4, toml::array{ 5 } }, 6, toml::array{} };
+std::cout << arr << "\n";
+
+arr.flatten();
+std::cout << arr << "\n";
[ 1, 2, [ 3, 4, [ 5 ] ], 6, [] ]
+[ 1, 2, 3, 4, 5, 6 ]
+
+
+

+ array& toml::array::prune(bool recursive = true) & noexcept +

+

Removes empty child arrays and tables.

+ + + + + + + + + + + + + + + + +
Parameters
recursiveShould child arrays and tables themselves be pruned?
ReturnsA reference to the array.
+
auto arr = toml::array{ 1, 2, toml::array{ }, toml::array{ 3, toml::array{ } }, 4 };
+std::cout << arr << "\n";
+
+arr.prune(true);
+std::cout << arr << "\n";
[ 1, 2, [], [ 3, [] ], 4 ]
+[ 1, 2, [ 3 ], 4 ]
+
+
+

+ array&& toml::array::prune(bool recursive = true) && noexcept +

+

Removes empty child arrays and tables (rvalue overload).

+ + + + + + + + + + + + + + + + +
Parameters
recursiveShould child arrays and tables themselves be pruned?
ReturnsAn rvalue reference to the array.
+
+
+

+
+ template <typename ElemType = void, typename... Args> +
+ iterator toml::array::emplace(const_iterator pos, + Args && ... args) +

+

Emplaces a new element at a specific position in the array.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Template parameters
ElemTypetoml::table, toml::array, or any native TOML value type.
ArgsValue constructor argument types.
Parameters
posThe insertion position.
argsArguments to forward to the value's constructor.
ReturnsAn iterator to the inserted element.
+
auto arr = toml::array{ 1, 2 };
+
+//add a string using std::string's substring constructor
+arr.emplace<std::string>(arr.cbegin() + 1, "this is not a drill"sv, 14, 5);
+std::cout << arr << "\n";
[ 1, 'drill', 2 ]
+
+
+

+
+ template <typename ElemType = void, typename... Args> +
+ decltype(auto) toml::array::emplace_back(Args && ... args) +

+

Emplaces a new element at the end of the array.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Template parameters
ElemTypetoml::table, toml::array, or a native TOML value type
ArgsElement constructor argument types.
Parameters
argsArguments to forward to the elements's constructor.
ReturnsA reference to the newly-constructed element.
+
auto arr = toml::array{ 1, 2 };
+arr.emplace_back<toml::array>(3, "four"sv);
+std::cout << arr << "\n";
[ 1, 2, [ 3, 'four' ] ]
+
+
+

+
+ template <typename ElemType> +
+ iterator toml::array::insert(const_iterator pos, + ElemType&& val, + value_flags flags = preserve_source_value_flags) +

+

Inserts a new element at a specific position in the array.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Template parameters
ElemTypetoml::node, toml::node_view, toml::table, toml::array, or a native TOML value type (or a type promotable to one).
Parameters
posThe insertion position.
valThe node or value being inserted.
flagsValue flags to apply to new values.
ReturnsValid input: An iterator to the newly-inserted element. Input is a null toml::node_view: + end()
+
auto arr = toml::array{ 1, 3 };
+arr.insert(arr.cbegin() + 1, "two");
+arr.insert(arr.cend(), toml::array{ 4, 5 });
+std::cout << arr << "\n";
[ 1, 'two', 3, [ 4, 5 ] ]
+
+
+

+
+ template <typename ElemType> +
+ iterator toml::array::insert(const_iterator pos, + size_t count, + ElemType&& val, + value_flags flags = preserve_source_value_flags) +

+

Repeatedly inserts a new element starting at a specific position in the array.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Template parameters
ElemTypetoml::node, toml::node_view, toml::table, toml::array, or a native TOML value type (or a type promotable to one).
Parameters
posThe insertion position.
countThe number of times the node or value should be inserted.
valThe node or value being inserted.
flagsValue flags to apply to new values.
ReturnsValid input: An iterator to the newly-inserted element. count == 0: A copy of pos Input is a null toml::node_view: + end()
+
auto arr = toml::array{
+    "with an evil twinkle in its eye the goose said",
+    "and immediately we knew peace was never an option."
+};
+arr.insert(arr.cbegin() + 1, 3, "honk");
+std::cout << arr << "\n";
[
+    'with an evil twinkle in its eye the goose said',
+    'honk',
+    'honk',
+    'honk',
+    'and immediately we knew peace was never an option.'
+]
+
+
+

+
+ template <typename Iter> +
+ iterator toml::array::insert(const_iterator pos, + Iter first, + Iter last, + value_flags flags = preserve_source_value_flags) +

+

Inserts a range of elements into the array at a specific position.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Template parameters
IterAn iterator type. Must satisfy ForwardIterator.
Parameters
posThe insertion position.
firstIterator to the first node or value being inserted.
lastIterator to the one-past-the-last node or value being inserted.
flagsValue flags to apply to new values.
ReturnsValid input: An iterator to the first newly-inserted element. first >= last: A copy of pos All objects in the range were null toml::node_views: A copy of pos
+
+
+

+
+ template <typename ElemType> +
+ iterator toml::array::insert(const_iterator pos, + std::initializer_list<ElemType> ilist, + value_flags flags = preserve_source_value_flags) +

+

Inserts a range of elements into the array at a specific position.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Template parameters
ElemTypetoml::node_view, toml::table, toml::array, or a native TOML value type (or a type promotable to one).
Parameters
posThe insertion position.
ilistAn initializer list containing the values to be inserted.
flagsValue flags to apply to new values.
ReturnsValid input: An iterator to the first newly-inserted element. Input list is empty: A copy of pos All objects in the list were null toml::node_views: A copy of pos
+
+
+

+
+ template <typename ElemType> +
+ void toml::array::push_back(ElemType&& val, + value_flags flags = preserve_source_value_flags) +

+

Appends a new element to the end of the array.

+ + + + + + + + + + + + + + + + + + + + + + + +
Template parameters
ElemTypetoml::node, toml::node_view, toml::table, toml::array, or a native TOML value type
Parameters
valThe node or value being added.
flagsValue flags to apply to new values.
+
auto arr = toml::array{ 1, 2 };
+arr.push_back(3);
+arr.push_back(4.0);
+arr.push_back(toml::array{ 5, "six"sv });
+std::cout << arr << "\n";
[ 1, 2, 3, 4.0, [ 5, 'six' ] ]
+
+
+

+
+ template <typename ElemType> +
+ iterator toml::array::replace(const_iterator pos, + ElemType&& val, + value_flags flags = preserve_source_value_flags) +

+

Replaces the element at a specific position in the array with a different value.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Template parameters
ElemTypetoml::node, toml::node_view, toml::table, toml::array, or a native TOML value type (or a type promotable to one).
Parameters
posThe insertion position.
valThe node or value being inserted.
flagsValue flags to apply to new values.
ReturnsValid input: An iterator to the replaced element. Input is a null toml::node_view: + end()
+
auto arr = toml::array{ 1, 2, 3 };
+std::cout << arr << "\n";
+arr.replace(arr.cbegin() + 1, "two");
+std::cout << arr << "\n";
[ 1, 2, 3 ]
+[ 1, 'two', 3 ]
+
+
+

+
+ template <typename Func> +
+ array& toml::array::for_each(Func&& visitor) & noexcept(…) +

+

Invokes a visitor on each element in the array.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
Template parameters
Func

A callable type invocable with one of the following signatures:

  • func(elem, index)
  • func(elem)
  • func(index, elem)

Where:

  • elem will recieve the element as it's concrete type with cvref-qualifications matching the array
  • index will recieve a size_t indicating the element's index

Visitors returning bool (or something convertible to bool) will cause iteration to stop if they return false.

Parameters
visitorThe visitor object.
ReturnsA reference to the array.
+
toml::array arr{ 0, 1, 2, 3.0, "four", "five", 6 };
+
+// select only the integers using a strongly-typed visitor
+arr.for_each([](toml::value<int64_t>& elem)
+{
+    std::cout << elem << ", ";
+});
+std::cout << "\n";
+
+// select all the numeric values using a generic visitor + is_number<> metafunction
+arr.for_each([](auto&& elem)
+{
+    if constexpr (toml::is_number<decltype(elem)>)
+        std::cout << elem << ", ";
+});
+std::cout << "\n";
+
+// select all the numeric values until we encounter something non-numeric
+arr.for_each([](auto&& elem)
+{
+    if constexpr (toml::is_number<decltype(elem)>)
+    {
+        std::cout << elem << ", ";
+        return true; // "keep going"
+    }
+    else
+        return false; // "stop!"
+
+});
+std::cout << "\n";
0, 1, 2, 6,
+0, 1, 2, 3.0, 6,
+0, 1, 2, 3.0,
+
+
+

+
+ template <typename ElemType> +
+ void toml::array::resize(size_t new_size, + ElemType&& default_init_val, + value_flags default_init_flags = preserve_source_value_flags) +

+

Resizes the array.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Template parameters
ElemTypetoml::node, toml::table, toml::array, or a native TOML value type (or a type promotable to one).
Parameters
new_sizeThe number of elements the array will have after resizing.
default_init_valThe node or value used to initialize new elements if the array needs to grow.
default_init_flagsValue flags to apply to new values created if new elements are created by growing.
+

Try this code on Compiler Explorer

auto arr = toml::array{ 1, 2, 3 }; +std::cout << arr << "\n"; + +arr.resize(6, 42); +std::cout << arr << "\n"; + +arr.resize(2, 0); +std::cout << arr << "\n";
[ 1, 2, 3 ]
+[ 1, 2, 3, 42, 42, 42 ]
+[ 1, 2 ]
+
+
+

+ void toml::array::truncate(size_t new_size) +

+

Shrinks the array to the given size.

+

Try this code on Compiler Explorer

auto arr = toml::array{ 1, 2, 3 }; +std::cout << arr << "\n"; + +arr.truncate(5); // no-op +std::cout << arr << "\n"; + +arr.truncate(1); +std::cout << arr << "\n";
[ 1, 2, 3 ]
+[ 1, 2, 3 ]
+[ 1]
+
+
+

+ bool toml::array::is_homogeneous(node_type ntype) const final noexcept +

+

Checks if the node contains values/elements of only one type.

+ + + + + + + + + + + + + + + + +
Parameters
ntypeA TOML node type.
toml::node_type::none: "is every element the same type?" Anything else: "is every element one of these?"
ReturnsTrue if the node was homogeneous.
+
auto arr = toml::array{ 1, 2, 3 };
+std::cout << "homogenous: "sv << arr.is_homogeneous(toml::node_type::none) << "\n";
+std::cout << "all floats: "sv << arr.is_homogeneous(toml::node_type::floating_point) << "\n";
+std::cout << "all arrays: "sv << arr.is_homogeneous(toml::node_type::array) << "\n";
+std::cout << "all ints:   "sv << arr.is_homogeneous(toml::node_type::integer) << "\n";
homogeneous: true
+all floats:  false
+all arrays:  false
+all ints:    true
+
+
+

+ bool toml::array::is_homogeneous(node_type ntype, + node*& first_nonmatch) final noexcept +

+

Checks if a node contains values/elements of only one type.

+ + + + + + + + + + + + + + + + + + + + +
Parameters
ntypeA TOML node type.
toml::node_type::none: "is every element the same type?" Anything else: "is every element one of these?"
first_nonmatchReference to a pointer in which the address of the first non-matching element will be stored if the return value is false.
ReturnsTrue if the node was homogeneous.
+
auto cfg = toml::parse("arr = [ 1, 2, 3, 4.0 ]");
+toml::array& arr = *cfg["arr"].as_array();
+
+toml::node* nonmatch{};
+if (arr.is_homogeneous(toml::node_type::integer, nonmatch))
+    std::cout << "array was homogeneous"sv << "\n";
+else
+    std::cout << "array was not homogeneous!\n"
+    << "first non-match was a "sv << nonmatch->type() << " at " << nonmatch->source() << "\n";
array was not homogeneous!
+first non-match was a floating-point at line 1, column 18
+
+
+

+ node* toml::array::get(size_t index) noexcept +

+

Gets a pointer to the element at a specific index.

+ + + + + + + + + + + + + + + + +
Parameters
indexThe element's index.
ReturnsA pointer to the element at the specified index if one existed, or nullptr.
+
auto arr = toml::array{ 99, "bottles of beer on the wall" };
+std::cout << "element [0] exists: "sv << !!arr.get(0) << "\n";
+std::cout << "element [1] exists: "sv << !!arr.get(1) << "\n";
+std::cout << "element [2] exists: "sv << !!arr.get(2) << "\n";
+if (toml::node* val = arr.get(0))
+    std::cout << "element [0] is an "sv << val->type() << "\n";
element [0] exists: true
+element [1] exists: true
+element [2] exists: false
+element [0] is an integer
+
+
+

+ const node* toml::array::get(size_t index) const noexcept +

+

Gets a pointer to the element at a specific index (const overload).

+ + + + + + + + + + + + + + + + +
Parameters
indexThe element's index.
ReturnsA pointer to the element at the specified index if one existed, or nullptr.
+
+
+

+
+ template <typename ElemType> +
+ impl::wrap_node<ElemType>* toml::array::get_as(size_t index) noexcept +

+

Gets a pointer to the element at a specific index if it is a particular type.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
Template parameters
ElemTypetoml::table, toml::array, or a native TOML value type
Parameters
indexThe element's index.
ReturnsA pointer to the selected element if it existed and was of the specified type, or nullptr.
+
auto arr = toml::array{ 42, "is the meaning of life, apparently."sv };
+if (toml::value<int64_t>* val = arr.get_as<int64_t>(0))
+    std::cout << "element [0] is an integer with value "sv << *val << "\n";
element [0] is an integer with value 42
+
+
+

+
+ template <typename ElemType> +
+ const impl::wrap_node<ElemType>* toml::array::get_as(size_t index) const noexcept +

+

Gets a pointer to the element at a specific index if it is a particular type (const overload).

+ + + + + + + + + + + + + + + + + + + + + + + + + +
Template parameters
ElemTypetoml::table, toml::array, or a native TOML value type
Parameters
indexThe element's index.
ReturnsA pointer to the selected element if it existed and was of the specified type, or nullptr.
+
+
+

+ std::ostream& operator<<(std::ostream& lhs, + const array& rhs) +

+

Prints the array out to a stream as formatted TOML.

+ +
+
+
+
+
+
+ + + + + + + \ No newline at end of file diff --git a/classtoml_1_1json__formatter.html b/classtoml_1_1json__formatter.html new file mode 100644 index 0000000000..54a48ca53c --- /dev/null +++ b/classtoml_1_1json__formatter.html @@ -0,0 +1,255 @@ + + + + toml::json_formatter class | toml++ TOML for C++ + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ toml::json_formatter class +

+

A wrapper for printing TOML objects out to a stream as formatted JSON.

+ +
auto some_toml = toml::parse(R"(
+    [fruit]
+    apple.color = "red"
+    apple.taste.sweet = true
+
+    [fruit.apple.texture]
+    smooth = true
+)"sv);
+std::cout << toml::json_formatter{ some_toml } << "\n";
{
+    "fruit" : {
+        "apple" : {
+            "color" : "red",
+            "taste" : {
+                "sweet" : true
+            },
+            "texture" : {
+                "smooth" : true
+            }
+        }
+    }
+}
+
+

Public static variables

+
+
+ static format_flags default_flags constexpr +
+
The default flags for a json_formatter.
+
+
+
+

Constructors, destructors, conversion operators

+
+
+ json_formatter(const toml::node& source, + format_flags flags = default_flags) explicit noexcept +
+
Constructs a JSON formatter and binds it to a TOML object.
+
+ json_formatter(const toml::parse_result& result, + format_flags flags = default_flags) explicit noexcept +
+
Constructs a JSON formatter and binds it to a toml::parse_result.
+
+
+
+

Friends

+
+
+ auto operator<<(std::ostream& lhs, + json_formatter& rhs) →  std::ostream& +
+
Prints the bound TOML object out to the stream as JSON.
+
+ auto operator<<(std::ostream& lhs, + json_formatter&& rhs) →  std::ostream& +
+
Prints the bound TOML object out to the stream as JSON (rvalue overload).
+
+
+
+

Function documentation

+
+

+ toml::json_formatter::json_formatter(const toml::node& source, + format_flags flags = default_flags) explicit noexcept +

+

Constructs a JSON formatter and binds it to a TOML object.

+ + + + + + + + + + + + + + +
Parameters
sourceThe source TOML object.
flagsFormat option flags.
+
+
+

+ toml::json_formatter::json_formatter(const toml::parse_result& result, + format_flags flags = default_flags) explicit noexcept +

+

Constructs a JSON formatter and binds it to a toml::parse_result.

+ + + + + + + + + + + + + + +
Parameters
resultThe parse result.
flagsFormat option flags.
+ +
+
+
+
+
+
+ + + + + + + \ No newline at end of file diff --git a/classtoml_1_1key.html b/classtoml_1_1key.html new file mode 100644 index 0000000000..1fa1051f5d --- /dev/null +++ b/classtoml_1_1key.html @@ -0,0 +1,381 @@ + + + + toml::key class | toml++ TOML for C++ + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ toml::key class +

+

A key parsed from a TOML document.

+ +

These are used as the internal keys for a toml::table:

const toml::table tbl = R"(
+    a = 1
+      b = 2
+        c = 3
+)"_toml;
+
+for (auto&& [k, v] : tbl)
+    std::cout << "key '"sv << k << "' defined at "sv << k.source() << "\n";
key 'a' defined at line 2, column 5
+key 'b' defined at line 3, column 7
+key 'c' defined at line 4, column 9
+
+

Constructors, destructors, conversion operators

+
+
+ key() defaulted noexcept +
+
Default constructor.
+
+ key(std::string_view k, + source_region&& src = {}) explicit +
+
Constructs a key from a string view and source region.
+
+ key(std::string_view k, + const source_region& src) explicit +
+
Constructs a key from a string view and source region.
+
+ key(std::string&& k, + source_region&& src = {}) explicit noexcept +
+
Constructs a key from a string and source region.
+
+ key(std::string&& k, + const source_region& src) explicit noexcept +
+
Constructs a key from a string and source region.
+
+ key(const char* k, + source_region&& src = {}) explicit +
+
Constructs a key from a c-string and source region.
+
+ key(const char* k, + const source_region& src) explicit +
+
Constructs a key from a c-string view and source region.
+
+ key(std::wstring_view k, + source_region&& src = {}) explicit +
+
Constructs a key from a wide string view and source region.
+
+ key(std::wstring_view k, + const source_region& src) explicit +
+
Constructs a key from a wide string and source region.
+
+
+
+

Equality and Comparison

+ +
+
+ auto operator!=(const key& lhs, + const key& rhs) →  bool noexcept +
+
Returns true if lhs.str() != rhs.str().
+
+ auto operator!=(const key& lhs, + std::string_view rhs) →  bool noexcept +
+
Returns true if lhs.str() != rhs.
+
+ auto operator!=(std::string_view lhs, + const key& rhs) →  bool noexcept +
+
Returns true if lhs != rhs.str().
+
+ auto operator<(const key& lhs, + const key& rhs) →  bool noexcept +
+
Returns true if lhs.str() < rhs.str().
+
+ auto operator<(const key& lhs, + std::string_view rhs) →  bool noexcept +
+
Returns true if lhs.str() < rhs.
+
+ auto operator<(std::string_view lhs, + const key& rhs) →  bool noexcept +
+
Returns true if lhs < rhs.str().
+
+ auto operator<=(const key& lhs, + const key& rhs) →  bool noexcept +
+
Returns true if lhs.str() <= rhs.str().
+
+ auto operator<=(const key& lhs, + std::string_view rhs) →  bool noexcept +
+
Returns true if lhs.str() <= rhs.
+
+ auto operator<=(std::string_view lhs, + const key& rhs) →  bool noexcept +
+
Returns true if lhs <= rhs.str().
+
+ auto operator==(const key& lhs, + const key& rhs) →  bool noexcept +
+
Returns true if lhs.str() == rhs.str().
+
+ auto operator==(const key& lhs, + std::string_view rhs) →  bool noexcept +
+
Returns true if lhs.str() == rhs.
+
+ auto operator==(std::string_view lhs, + const key& rhs) →  bool noexcept +
+
Returns true if lhs == rhs.str().
+
+ auto operator>(const key& lhs, + const key& rhs) →  bool noexcept +
+
Returns true if lhs.str() > rhs.str().
+
+ auto operator>(const key& lhs, + std::string_view rhs) →  bool noexcept +
+
Returns true if lhs.str() > rhs.
+
+ auto operator>(std::string_view lhs, + const key& rhs) →  bool noexcept +
+
Returns true if lhs > rhs.str().
+
+ auto operator>=(const key& lhs, + const key& rhs) →  bool noexcept +
+
Returns true if lhs.str() >= rhs.str().
+
+ auto operator>=(const key& lhs, + std::string_view rhs) →  bool noexcept +
+
Returns true if lhs.str() >= rhs.
+
+ auto operator>=(std::string_view lhs, + const key& rhs) →  bool noexcept +
+
Returns true if lhs >= rhs.str().
+
+
+
+

Iteration

+
+
+ using const_iterator = const char* +
+
A const iterator for iterating over the characters in the key.
+
+ using iterator = const_iterator +
+
A const iterator for iterating over the characters in the key.
+
+ auto begin() const →  const_iterator noexcept +
+
Returns an iterator to the first character in the key's backing string.
+
+ auto end() const →  const_iterator noexcept +
+
Returns an iterator to one-past-the-last character in the key's backing string.
+
+
+
+

Metadata

+
+
+ auto source() const →  const source_region& noexcept +
+
Returns the source region responsible for specifying this key during parsing.
+
+
+
+

String operations

+
+
+ auto data() const →  const char* noexcept +
+
Returns a pointer to the start of the key's underlying string.
+
+ auto empty() const →  bool noexcept +
+
Returns true if the key's underlying string is empty.
+
+ auto length() const →  size_t noexcept +
+
Returns the length of the key's underlying string.
+
+ operator std::string_view() const noexcept +
+
Returns a view of the key's underlying string.
+
+ auto str() const →  std::string_view noexcept +
+
Returns a view of the key's underlying string.
+
+
+
+

Friends

+
+
+ auto operator<<(std::ostream& lhs, + const key& rhs) →  std::ostream& +
+
Prints the key's underlying string out to the stream.
+
+
+
+

Function documentation

+
+

+ toml::key::key(std::wstring_view k, + source_region&& src = {}) explicit +

+

Constructs a key from a wide string view and source region.

+ +
+
+

+ toml::key::key(std::wstring_view k, + const source_region& src) explicit +

+

Constructs a key from a wide string and source region.

+ +
+
+
+
+
+
+ + + + + + + \ No newline at end of file diff --git a/classtoml_1_1node.html b/classtoml_1_1node.html new file mode 100644 index 0000000000..562a642833 --- /dev/null +++ b/classtoml_1_1node.html @@ -0,0 +1,1027 @@ + + + + toml::node class | toml++ TOML for C++ + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ toml::node class +

+

A TOML node.

+ +

A parsed TOML document forms a tree made up of tables, arrays and values. This type is the base of each of those, providing a lot of the polymorphic plumbing.

+
+

Derived classes

+
+
+ class array +
+
A TOML array.
+
+ class table +
+
A TOML table.
+
+
template <typename ValueType>
+ class value +
+
A TOML value.
+
+
+
+

Metadata

+
+
+ auto source() const →  const source_region& noexcept +
+
Returns the source region responsible for generating this node during parsing.
+
+
+
+

Node views

+
+
+ auto at_path(std::string_view path) →  node_view<node> noexcept +
+
Returns a view of the subnode matching a fully-qualified "TOML path".
+
+ auto at_path(std::string_view path) const →  node_view<const node> noexcept +
+
Returns a const view of the subnode matching a fully-qualified "TOML path".
+
+ auto at_path(const toml::path& path) →  node_view<node> noexcept +
+
Returns a view of the subnode matching a fully-qualified "TOML path".
+
+ auto at_path(const toml::path& path) const →  node_view<const node> noexcept +
+
Returns a const view of the subnode matching a fully-qualified "TOML path".
+
+ auto at_path(std::wstring_view path) →  node_view<node> +
+
Returns a view of the subnode matching a fully-qualified "TOML path".
+
+ auto at_path(std::wstring_view path) const →  node_view<const node> +
+
Returns a const view of the subnode matching a fully-qualified "TOML path".
+
+ operator node_view<const node>() const explicit noexcept +
+
Creates a node_view pointing to this node (const overload).
+
+ operator node_view<node>() explicit noexcept +
+
Creates a node_view pointing to this node.
+
+ auto operator[](const toml::path& path) →  node_view<node> noexcept +
+
Returns a const view of the subnode matching a fully-qualified "TOML path".
+
+ auto operator[](const toml::path& path) const →  node_view<const node> noexcept +
+
Returns a const view of the subnode matching a fully-qualified "TOML path".
+
+
+
+

Type casts

+
+
+
template <typename T>
+ auto as() →  impl::wrap_node<T>* noexcept +
+
Gets a pointer to the node as a more specific node type.
+
+
template <typename T>
+ auto as() const →  const impl::wrap_node<T>* noexcept +
+
Gets a pointer to the node as a more specific node type (const overload).
+
+ auto as_array() →  array* pure virtual noexcept +
+
Returns a pointer to the node as a toml::array, if it is one.
+
+ auto as_array() const →  const array* pure virtual noexcept +
+
Returns a const-qualified pointer to the node as a toml::array, if it is one.
+
+ auto as_boolean() →  toml::value<bool>* pure virtual noexcept +
+
Returns a pointer to the node as a toml::value<bool>, if it is one.
+
+ auto as_boolean() const →  const toml::value<bool>* pure virtual noexcept +
+
Returns a const-qualified pointer to the node as a toml::value<bool>, if it is one.
+
+ auto as_date() →  toml::value<date>* pure virtual noexcept +
+
Returns a pointer to the node as a toml::value<toml::date>, if it is one.
+
+ auto as_date() const →  const toml::value<date>* pure virtual noexcept +
+
Returns a const-qualified pointer to the node as a toml::value<toml::date>, if it is one.
+
+ auto as_date_time() →  toml::value<date_time>* pure virtual noexcept +
+
Returns a pointer to the node as a toml::value<toml::date_time>, if it is one.
+
+ auto as_date_time() const →  const toml::value<date_time>* pure virtual noexcept +
+
Returns a const-qualified pointer to the node as a toml::value<toml::date_time>, if it is one.
+
+ auto as_floating_point() →  toml::value<double>* pure virtual noexcept +
+
Returns a pointer to the node as a toml::value<double>, if it is one.
+
+ auto as_floating_point() const →  const toml::value<double>* pure virtual noexcept +
+
Returns a const-qualified pointer to the node as a toml::value<double>, if it is one.
+
+ auto as_integer() →  toml::value<int64_t>* pure virtual noexcept +
+
Returns a pointer to the node as a toml::value<int64_t>, if it is one.
+
+ auto as_integer() const →  const toml::value<int64_t>* pure virtual noexcept +
+
Returns a const-qualified pointer to the node as a toml::value<int64_t>, if it is one.
+
+ auto as_string() →  toml::value<std::string>* pure virtual noexcept +
+
Returns a pointer to the node as a toml::value<std::string>, if it is one.
+
+ auto as_string() const →  const toml::value<std::string>* pure virtual noexcept +
+
Returns a const-qualified pointer to the node as a toml::value<std::string>, if it is one.
+
+ auto as_table() →  table* pure virtual noexcept +
+
Returns a pointer to the node as a toml::table, if it is one.
+
+ auto as_table() const →  const table* pure virtual noexcept +
+
Returns a const-qualified pointer to the node as a toml::table, if it is one.
+
+ auto as_time() →  toml::value<time>* pure virtual noexcept +
+
Returns a pointer to the node as a toml::value<toml::time>, if it is one.
+
+ auto as_time() const →  const toml::value<time>* pure virtual noexcept +
+
Returns a const-qualified pointer to the node as a toml::value<toml::time>, if it is one.
+
+
+
+

Type checks

+
+
+
template <typename T>
+ auto is() const →  bool noexcept +
+
Checks if a node is a specific type.
+
+ auto is_array() const →  bool pure virtual noexcept +
+
Returns true if this node is an array.
+
+ auto is_array_of_tables() const →  bool pure virtual noexcept +
+
Returns true if this node is an array containing only tables.
+
+ auto is_boolean() const →  bool pure virtual noexcept +
+
Returns true if this node is a boolean value.
+
+ auto is_date() const →  bool pure virtual noexcept +
+
Returns true if this node is a local date value.
+
+ auto is_date_time() const →  bool pure virtual noexcept +
+
Returns true if this node is a date-time value.
+
+ auto is_floating_point() const →  bool pure virtual noexcept +
+
Returns true if this node is an floating-point value.
+
+ auto is_homogeneous(node_type ntype, + node*& first_nonmatch) →  bool pure virtual noexcept +
+
Checks if a node contains values/elements of only one type.
+
+ auto is_homogeneous(node_type ntype, + const node*& first_nonmatch) const →  bool pure virtual noexcept +
+
Checks if a node contains values/elements of only one type (const overload).
+
+ auto is_homogeneous(node_type ntype) const →  bool pure virtual noexcept +
+
Checks if the node contains values/elements of only one type.
+
+
template <typename ElemType = void>
+ auto is_homogeneous() const →  bool noexcept +
+
Checks if the node contains values/elements of only one type.
+
+ auto is_integer() const →  bool pure virtual noexcept +
+
Returns true if this node is an integer value.
+
+ auto is_number() const →  bool pure virtual noexcept +
+
Returns true if this node is an integer or floating-point value.
+
+ auto is_string() const →  bool pure virtual noexcept +
+
Returns true if this node is a string value.
+
+ auto is_table() const →  bool pure virtual noexcept +
+
Returns true if this node is a table.
+
+ auto is_time() const →  bool pure virtual noexcept +
+
Returns true if this node is a local time value.
+
+ auto is_value() const →  bool pure virtual noexcept +
+
Returns true if this node is a value.
+
+ auto type() const →  node_type pure virtual noexcept +
+
Returns the node's type identifier.
+
+
+
+

Value retrieval

+
+
+
template <typename T>
+ auto ref() & →  decltype(auto) noexcept +
+
Gets a raw reference to a node's underlying data.
+
+
template <typename T>
+ auto ref() && →  decltype(auto) noexcept +
+
Gets a raw reference to a node's underlying data (rvalue overload).
+
+
template <typename T>
+ auto ref() const & →  decltype(auto) noexcept +
+
Gets a raw reference to a node's underlying data (const lvalue overload).
+
+
template <typename T>
+ auto ref() const && →  decltype(auto) noexcept +
+
Gets a raw reference to a node's underlying data (const rvalue overload).
+
+
template <typename T>
+ auto value() const →  optional<T> noexcept(…) +
+
Gets the value contained by this node.
+
+
template <typename T>
+ auto value_exact() const →  optional<T> noexcept(…) +
+
Gets the value contained by this node.
+
+
template <typename T>
+ auto value_or(T&& default_value) const →  auto noexcept(…) +
+
Gets the raw value contained by this node, or a default.
+
+
+
+

Visitation

+
+
+
template <typename Func>
+ auto visit(Func&& visitor) & →  decltype(auto) noexcept(…) +
+
Invokes a visitor on the node based on the node's concrete type.
+
+
template <typename Func>
+ auto visit(Func&& visitor) && →  decltype(auto) noexcept(…) +
+
Invokes a visitor on the node based on the node's concrete type (rvalue overload).
+
+
template <typename Func>
+ auto visit(Func&& visitor) const & →  decltype(auto) noexcept(…) +
+
Invokes a visitor on the node based on the node's concrete type (const lvalue overload).
+
+
template <typename Func>
+ auto visit(Func&& visitor) const && →  decltype(auto) noexcept(…) +
+
Invokes a visitor on the node based on the node's concrete type (const rvalue overload).
+
+
+
+

Function documentation

+
+

+ node_view<node> toml::node::at_path(std::string_view path) noexcept +

+

Returns a view of the subnode matching a fully-qualified "TOML path".

+ + + + + + + + + + +
Parameters
pathThe "TOML path" to traverse.
+
auto config = toml::parse(R"(
+
+[foo]
+bar = [ 0, 1, 2, [ 3 ], { kek = 4 } ]
+
+)"sv);
+
+std::cout << config.at_path("foo.bar[2]") << "\n";
+std::cout << config.at_path("foo.bar[3][0]") << "\n";
+std::cout << config.at_path("foo.bar[4].kek") << "\n";
2
+3
+4
+
+
+

+ node_view<const node> toml::node::at_path(std::string_view path) const noexcept +

+

Returns a const view of the subnode matching a fully-qualified "TOML path".

+ +
+
+

+ node_view<node> toml::node::at_path(const toml::path& path) noexcept +

+

Returns a view of the subnode matching a fully-qualified "TOML path".

+ + + + + + + + + + +
Parameters
pathThe "TOML path" to traverse.
+
auto config = toml::parse(R"(
+
+[foo]
+bar = [ 0, 1, 2, [ 3 ], { kek = 4 } ]
+
+)"sv);
+
+toml::path path1("foo.bar[2]");
+toml::path path2("foo.bar[4].kek");
+std::cout << config.at_path(path1) << "\n";
+std::cout << config.at_path(path1.parent_path()) << "\n";
+std::cout << config.at_path(path2) << "\n";
+std::cout << config.at_path(path2.parent_path()) << "\n";
2
+[ 0, 1, 2, [ 3 ], { kek = 4 } ]
+4
+{ kek  = 4 }
+
+
+

+ node_view<const node> toml::node::at_path(const toml::path& path) const noexcept +

+

Returns a const view of the subnode matching a fully-qualified "TOML path".

+ +
+
+

+ node_view<node> toml::node::at_path(std::wstring_view path) +

+

Returns a view of the subnode matching a fully-qualified "TOML path".

+ +
+
+

+ node_view<const node> toml::node::at_path(std::wstring_view path) const +

+

Returns a const view of the subnode matching a fully-qualified "TOML path".

+ +
+
+

+ node_view<node> toml::node::operator[](const toml::path& path) noexcept +

+

Returns a const view of the subnode matching a fully-qualified "TOML path".

+ + + + + + + + + + + + + + + + +
Parameters
pathThe "TOML path" to the desired child.
ReturnsA view of the child node at the given path if one existed, or an empty node view.
+ +
+
+

+ node_view<const node> toml::node::operator[](const toml::path& path) const noexcept +

+

Returns a const view of the subnode matching a fully-qualified "TOML path".

+ + + + + + + + + + + + + + + + +
Parameters
pathThe "TOML path" to the desired child.
ReturnsA view of the child node at the given path if one existed, or an empty node view.
+ +
+
+

+
+ template <typename T> +
+ impl::wrap_node<T>* toml::node::as() noexcept +

+

Gets a pointer to the node as a more specific node type.

+ + + + + + + + + + + + + + + + +
Template parameters
TThe node type or TOML value type to cast to.
ReturnsA pointer to the node as the given type, or nullptr if it was a different type.
+
toml::value<int64_t>* int_value = node->as<int64_t>();
+toml::table* tbl = node->as<toml::table>();
+if (int_value)
+    std::cout << "Node is a value<int64_t>\n";
+else if (tbl)
+    std::cout << "Node is a table\n";
+
+// fully-qualified value node types also work (useful for template code):
+toml::value<int64_t>* int_value2 = node->as<toml::value<int64_t>>();
+if (int_value2)
+    std::cout << "Node is a value<int64_t>\n";
+
+
+

+
+ template <typename T> +
+ bool toml::node::is() const noexcept +

+

Checks if a node is a specific type.

+ + + + + + + + + + + + + + + + +
Template parameters
TA TOML node or value type.
ReturnsReturns true if this node is an instance of the specified type.
+
+
+

+ bool toml::node::is_homogeneous(node_type ntype, + node*& first_nonmatch) pure virtual noexcept +

+

Checks if a node contains values/elements of only one type.

+ + + + + + + + + + + + + + + + + + + + +
Parameters
ntypeA TOML node type.
toml::node_type::none: "is every element the same type?" Anything else: "is every element one of these?"
first_nonmatchReference to a pointer in which the address of the first non-matching element will be stored if the return value is false.
ReturnsTrue if the node was homogeneous.
+
auto cfg = toml::parse("arr = [ 1, 2, 3, 4.0 ]");
+toml::array& arr = *cfg["arr"].as_array();
+
+toml::node* nonmatch{};
+if (arr.is_homogeneous(toml::node_type::integer, nonmatch))
+    std::cout << "array was homogeneous"sv << "\n";
+else
+    std::cout << "array was not homogeneous!\n"
+    << "first non-match was a "sv << nonmatch->type() << " at " << nonmatch->source() << "\n";
array was not homogeneous!
+first non-match was a floating-point at line 1, column 18
+
+
+

+ bool toml::node::is_homogeneous(node_type ntype) const pure virtual noexcept +

+

Checks if the node contains values/elements of only one type.

+ + + + + + + + + + + + + + + + +
Parameters
ntypeA TOML node type.
toml::node_type::none: "is every element the same type?" Anything else: "is every element one of these?"
ReturnsTrue if the node was homogeneous.
+
auto arr = toml::array{ 1, 2, 3 };
+std::cout << "homogenous: "sv << arr.is_homogeneous(toml::node_type::none) << "\n";
+std::cout << "all floats: "sv << arr.is_homogeneous(toml::node_type::floating_point) << "\n";
+std::cout << "all arrays: "sv << arr.is_homogeneous(toml::node_type::array) << "\n";
+std::cout << "all ints:   "sv << arr.is_homogeneous(toml::node_type::integer) << "\n";
homogeneous: true
+all floats:  false
+all arrays:  false
+all ints:    true
+
+
+

+
+ template <typename ElemType = void> +
+ bool toml::node::is_homogeneous() const noexcept +

+

Checks if the node contains values/elements of only one type.

+ + + + + + + + + + + + + + + + +
Template parameters
ElemTypeA TOML node or value type.
Left as void: "is every element the same type?"
Explicitly specified: "is every element a T?"
ReturnsTrue if the node was homogeneous.
+
auto arr = toml::array{ 1, 2, 3 };
+std::cout << "homogenous:   "sv << arr.is_homogeneous() << "\n";
+std::cout << "all doubles:  "sv << arr.is_homogeneous<double>() << "\n";
+std::cout << "all arrays:   "sv << arr.is_homogeneous<toml::array>() << "\n";
+std::cout << "all integers: "sv << arr.is_homogeneous<int64_t>() << "\n";
homogeneous: true
+all floats:  false
+all arrays:  false
+all ints:    true
+
+
+

+
+ template <typename T> +
+ decltype(auto) toml::node::ref() & noexcept +

+

Gets a raw reference to a node's underlying data.

+ + + + + + + + + + + + + + + + +
Template parameters
Ttoml::table, toml::array, or one of the TOML value types.
ReturnsA reference to the underlying data.
+ +
+
+

+
+ template <typename T> +
+ optional<T> toml::node::value() const noexcept(…) +

+

Gets the value contained by this node.

+ + + + + + + + + + + + + + + + +
Template parameters
TOne of the native TOML value types, or a type capable of converting to one.
ReturnsThe underlying value if the node was a value of the matching type (or convertible to it) and within the range of the output type, or an empty optional.
+

This function has 'permissive' retrieval semantics; some value types are allowed to convert to others (e.g. retrieving a boolean as an integer), and the specified return value type can be any type where a reasonable conversion from a native TOML value exists (e.g. std::wstring on Windows). If the source value cannot be represented by the destination type, an empty optional is returned.

Try this code on Compiler Explorer

auto tbl = toml::parse(R"( + int = -10 + flt = 25.0 + pi = 3.14159 + bool = false + huge = 9223372036854775807 + str = "foo" +)"sv); + +const auto print_value_with_typename = + [&](std::string_view key, std::string_view type_name, auto* dummy) + { + std::cout << "- " << std::setw(18) << std::left << type_name; + using type = std::remove_pointer_t<decltype(dummy)>; + if (auto val = tbl.get(key)->value<type>(); val) + std::cout << *val << "\n"; + else + std::cout << "n/a\n"; + }; + +#define print_value(key, T) print_value_with_typename(key, #T, (T*)nullptr) + +for (auto key : { "int", "flt", "pi", "bool", "huge", "str" }) +{ + std::cout << tbl[key].type() << " value '" << key << "' as:\n"; + print_value(key, bool); + print_value(key, int); + print_value(key, unsigned int); + print_value(key, long long); + print_value(key, float); + print_value(key, double); + print_value(key, std::string); + print_value(key, std::string_view); + print_value(key, const char*); + std::cout << "\n"; +}
integer value 'int' as:
+- bool              true
+- int               -10
+- unsigned int      n/a
+- long long         -10
+- float             -10
+- double            -10
+- std::string       n/a
+- std::string_view  n/a
+- const char*       n/a
+
+floating-point value 'flt' as:
+- bool              n/a
+- int               25
+- unsigned int      25
+- long long         25
+- float             25
+- double            25
+- std::string       n/a
+- std::string_view  n/a
+- const char*       n/a
+
+floating-point value 'pi' as:
+- bool              n/a
+- int               n/a
+- unsigned int      n/a
+- long long         n/a
+- float             3.14159
+- double            3.14159
+- std::string       n/a
+- std::string_view  n/a
+- const char*       n/a
+
+boolean value 'bool' as:
+- bool              false
+- int               0
+- unsigned int      0
+- long long         0
+- float             n/a
+- double            n/a
+- std::string       n/a
+- std::string_view  n/a
+- const char*       n/a
+
+integer value 'huge' as:
+- bool              true
+- int               n/a
+- unsigned int      n/a
+- long long         9223372036854775807
+- float             n/a
+- double            n/a
+- std::string       n/a
+- std::string_view  n/a
+- const char*       n/a
+
+string value 'str' as:
+- bool              n/a
+- int               n/a
+- unsigned int      n/a
+- long long         n/a
+- float             n/a
+- double            n/a
+- std::string       foo
+- std::string_view  foo
+- const char*       foo
+
+
+

+
+ template <typename T> +
+ optional<T> toml::node::value_exact() const noexcept(…) +

+

Gets the value contained by this node.

+ + + + + + + + + + + + + + + + +
Template parameters
TOne of the native TOML value types, or a type capable of losslessly representing one.
ReturnsThe underlying value if the node was a value of the matching type (or losslessly convertible to it), or an empty optional.
+

This function has 'exact' retrieval semantics; the only return value types allowed are the TOML native value types, or types that can losslessly represent a native value type (e.g. std::wstring on Windows).

+
+
+

+
+ template <typename T> +
+ auto toml::node::value_or(T&& default_value) const noexcept(…) +

+

Gets the raw value contained by this node, or a default.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
Template parameters
TDefault value type. Must be one of the native TOML value types, or convertible to it.
Parameters
default_valueThe default value to return if the node wasn't a value, wasn't the correct type, or no conversion was possible.
ReturnsThe underlying value if the node was a value of the matching type (or convertible to it) and within the range of the output type, or the provided default.
+ +
+
+

+
+ template <typename Func> +
+ decltype(auto) toml::node::visit(Func&& visitor) & noexcept(…) +

+

Invokes a visitor on the node based on the node's concrete type.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
Template parameters
FuncA callable type invocable with one or more of the toml++ node types.
Parameters
visitorThe visitor object.
ReturnsThe return value of the visitor. Can be void. Non-exhaustive visitors must return a default-constructible type.
+

Visitation is useful when you expect a node to be one of a set number of types and need to handle these types differently. Using visit() allows you to eliminate some of the casting/conversion boilerplate:

node.visit([](auto&& n)
+{
+    if constexpr (toml::is_string<decltype(n)>)
+        do_something_with_a_string(*n)); //n is a toml::value<std::string>
+    else if constexpr (toml::is_integer<decltype(n)>)
+        do_something_with_an_int(*n); //n is a toml::value<int64_t>
+});

Visitor functions need not be generic; specifying a concrete node type as the input argument type effectively acts a 'filter', only invoking the visitor if the concrete type is compatible. Thus the example above can be re-written as:

node.visit([](toml::value<std::string>& s) { do_something_with_a_string(*s)); });
+node.visit([](toml::value<int64_t>& i)     { do_something_with_an_int(*i)); });
+
+
+
+
+
+
+ + + + + + + \ No newline at end of file diff --git a/classtoml_1_1node__view.html b/classtoml_1_1node__view.html new file mode 100644 index 0000000000..6b48806eb5 --- /dev/null +++ b/classtoml_1_1node__view.html @@ -0,0 +1,945 @@ + + + + toml::node_view class | toml++ TOML for C++ + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+
template <typename ViewedType>
+ toml::node_view class +

+

A view of a node.

+ +

A node_view is like a std::optional<toml::node&> (if such a construct were legal), with lots of toml-specific stuff built-in. It may represent a node, and allows you to do many of the same operations that you'd do on nodes directly, as well as easily traversing the node tree by creating subviews (via node_view::operator[]).

auto tbl = toml::parse(R"(
+
+    title = "my hardware store"
+
+    [[products]]
+    name = "Hammer"
+    sku = 738594937
+    keywords = [ "hammer", "construction", "build" ]
+
+    [[products]]
+    name = "Nail"
+    sku = 284758393
+    color = "gray"
+
+)"sv);
+
+std::cout << tbl["title"] << "\n";
+std::cout << tbl["products"][0]["name"] << "\n";
+std::cout << tbl["products"][0]["keywords"] << "\n";
+std::cout << tbl["products"][0]["keywords"][2] << "\n";
+
+tbl["products"][0]["keywords"].as_array()->push_back("heavy");
+std::cout << tbl["products"][0]["keywords"] << "\n";
+std::cout << "has product[2]: "sv << !!tbl["products"][2] << "\n";
+std::cout << "product[2]: "sv << tbl["products"][2] << "\n";
"my hardware store"
+"Hammer"
+[ "hammer", "construction", "build" ]
+"build"
+[ "hammer", "construction", "build", "heavy" ]
+has product[2]: false
+product[2]:
+
+

Public types

+
+
+ using viewed_type = ViewedType +
+
The node type being viewed - either node or const node.
+
+
+
+

Constructors, destructors, conversion operators

+
+
+ node_view() defaulted noexcept +
+
Constructs an empty node view.
+
+ node_view(viewed_type* node) explicit noexcept +
+
Constructs node_view of a specific node.
+
+ node_view(viewed_type& node) explicit noexcept +
+
Constructs node_view of a specific node.
+
+ node_view(const node_view&) defaulted noexcept +
+
Copy constructor.
+
+ node_view(node_view&&) defaulted noexcept +
+
Move constructor.
+
+ operator bool() const explicit noexcept +
+
Returns true if the view references a node.
+
+
+
+

Public functions

+
+
+ auto node() const →  viewed_type* noexcept +
+
Returns the node that's being referenced by the view.
+
+ auto operator=(const node_view&) & →  node_view& defaulted noexcept +
+
Copy-assignment operator.
+
+ auto operator=(node_view&&) & →  node_view& defaulted noexcept +
+
Move-assignment operator.
+
+
+
+

Equality

+
+
+
template <typename T>
+ auto operator!=(const node_view& lhs, + const node_view<T>& rhs) →  bool noexcept +
+
Returns true if the two views do not refer to nodes of the same type and value.
+
+
template <typename T>
+ auto operator==(const node_view& lhs, + const node_view<T>& rhs) →  bool noexcept +
+
Returns true if the two views refer to nodes of the same type and value.
+
+ auto operator==(const node_view& lhs, + const table& rhs) →  bool noexcept +
+
Returns true if the viewed node is a table with the same contents as RHS.
+
+ auto operator==(const node_view& lhs, + const array& rhs) →  bool noexcept +
+
Returns true if the viewed node is an array with the same contents as RHS.
+
+
template <typename T>
+ auto operator==(const node_view& lhs, + const toml::value<T>& rhs) →  bool noexcept +
+
Returns true if the viewed node is a value with the same value as RHS.
+
+
template <typename T>
+ auto operator==(const node_view& lhs, + const T& rhs) →  bool noexcept(…) +
+
Returns true if the viewed node is a value with the same value as RHS.
+
+
template <typename T>
+ auto operator==(const node_view& lhs, + const std::initializer_list<T>& rhs) →  bool noexcept(…) +
+
Returns true if the viewed node is an array with the same contents as the RHS initializer list.
+
+
template <typename T>
+ auto operator==(const node_view& lhs, + const std::vector<T>& rhs) →  bool noexcept(…) +
+
Returns true if the viewed node is an array with the same contents as the RHS vector.
+
+
+
+

Subviews

+
+
+ auto at_path(std::string_view path) const →  node_view noexcept +
+
Returns a view of the subnode matching a fully-qualified "TOML path".
+
+ auto at_path(const toml::path& path) const →  node_view noexcept +
+
Returns a view of the subnode matching a fully-qualified "TOML path".
+
+ auto at_path(std::wstring_view path) const →  node_view +
+
Returns a view of the subnode matching a fully-qualified "TOML path".
+
+ auto operator[](std::string_view key) const →  node_view noexcept +
+
Returns a view of the selected subnode.
+
+ auto operator[](const toml::path& path) const →  node_view noexcept +
+
Returns a view of the selected subnode.
+
+ auto operator[](std::wstring_view key) const →  node_view +
+
Returns a view of the selected subnode.
+
+ auto operator[](size_t index) const →  node_view noexcept +
+
Returns a view of the selected subnode.
+
+
+
+

Type casts

+
+
+
template <typename T>
+ auto as() const →  auto* noexcept +
+
Gets a pointer to the viewed node as a more specific node type.
+
+ auto as_array() const →  auto* noexcept +
+
Returns a pointer to the viewed node as a toml::array, if it is one.
+
+ auto as_boolean() const →  auto* noexcept +
+
Returns a pointer to the viewed node as a toml::value<bool>, if it is one.
+
+ auto as_date() const →  auto* noexcept +
+
Returns a pointer to the viewed node as a toml::value<date>, if it is one.
+
+ auto as_date_time() const →  auto* noexcept +
+
Returns a pointer to the viewed node as a toml::value<date_time>, if it is one.
+
+ auto as_floating_point() const →  auto* noexcept +
+
Returns a pointer to the viewed node as a toml::value<double>, if it is one.
+
+ auto as_integer() const →  auto* noexcept +
+
Returns a pointer to the viewed node as a toml::value<int64_t>, if it is one.
+
+ auto as_string() const →  auto* noexcept +
+
Returns a pointer to the viewed node as a toml::value<string>, if it is one.
+
+ auto as_table() const →  auto* noexcept +
+
Returns a pointer to the viewed node as a toml::table, if it is one.
+
+ auto as_time() const →  auto* noexcept +
+
Returns a pointer to the viewed node as a toml::value<time>, if it is one.
+
+
+
+

Type checks

+
+
+
template <typename T>
+ auto is() const →  bool noexcept +
+
Checks if this view references a node of a specific type.
+
+ auto is_array() const →  bool noexcept +
+
Returns true if the viewed node is a toml::array.
+
+ auto is_array_of_tables() const →  bool noexcept +
+
Returns true if the viewed node is a toml::array that contains only tables.
+
+ auto is_boolean() const →  bool noexcept +
+
Returns true if the viewed node is a toml::value<bool>.
+
+ auto is_date() const →  bool noexcept +
+
Returns true if the viewed node is a toml::value<date>.
+
+ auto is_date_time() const →  bool noexcept +
+
Returns true if the viewed node is a toml::value<date_time>.
+
+ auto is_floating_point() const →  bool noexcept +
+
Returns true if the viewed node is a toml::value<double>.
+
+ auto is_homogeneous(node_type ntype, + viewed_type*& first_nonmatch) const →  bool noexcept +
+
Checks if the viewed node contains values/elements of only one type.
+
+ auto is_homogeneous(node_type ntype) const →  bool noexcept +
+
Checks if the viewed node contains values/elements of only one type.
+
+
template <typename ElemType = void>
+ auto is_homogeneous() const →  bool noexcept +
+
Checks if the viewed node contains values/elements of only one type.
+
+ auto is_integer() const →  bool noexcept +
+
Returns true if the viewed node is a toml::value<int64_t>.
+
+ auto is_number() const →  bool noexcept +
+
Returns true if the viewed node is a toml::value<int64_t> or toml::value<double>.
+
+ auto is_string() const →  bool noexcept +
+
Returns true if the viewed node is a toml::value<string>.
+
+ auto is_table() const →  bool noexcept +
+
Returns true if the viewed node is a toml::table.
+
+ auto is_time() const →  bool noexcept +
+
Returns true if the viewed node is a toml::value<time>.
+
+ auto is_value() const →  bool noexcept +
+
Returns true if the viewed node is a toml::value<>.
+
+ auto type() const →  node_type noexcept +
+
Returns the type identifier for the viewed node.
+
+
+
+

Value retrieval

+
+
+
template <typename T>
+ auto ref() const →  decltype(auto) noexcept +
+
Gets a raw reference to the viewed node's underlying data.
+
+
template <typename T>
+ auto value() const →  optional<T> noexcept(…) +
+
Gets the value contained by the referenced node.
+
+
template <typename T>
+ auto value_exact() const →  optional<T> noexcept(…) +
+
Gets the value contained by the referenced node.
+
+
template <typename T>
+ auto value_or(T&& default_value) const →  auto noexcept(…) +
+
Gets the raw value contained by the referenced node, or a default.
+
+
+
+

Visitation

+
+
+
template <typename Func>
+ auto visit(Func&& visitor) const →  decltype(auto) noexcept(…) +
+
Invokes a visitor on the viewed node based on its concrete type.
+
+
+
+

Friends

+
+
+ auto operator<<(std::ostream& os, + const node_view& nv) →  std::ostream& +
+
Prints the viewed node out to a stream.
+
+
+
+

Function documentation

+
+

+
+ template <typename ViewedType> +
+ node_view toml::node_view::at_path(std::string_view path) const noexcept +

+

Returns a view of the subnode matching a fully-qualified "TOML path".

+ +
+
+

+
+ template <typename ViewedType> +
+ node_view toml::node_view::at_path(const toml::path& path) const noexcept +

+

Returns a view of the subnode matching a fully-qualified "TOML path".

+ +
+
+

+
+ template <typename ViewedType> +
+ node_view toml::node_view::at_path(std::wstring_view path) const +

+

Returns a view of the subnode matching a fully-qualified "TOML path".

+ +
+
+

+
+ template <typename ViewedType> +
+ node_view toml::node_view::operator[](std::string_view key) const noexcept +

+

Returns a view of the selected subnode.

+ + + + + + + + + + + + + + + + +
Parameters
keyThe key of the node to retrieve
ReturnsA view of the selected node if this node represented a table and it contained a value at the given key, or an empty view.
+
+
+

+
+ template <typename ViewedType> +
+ node_view toml::node_view::operator[](const toml::path& path) const noexcept +

+

Returns a view of the selected subnode.

+ + + + + + + + + + + + + + + + +
Parameters
pathA "TOML path" to the desired subnode
ReturnsA view of the selected node if this node represented a table and it contained a value at the given key, or an empty view.
+
+
+

+
+ template <typename ViewedType> +
+ node_view toml::node_view::operator[](std::wstring_view key) const +

+

Returns a view of the selected subnode.

+ + + + + + + + + + + + + + + + +
Parameters
keyThe key of the node to retrieve
ReturnsA view of the selected node if this node represented a table and it contained a value at the given key, or an empty view.
+ +
+
+

+
+ template <typename ViewedType> +
+ node_view toml::node_view::operator[](size_t index) const noexcept +

+

Returns a view of the selected subnode.

+ + + + + + + + + + + + + + + + +
Parameters
indexThe index of the node to retrieve
ReturnsA view of the selected node if this node represented an array and it contained a value at the given index, or an empty view.
+
+
+

+
+ template <typename ViewedType> +
+ template <typename T> +
+ auto* toml::node_view::as() const noexcept +

+

Gets a pointer to the viewed node as a more specific node type.

+ + + + + + + + + + + + + + + + +
Template parameters
TThe node type or TOML value type to cast to.
ReturnsA pointer to the node as the given type, or nullptr if it was a different type.
+ +
+
+

+
+ template <typename ViewedType> +
+ template <typename T> +
+ bool toml::node_view::is() const noexcept +

+

Checks if this view references a node of a specific type.

+ + + + + + + + + + + + + + + + +
Template parameters
TA TOML node or value type.
ReturnsReturns true if the viewed node is an instance of the specified type.
+ +
+
+

+
+ template <typename ViewedType> +
+ bool toml::node_view::is_homogeneous(node_type ntype, + viewed_type*& first_nonmatch) const noexcept +

+

Checks if the viewed node contains values/elements of only one type.

+ + + + + + + + + + + + + + + + + + + + +
Parameters
ntypeA TOML node type.
toml::node_type::none: "is every element the same type?" Anything else: "is every element one of these?"
first_nonmatchReference to a pointer in which the address of the first non-matching element will be stored if the return value is false.
ReturnsTrue if the viewed node was homogeneous.
+
auto cfg = toml::parse("arr = [ 1, 2, 3, 4.0 ]");
+
+toml::node* nonmatch{};
+if (cfg["arr"].is_homogeneous(toml::node_type::integer, nonmatch))
+    std::cout << "array was homogeneous"sv << "\n";
+else
+    std::cout << "array was not homogeneous!\n"
+    << "first non-match was a "sv << nonmatch->type() << " at " << nonmatch->source() << "\n";
array was not homogeneous!
+first non-match was a floating-point at line 1, column 18
+
+
+

+
+ template <typename ViewedType> +
+ bool toml::node_view::is_homogeneous(node_type ntype) const noexcept +

+

Checks if the viewed node contains values/elements of only one type.

+ + + + + + + + + + + + + + + + +
Parameters
ntypeA TOML node type.
toml::node_type::none: "is every element the same type?" Anything else: "is every element one of these?"
ReturnsTrue if the viewed node was homogeneous.
+
auto cfg = toml::parse("arr = [ 1, 2, 3 ]");
+std::cout << "homogenous: "sv << cfg["arr"].is_homogeneous(toml::node_type::none) << "\n";
+std::cout << "all floats: "sv << cfg["arr"].is_homogeneous(toml::node_type::floating_point) << "\n";
+std::cout << "all arrays: "sv << cfg["arr"].is_homogeneous(toml::node_type::array) << "\n";
+std::cout << "all ints:   "sv << cfg["arr"].is_homogeneous(toml::node_type::integer) << "\n";
homogeneous: true
+all floats:  false
+all arrays:  false
+all ints:    true
+
+
+

+
+ template <typename ViewedType> +
+ template <typename ElemType = void> +
+ bool toml::node_view::is_homogeneous() const noexcept +

+

Checks if the viewed node contains values/elements of only one type.

+ + + + + + + + + + + + + + + + +
Template parameters
ElemTypeA TOML node or value type.
Left as void: "is every element the same type?"
Explicitly specified: "is every element a T?"
ReturnsTrue if the viewed node was homogeneous.
+
auto cfg = toml::parse("arr = [ 1, 2, 3 ]");
+std::cout << "homogenous:   "sv << cfg["arr"].is_homogeneous() << "\n";
+std::cout << "all doubles:  "sv << cfg["arr"].is_homogeneous<double>() << "\n";
+std::cout << "all arrays:   "sv << cfg["arr"].is_homogeneous<toml::array>() << "\n";
+std::cout << "all integers: "sv << cfg["arr"].is_homogeneous<int64_t>() << "\n";
homogeneous: true
+all floats:  false
+all arrays:  false
+all ints:    true
+
+
+

+
+ template <typename ViewedType> +
+ template <typename T> +
+ decltype(auto) toml::node_view::ref() const noexcept +

+

Gets a raw reference to the viewed node's underlying data.

+ + + + + + + + + + + + + + + + +
Template parameters
TOne of the TOML value types.
ReturnsA reference to the underlying data.
+ +
+
+

+
+ template <typename ViewedType> +
+ template <typename T> +
+ optional<T> toml::node_view::value() const noexcept(…) +

+

Gets the value contained by the referenced node.

+ + + + + + + + + + + + + + + + +
Template parameters
TOne of the native TOML value types, or a type capable of convertible to one.
ReturnsThe underlying value if the node was a value of the matching type (or convertible to it) and within the range of the output type, or an empty optional.
+

This function has 'permissive' retrieval semantics; some value types are allowed to convert to others (e.g. retrieving a boolean as an integer), and the specified return value type can be any type where a reasonable conversion from a native TOML value exists (e.g. std::wstring on Windows). If the source value cannot be represented by the destination type, an empty optional is returned. See node::value() for examples.

+
+
+

+
+ template <typename ViewedType> +
+ template <typename T> +
+ optional<T> toml::node_view::value_exact() const noexcept(…) +

+

Gets the value contained by the referenced node.

+ + + + + + + + + + + + + + + + +
Template parameters
TOne of the native TOML value types, or a type capable of losslessly representing one.
ReturnsThe underlying value if the node was a value of the matching type (or losslessly convertible to it), or an empty optional.
+

This function has 'exact' retrieval semantics; the only return value types allowed are the TOML native value types, or types that can losslessly represent a native value type (e.g. std::wstring on Windows).

+
+
+

+
+ template <typename ViewedType> +
+ template <typename T> +
+ auto toml::node_view::value_or(T&& default_value) const noexcept(…) +

+

Gets the raw value contained by the referenced node, or a default.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
Template parameters
TDefault value type. Must be one of the native TOML value types, or convertible to it.
Parameters
default_valueThe default value to return if the node wasn't a value, wasn't the correct type, or no conversion was possible.
ReturnsThe underlying value if the node was a value of the matching type (or convertible to it) and within the range of the output type, or the provided default.
+ +
+
+

+
+ template <typename ViewedType> +
+ template <typename Func> +
+ decltype(auto) toml::node_view::visit(Func&& visitor) const noexcept(…) +

+

Invokes a visitor on the viewed node based on its concrete type.

+ +
+
+

+
+ template <typename ViewedType> +
+ std::ostream& operator<<(std::ostream& os, + const node_view& nv) +

+

Prints the viewed node out to a stream.

+ +
+
+
+
+
+
+ + + + + + + \ No newline at end of file diff --git a/classtoml_1_1parse__error.html b/classtoml_1_1parse__error.html new file mode 100644 index 0000000000..9189c075fc --- /dev/null +++ b/classtoml_1_1parse__error.html @@ -0,0 +1,210 @@ + + + + toml::parse_error class | toml++ TOML for C++ + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ toml::parse_error class +

+

An error generated when parsing fails.

+ + +
+

Public functions

+
+
+ auto description() const →  std::string_view noexcept +
+
Returns a textual description of the error.
+
+ auto source() const →  const source_region& noexcept +
+
Returns the region of the source document responsible for the error.
+
+
+
+

Friends

+
+
+ auto operator<<(std::ostream& lhs, + const parse_error& rhs) →  std::ostream& +
+
Prints a parse_error to a stream.
+
+
+
+

Function documentation

+
+

+ std::string_view toml::parse_error::description() const noexcept +

+

Returns a textual description of the error.

+ +
+
+

+ std::ostream& operator<<(std::ostream& lhs, + const parse_error& rhs) +

+

Prints a parse_error to a stream.

+ + + + + + + + + + + + + + + + + + + + +
Parameters
lhsThe stream.
rhsThe parse_error.
ReturnsThe input stream.
+
try
+{
+    auto tbl = toml::parse("enabled = trUe"sv);
+}
+catch (const toml::parse_error & err)
+{
+    std::cerr << "Parsing failed:\n"sv << err << "\n";
+}
Parsing failed:
+Encountered unexpected character while parsing boolean; expected 'true', saw 'trU'
+    (error occurred at line 1, column 13)
+
+
+
+
+
+
+ + + + + + + \ No newline at end of file diff --git a/classtoml_1_1parse__result.html b/classtoml_1_1parse__result.html new file mode 100644 index 0000000000..123d77d2c0 --- /dev/null +++ b/classtoml_1_1parse__result.html @@ -0,0 +1,544 @@ + + + + toml::parse_result class | toml++ TOML for C++ + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ toml::parse_result class +

+

The result of a parsing operation.

+ +

A parse_result is effectively a discriminated union containing either a toml::table or a toml::parse_error. Most member functions assume a particular one of these two states, and calling them when in the wrong state will cause errors (e.g. attempting to access the error object when parsing was successful).

toml::parse_result result = toml::parse_file("config.toml");
+if (result)
+    do_stuff_with_a_table(result); //implicitly converts to table&
+else
+    std::cerr << "Parse failed:\n"sv << result.error() << "\n";
example output:
+
+Parse failed:
+Encountered unexpected character while parsing boolean; expected 'true', saw 'trU'
+    (error occurred at line 1, column 13 of 'config.toml')

Getting node_views (operator[], at_path()) and using the iterator accessor functions (begin(), end() etc.) are unconditionally safe; when parsing fails these just return 'empty' values. A ranged-for loop on a failed parse_result is also safe since begin() and end() return the same iterator and will not lead to any dereferences and iterations.

+
+

Constructors, destructors, conversion operators

+
+
+ parse_result() noexcept +
+
Default constructs an 'error' result.
+
+ parse_result(parse_result&& res) noexcept +
+
Move constructor.
+
+ ~parse_result() noexcept +
+
Destructor.
+
+
+
+

Public functions

+
+
+ auto operator=(parse_result&& rhs) →  parse_result& noexcept +
+
Move-assignment operator.
+
+
+
+

Failed parses

+ +
+
+ auto error() & →  parse_error& noexcept +
+
Returns the internal toml::parse_error.
+
+ auto error() && →  parse_error&& noexcept +
+
Returns the internal toml::parse_error (rvalue overload).
+
+ auto error() const & →  const parse_error& noexcept +
+
Returns the internal toml::parse_error (const lvalue overload).
+
+ operator const parse_error&() const explicit noexcept +
+
Returns the internal toml::parse_error (const lvalue overload).
+
+ operator parse_error&() explicit noexcept +
+
Returns the internal toml::parse_error.
+
+ operator parse_error&&() explicit noexcept +
+
Returns the internal toml::parse_error (rvalue overload).
+
+
+
+

Iteration

+
+
+ using const_iterator = const_table_iterator +
+
A BidirectionalIterator for iterating over const key-value pairs in a wrapped toml::table.
+
+ using iterator = table_iterator +
+
A BidirectionalIterator for iterating over key-value pairs in a wrapped toml::table.
+
+ auto begin() →  table_iterator noexcept +
+
Returns an iterator to the first key-value pair in the wrapped table.
+
+ auto begin() const →  const_table_iterator noexcept +
+
Returns an iterator to the first key-value pair in the wrapped table.
+
+ auto cbegin() const →  const_table_iterator noexcept +
+
Returns an iterator to the first key-value pair in the wrapped table.
+
+ auto cend() const →  const_table_iterator noexcept +
+
Returns an iterator to one-past-the-last key-value pair in the wrapped table.
+
+ auto end() →  table_iterator noexcept +
+
Returns an iterator to one-past-the-last key-value pair in the wrapped table.
+
+ auto end() const →  const_table_iterator noexcept +
+
Returns an iterator to one-past-the-last key-value pair in the wrapped table.
+
+
+
+

Node views

+
+
+ auto at_path(std::string_view path) →  node_view<node> noexcept +
+
Returns a view of the subnode matching a fully-qualified "TOML path".
+
+ auto at_path(std::string_view path) const →  node_view<const node> noexcept +
+
Returns a const view of the subnode matching a fully-qualified "TOML path".
+
+ auto at_path(const toml::path& path) →  node_view<node> noexcept +
+
Returns a view of the subnode matching a fully-qualified "TOML path".
+
+ auto at_path(const toml::path& path) const →  node_view<const node> noexcept +
+
Returns a const view of the subnode matching a fully-qualified "TOML path".
+
+ auto at_path(std::wstring_view path) →  node_view<node> +
+
Returns a view of the subnode matching a fully-qualified "TOML path".
+
+ auto at_path(std::wstring_view path) const →  node_view<const node> +
+
Returns a const view of the subnode matching a fully-qualified "TOML path".
+
+ auto operator[](const toml::path& path) →  node_view<node> noexcept +
+
Returns a view of the subnode matching a fully-qualified "TOML path".
+
+ auto operator[](const toml::path& path) const →  node_view<const node> noexcept +
+
Returns a const view of the subnode matching a fully-qualified "TOML path".
+
+ auto operator[](std::string_view key) →  node_view<node> noexcept +
+
Gets a node_view for the selected key-value pair in the wrapped table.
+
+ auto operator[](std::string_view key) const →  node_view<const node> noexcept +
+
Gets a node_view for the selected key-value pair in the wrapped table (const overload).
+
+ auto operator[](std::wstring_view key) →  node_view<node> +
+
Gets a node_view for the selected key-value pair in the wrapped table.
+
+ auto operator[](std::wstring_view key) const →  node_view<const node> +
+
Gets a node_view for the selected key-value pair in the wrapped table (const overload).
+
+
+
+

Result state

+
+
+ auto failed() const →  bool noexcept +
+
Returns true if parsing failed.
+
+ operator bool() const explicit noexcept +
+
Returns true if parsing succeeded.
+
+ auto succeeded() const →  bool noexcept +
+
Returns true if parsing succeeeded.
+
+
+
+

Successful parses

+ +
+
+ operator const toml::table&() const noexcept +
+
Returns the internal toml::table (const lvalue overload).
+
+ operator toml::table&() noexcept +
+
Returns the internal toml::table.
+
+ operator toml::table&&() noexcept +
+
Returns the internal toml::table (rvalue overload).
+
+ auto table() & →  toml::table& noexcept +
+
Returns the internal toml::table.
+
+ auto table() && →  toml::table&& noexcept +
+
Returns the internal toml::table (rvalue overload).
+
+ auto table() const & →  const toml::table& noexcept +
+
Returns the internal toml::table (const lvalue overload).
+
+
+
+

Friends

+
+
+ auto operator<<(std::ostream& os, + const parse_result& result) →  std::ostream& +
+
Prints the held error or table object out to a text stream.
+
+
+
+

Function documentation

+
+

+ table_iterator toml::parse_result::begin() noexcept +

+

Returns an iterator to the first key-value pair in the wrapped table.

+ +
+
+

+ const_table_iterator toml::parse_result::begin() const noexcept +

+

Returns an iterator to the first key-value pair in the wrapped table.

+ +
+
+

+ const_table_iterator toml::parse_result::cbegin() const noexcept +

+

Returns an iterator to the first key-value pair in the wrapped table.

+ +
+
+

+ node_view<node> toml::parse_result::at_path(std::string_view path) noexcept +

+

Returns a view of the subnode matching a fully-qualified "TOML path".

+ +
+
+

+ node_view<const node> toml::parse_result::at_path(std::string_view path) const noexcept +

+

Returns a const view of the subnode matching a fully-qualified "TOML path".

+ +
+
+

+ node_view<node> toml::parse_result::at_path(const toml::path& path) noexcept +

+

Returns a view of the subnode matching a fully-qualified "TOML path".

+ +
+
+

+ node_view<const node> toml::parse_result::at_path(const toml::path& path) const noexcept +

+

Returns a const view of the subnode matching a fully-qualified "TOML path".

+ +
+
+

+ node_view<node> toml::parse_result::at_path(std::wstring_view path) +

+

Returns a view of the subnode matching a fully-qualified "TOML path".

+ +
+
+

+ node_view<const node> toml::parse_result::at_path(std::wstring_view path) const +

+

Returns a const view of the subnode matching a fully-qualified "TOML path".

+ +
+
+

+ node_view<node> toml::parse_result::operator[](const toml::path& path) noexcept +

+

Returns a view of the subnode matching a fully-qualified "TOML path".

+ +
+
+

+ node_view<const node> toml::parse_result::operator[](const toml::path& path) const noexcept +

+

Returns a const view of the subnode matching a fully-qualified "TOML path".

+ +
+
+

+ node_view<node> toml::parse_result::operator[](std::string_view key) noexcept +

+

Gets a node_view for the selected key-value pair in the wrapped table.

+ + + + + + + + + + + + + + + + +
Parameters
keyThe key used for the lookup.
ReturnsA view of the value at the given key if parsing was successful and a matching key existed, or an empty node view.
+ +
+
+

+ node_view<const node> toml::parse_result::operator[](std::string_view key) const noexcept +

+

Gets a node_view for the selected key-value pair in the wrapped table (const overload).

+ + + + + + + + + + + + + + + + +
Parameters
keyThe key used for the lookup.
ReturnsA view of the value at the given key if parsing was successful and a matching key existed, or an empty node view.
+ +
+
+

+ node_view<node> toml::parse_result::operator[](std::wstring_view key) +

+

Gets a node_view for the selected key-value pair in the wrapped table.

+ + + + + + + + + + + + + + + + +
Parameters
keyThe key used for the lookup.
ReturnsA view of the value at the given key if parsing was successful and a matching key existed, or an empty node view.
+ +
+
+

+ node_view<const node> toml::parse_result::operator[](std::wstring_view key) const +

+

Gets a node_view for the selected key-value pair in the wrapped table (const overload).

+ + + + + + + + + + + + + + + + +
Parameters
keyThe key used for the lookup.
ReturnsA view of the value at the given key if parsing was successful and a matching key existed, or an empty node view.
+ +
+
+

+ std::ostream& operator<<(std::ostream& os, + const parse_result& result) +

+

Prints the held error or table object out to a text stream.

+ +
+
+
+
+
+
+ + + + + + + \ No newline at end of file diff --git a/classtoml_1_1path.html b/classtoml_1_1path.html new file mode 100644 index 0000000000..3d17718344 --- /dev/null +++ b/classtoml_1_1path.html @@ -0,0 +1,648 @@ + + + + toml::path class | toml++ TOML for C++ + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ toml::path class +

+

A TOML path.

+ +

This type parses and represents a path to a TOML node. It validates the syntax of the path but does not ensure that the path refers to a valid node in any particular TOML document. If parsing fails, the object will evaluate as 'falsy', and will be empty.

toml::path the_path("animals.cats[1]");
+
+// can use with tbl.at_path or operator[]
+std::cout << "second cat: " << tbl[the_path] << "\n";
+std::cout << "cats: " << tbl.at_path(the_path.parent_path()) << "\n";
second cat: lion
+cats: ['tiger', 'lion', 'puma']
+
+

Constructors, destructors, conversion operators

+
+
+ operator bool() const explicit noexcept +
+
Returns true if the path has one or more components.
+
+ path() defaulted noexcept +
+
Default constructor.
+
+ path(std::string_view) explicit +
+
Construct a path by parsing from a string.
+
+ path(std::wstring_view) explicit +
+
Construct a path by parsing from a string.
+
+ path(const path&) defaulted +
+
Copy constructor.
+
+ path(path&&) defaulted noexcept +
+
Move constructor.
+
+ ~path() defaulted noexcept +
+
Default destructor.
+
+
+
+

Public functions

+
+
+ auto empty() const →  bool noexcept +
+
Whether (true) or not (false) the path is empty.
+
+ auto operator[](size_t index) →  path_component& noexcept +
+
Fetch a path component by index.
+
+ auto operator[](size_t index) const →  const path_component& noexcept +
+
Fetch a path component by index (const overload).
+
+ auto size() const →  size_t noexcept +
+
Returns the number of components in the path.
+
+
+
+

Appending

+
+
+ auto append(const path& p) →  path& +
+
Appends another path onto the end of this one.
+
+ auto append(path&& p) →  path& +
+
Appends another path onto the end of this one.
+
+ auto append(std::string_view str) →  path& +
+
Parses a path and appends it onto the end of this one.
+
+ auto append(std::wstring_view str) →  path& +
+
Parses a path and appends it onto the end of this one.
+
+ auto operator+=(const path&) →  path& +
+
Appends another path onto the end of this one.
+
+ auto operator+=(path&&) →  path& +
+
Appends another path onto the end of this one.
+
+ auto operator+=(std::string_view) →  path& +
+
Parses a path and appends it onto the end of this one.
+
+ auto operator+=(std::wstring_view) →  path& +
+
Parses a path and appends it onto the end of this one.
+
+
+
+

Assignment

+
+
+ auto assign(const path& p) →  path& +
+
Replaces the contents of the path with that of another.
+
+ auto assign(path&& p) →  path& noexcept +
+
Replaces the contents of the path with that of another.
+
+ auto assign(std::string_view str) →  path& +
+
Replaces the contents of the path object by a new path.
+
+ auto assign(std::wstring_view str) →  path& +
+
Replaces the contents of the path object by a new path.
+
+ auto operator=(const path&) →  path& defaulted +
+
Copy-assignment operator.
+
+ auto operator=(path&&) →  path& defaulted noexcept +
+
Move-assignment operator.
+
+ auto operator=(std::string_view) →  path& +
+
Replaces the contents of the path by parsing from a string.
+
+ auto operator=(std::wstring_view) →  path& +
+
Replaces the contents of the path by parsing from a string.
+
+
+
+

Concatenation

+
+
+ auto operator+(const path& lhs, + const path& rhs) →  path +
+
Concatenates two paths.
+
+ auto operator+(const path& lhs, + std::string_view rhs) →  path +
+
Concatenates two paths.
+
+ auto operator+(std::string_view lhs, + const path& rhs) →  path +
+
Concatenates two paths.
+
+ auto operator+(const path& lhs, + std::wstring_view rhs) →  path +
+
Concatenates two paths.
+
+ auto operator+(std::wstring_view lhs, + const path& rhs) →  path +
+
Concatenates two paths.
+
+
+
+

Equality

+
+
+ auto operator!=(const path& lhs, + const path& rhs) →  bool noexcept +
+
Returns whether two paths are not the same.
+
+ auto operator!=(const path& lhs, + std::string_view rhs) →  bool +
+
Returns whether two paths are not the same.
+
+ auto operator!=(std::string_view lhs, + const path& rhs) →  bool +
+
Returns whether two paths are not the same.
+
+ auto operator!=(const path& lhs, + std::wstring_view rhs) →  bool +
+
Returns whether two paths are not the same.
+
+ auto operator!=(std::wstring_view lhs, + const path& rhs) →  bool +
+
Returns whether two paths are not the same.
+
+ auto operator==(const path& lhs, + const path& rhs) →  bool noexcept +
+
Returns whether two paths are the same.
+
+ auto operator==(const path& lhs, + std::string_view rhs) →  bool +
+
Returns whether two paths are the same.
+
+ auto operator==(std::string_view lhs, + const path& rhs) →  bool +
+
Returns whether two paths are the same.
+
+ auto operator==(const path& lhs, + std::wstring_view rhs) →  bool +
+
Returns whether two paths are the same.
+
+ auto operator==(std::wstring_view lhs, + const path& rhs) →  bool +
+
Returns whether two paths are the same.
+
+
+
+

Iteration

+
+
+ using const_iterator = std::vector<path_component>::const_iterator +
+
+
+ using iterator = std::vector<path_component>::iterator +
+
+
+ auto begin() →  iterator noexcept +
+
Returns an iterator to the first component in the path.
+
+ auto begin() const →  const_iterator noexcept +
+
Returns a const iterator to the first component in the path.
+
+ auto cbegin() const →  const_iterator noexcept +
+
Returns a const iterator to the first component in the path.
+
+ auto cend() const →  const_iterator noexcept +
+
Returns a const iterator to one-past-the-last component in the path.
+
+ auto end() →  iterator noexcept +
+
Returns an iterator to one-past-the-last component in the path.
+
+ auto end() const →  const_iterator noexcept +
+
Returns a const iterator to one-past-the-last component in the path.
+
+
+
+

Prepending

+
+
+ auto prepend(const path&) →  path& +
+
Prepends another path onto the beginning of this one.
+
+ auto prepend(path&&) →  path& +
+
Prepends another path onto the beginning of this one.
+
+ auto prepend(std::string_view) →  path& +
+
Parses a path and prepends it onto the beginning of this one.
+
+ auto prepend(std::wstring_view) →  path& +
+
Parses a path and prepends it onto the beginning of this one.
+
+
+
+

String conversion

+
+
+ operator std::string() const explicit +
+
Returns a string representation of this path.
+
+ operator std::wstring() const explicit +
+
Returns a string representation of this path.
+
+ auto str() const →  std::string +
+
Returns a string representation of this path.
+
+ auto wide_str() const →  std::wstring +
+
Returns a string representation of this path.
+
+ auto operator<<(std::ostream& os, + const path& rhs) →  std::ostream& +
+
Prints the string representation of a toml::path out to a stream.
+
+
+
+

Subpaths and Truncation

+
+
+ void clear() noexcept +
+
Erases the contents of the path.
+
+ auto leaf(size_t n = 1) const →  path +
+
Returns a toml::path object representing terminal n-parts of a TOML path.
+
+ auto parent() const →  path +
+
Returns a toml::path object representing the path of the parent node.
+
+ auto subpath(const_iterator start, + const_iterator end) const →  path +
+
Returns a toml::path object that is a specified subpath of the current path, representing the range of path components from [start, end).
+
+ auto subpath(size_t start, + size_t length) const →  path +
+
Returns a toml::path object that is a specified subpath of the current path, representing the range of path components with indexes from [start, start + length].
+
+ auto truncate(size_t n) →  path& +
+
Removes the number of terminal path components specified by n.
+
+ auto truncated(size_t n) const →  path +
+
Returns a toml::path object which has had n terminal path components removed.
+
+
+
+

Typedef documentation

+
+

+ using toml::path::const_iterator = std::vector<path_component>::const_iterator +

+

A const iterator for iterating over the components in the path.

+
+
+

+ using toml::path::iterator = std::vector<path_component>::iterator +

+

An iterator for iterating over the components in the path.

+
+
+
+

Function documentation

+
+

+ toml::path::path(std::wstring_view) explicit +

+

Construct a path by parsing from a string.

+ +
+
+

+ path& toml::path::append(std::wstring_view str) +

+

Parses a path and appends it onto the end of this one.

+ +
+
+

+ path& toml::path::operator+=(std::wstring_view) +

+

Parses a path and appends it onto the end of this one.

+ +
+
+

+ path& toml::path::assign(std::wstring_view str) +

+

Replaces the contents of the path object by a new path.

+ +
+
+

+ path& toml::path::operator=(std::wstring_view) +

+

Replaces the contents of the path by parsing from a string.

+ +
+
+

+ path toml::path::operator+(const path& lhs, + std::wstring_view rhs) +

+

Concatenates two paths.

+ +
+
+

+ path toml::path::operator+(std::wstring_view lhs, + const path& rhs) +

+

Concatenates two paths.

+ +
+
+

+ bool toml::path::operator!=(const path& lhs, + std::wstring_view rhs) +

+

Returns whether two paths are not the same.

+ +
+
+

+ bool toml::path::operator!=(std::wstring_view lhs, + const path& rhs) +

+

Returns whether two paths are not the same.

+ +
+
+

+ bool toml::path::operator==(const path& lhs, + std::wstring_view rhs) +

+

Returns whether two paths are the same.

+ +
+
+

+ bool toml::path::operator==(std::wstring_view lhs, + const path& rhs) +

+

Returns whether two paths are the same.

+ +
+
+

+ iterator toml::path::begin() noexcept +

+

Returns an iterator to the first component in the path.

+ +
+
+

+ const_iterator toml::path::begin() const noexcept +

+

Returns a const iterator to the first component in the path.

+ +
+
+

+ const_iterator toml::path::cbegin() const noexcept +

+

Returns a const iterator to the first component in the path.

+ +
+
+

+ const_iterator toml::path::cend() const noexcept +

+

Returns a const iterator to one-past-the-last component in the path.

+ +
+
+

+ iterator toml::path::end() noexcept +

+

Returns an iterator to one-past-the-last component in the path.

+ +
+
+

+ const_iterator toml::path::end() const noexcept +

+

Returns a const iterator to one-past-the-last component in the path.

+ +
+
+

+ path& toml::path::prepend(std::wstring_view) +

+

Parses a path and prepends it onto the beginning of this one.

+ +
+
+

+ toml::path::operator std::wstring() const explicit +

+

Returns a string representation of this path.

+ +
+
+

+ std::wstring toml::path::wide_str() const +

+

Returns a string representation of this path.

+ +
+
+
+
+
+
+ + + + + + + \ No newline at end of file diff --git a/classtoml_1_1path__component.html b/classtoml_1_1path__component.html new file mode 100644 index 0000000000..0fb3850ccd --- /dev/null +++ b/classtoml_1_1path__component.html @@ -0,0 +1,263 @@ + + + + toml::path_component class | toml++ TOML for C++ + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ toml::path_component class +

+

Represents a single component of a complete 'TOML-path': either a key or an array index.

+ +
+

Constructors, destructors, conversion operators

+
+
+ path_component() +
+
Default constructor (creates an empty key).
+
+ path_component(size_t index) noexcept +
+
Constructor for a path component that is an array index.
+
+ path_component(std::string_view key) +
+
Constructor for a path component that is a key string.
+
+ path_component(std::wstring_view key) +
+
Constructor for a path component that is a key string.
+
+ path_component(const path_component& pc) +
+
Copy constructor.
+
+ path_component(path_component&& pc) noexcept +
+
Move constructor.
+
+ ~path_component() noexcept +
+
Destructor.
+
+
+
+

Public functions

+
+
+ auto operator=(const path_component& rhs) →  path_component& +
+
Copy-assignment operator.
+
+ auto operator=(path_component&& rhs) →  path_component& noexcept +
+
Move-assignment operator.
+
+ auto operator=(size_t new_index) →  path_component& noexcept +
+
Assigns an array index to this path component.
+
+ auto operator=(std::string_view new_key) →  path_component& +
+
Assigns a path key to this path component.
+
+ auto operator=(std::wstring_view new_key) →  path_component& +
+
Assigns a path key to this path component.
+
+ auto type() const →  path_component_type noexcept +
+
Retrieve the type of this path component, either path_component::key or path_component::array_index.
+
+
+
+

Array index accessors

+ +
+
+ auto index() const →  size_t noexcept +
+
Returns the array index (const lvalue overload).
+
+ operator size_t() const explicit noexcept +
+
Returns the array index (const lvalue).
+
+
+
+

Equality

+
+
+ auto operator!=(const path_component& lhs, + const path_component& rhs) →  bool noexcept +
+
Returns true if two path components do not represent the same key or array index.
+
+ auto operator==(const path_component& lhs, + const path_component& rhs) →  bool noexcept +
+
Returns true if two path components represent the same key or array index.
+
+
+
+

Key accessors

+ +
+
+ auto key() const →  const std::string& noexcept +
+
Returns the key string.
+
+ operator const std::string&() const explicit noexcept +
+
Returns the key string.
+
+
+
+

Function documentation

+
+

+ toml::path_component::path_component(std::wstring_view key) +

+

Constructor for a path component that is a key string.

+ +
+
+

+ path_component& toml::path_component::operator=(std::wstring_view new_key) +

+

Assigns a path key to this path component.

+ +
+
+
+
+
+
+ + + + + + + \ No newline at end of file diff --git a/classtoml_1_1table.html b/classtoml_1_1table.html new file mode 100644 index 0000000000..167d451100 --- /dev/null +++ b/classtoml_1_1table.html @@ -0,0 +1,2153 @@ + + + + toml::table class | toml++ TOML for C++ + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ toml::table class +

+

A TOML table.

+ +

The interface of this type is modeled after std::map, with some additional considerations made for the heterogeneous nature of a TOML table.

toml::table tbl = toml::parse(R"(
+
+    [animals]
+    cats = [ "tiger", "lion", "puma" ]
+    birds = [ "macaw", "pigeon", "canary" ]
+    fish = [ "salmon", "trout", "carp" ]
+
+)"sv);
+
+// operator[] retrieves node-views
+std::cout << "cats: " << tbl["animals"]["cats"] << "\n";
+std::cout << "fish[1]: " << tbl["animals"]["fish"][1] << "\n";
+
+// at_path() does fully-qualified "toml path" lookups
+std::cout << "cats: " << tbl.at_path("animals.cats") << "\n";
+std::cout << "fish[1]: " << tbl.at_path("animals.fish[1]") << "\n";
cats: ['tiger', 'lion', 'puma']
+fish[1] : 'trout'
+cats : ['tiger', 'lion', 'puma']
+fish[1] : 'trout'
+
+

Base classes

+
+
+ class node +
+
A TOML node.
+
+
+
+

Constructors, destructors, conversion operators

+
+
+ table() noexcept +
+
Default constructor.
+
+ table(const table&) +
+
Copy constructor.
+
+ table(table&& other) noexcept +
+
Move constructor.
+
+ table(std::initializer_list<impl::table_init_pair> kvps) explicit +
+
Constructs a table with one or more initial key-value pairs.
+
+
+
+

Public functions

+
+
+ auto operator=(const table&) →  table& +
+
Copy-assignment operator.
+
+ auto operator=(table&& rhs) →  table& noexcept +
+
Move-assignment operator.
+
+
+
+

Equality

+
+
+ auto operator!=(const table& lhs, + const table& rhs) →  bool noexcept +
+
Inequality operator.
+
+ auto operator==(const table& lhs, + const table& rhs) →  bool noexcept +
+
Equality operator.
+
+
+
+

Erasure

+
+
+ void clear() noexcept +
+
Removes all key-value pairs from the table.
+
+ auto erase(iterator pos) →  iterator noexcept +
+
Removes the specified key-value pair from the table.
+
+ auto erase(const_iterator pos) →  iterator noexcept +
+
Removes the specified key-value pair from the table (const iterator overload).
+
+ auto erase(const_iterator begin, + const_iterator end) →  iterator noexcept +
+
Removes the key-value pairs in the range [first, last) from the table.
+
+ auto erase(std::string_view key) →  size_t noexcept +
+
Removes the value with the given key from the table.
+
+ auto erase(std::wstring_view key) →  size_t +
+
Removes the value with the given key from the table.
+
+ auto prune(bool recursive = true) & →  table& noexcept +
+
Removes empty child arrays and tables.
+
+ auto prune(bool recursive = true) && →  table&& noexcept +
+
Removes empty child arrays and tables (rvalue overload).
+
+
+
+

Insertion and Emplacement

+
+
+
template <typename ValueType = void, typename KeyType, typename... ValueArgs>
+ auto emplace(KeyType&& key, + ValueArgs && ... args) →  std::pair<iterator, bool> +
+
Emplaces a new value at a specific key if one did not already exist.
+
+
template <typename ValueType = void, typename KeyType, typename... ValueArgs>
+ auto emplace_hint(const_iterator hint, + KeyType&& key, + ValueArgs && ... args) →  iterator +
+
Emplaces a new value at a specific key if one did not already exist.
+
+
template <typename KeyType, typename ValueType>
+ auto insert(KeyType&& key, + ValueType&& val, + value_flags flags = preserve_source_value_flags) →  std::pair<iterator, bool> +
+
Inserts a new value at a specific key if one did not already exist.
+
+
template <typename Iter>
+ void insert(Iter begin, + Iter end, + value_flags flags = preserve_source_value_flags) +
+
Inserts a series of key-value pairs into the table.
+
+
template <typename KeyType, typename ValueType>
+ auto insert_or_assign(KeyType&& key, + ValueType&& val, + value_flags flags = preserve_source_value_flags) →  std::pair<iterator, bool> +
+
Inserts or assigns a value at a specific key.
+
+
+
+

Iteration

+
+
+ using const_iterator = toml::const_table_iterator +
+
A BidirectionalIterator for iterating over const key-value pairs in a toml::table.
+
+ using iterator = toml::table_iterator +
+
A BidirectionalIterator for iterating over key-value pairs in a toml::table.
+
+ auto begin() →  iterator noexcept +
+
Returns an iterator to the first key-value pair.
+
+ auto begin() const →  const_iterator noexcept +
+
Returns an iterator to the first key-value pair.
+
+ auto cbegin() const →  const_iterator noexcept +
+
Returns an iterator to the first key-value pair.
+
+ auto cend() const →  const_iterator noexcept +
+
Returns an iterator to one-past-the-last key-value pair.
+
+ auto end() →  iterator noexcept +
+
Returns an iterator to one-past-the-last key-value pair.
+
+ auto end() const →  const_iterator noexcept +
+
Returns an iterator to one-past-the-last key-value pair.
+
+
template <typename Func>
+ auto for_each(Func&& visitor) & →  table& noexcept(…) +
+
Invokes a visitor on each key-value pair in the table.
+
+
template <typename Func>
+ auto for_each(Func&& visitor) && →  table&& noexcept(…) +
+
Invokes a visitor on each key-value pair in the table (rvalue overload).
+
+
template <typename Func>
+ auto for_each(Func&& visitor) const & →  const table& noexcept(…) +
+
Invokes a visitor on each key-value pair in the table (const lvalue overload).
+
+
template <typename Func>
+ auto for_each(Func&& visitor) const && →  const table&& noexcept(…) +
+
Invokes a visitor on each key-value pair in the table (const rvalue overload).
+
+
+
+

Metadata

+
+
+ auto is_inline() const →  bool noexcept +
+
Returns true if this table is an inline table.
+
+ void is_inline(bool val) noexcept +
+
Sets whether this table is a TOML inline table.
+
+ auto source() const →  const source_region& noexcept +
+
Returns the source region responsible for generating this node during parsing.
+
+
+
+

Node views

+
+
+ auto at_path(std::string_view path) →  node_view<node> noexcept +
+
Returns a view of the subnode matching a fully-qualified "TOML path".
+
+ auto at_path(std::string_view path) const →  node_view<const node> noexcept +
+
Returns a const view of the subnode matching a fully-qualified "TOML path".
+
+ auto at_path(const toml::path& path) →  node_view<node> noexcept +
+
Returns a view of the subnode matching a fully-qualified "TOML path".
+
+ auto at_path(const toml::path& path) const →  node_view<const node> noexcept +
+
Returns a const view of the subnode matching a fully-qualified "TOML path".
+
+ auto at_path(std::wstring_view path) →  node_view<node> +
+
Returns a view of the subnode matching a fully-qualified "TOML path".
+
+ auto at_path(std::wstring_view path) const →  node_view<const node> +
+
Returns a const view of the subnode matching a fully-qualified "TOML path".
+
+ operator node_view<const node>() const explicit noexcept +
+
Creates a node_view pointing to this node (const overload).
+
+ operator node_view<node>() explicit noexcept +
+
Creates a node_view pointing to this node.
+
+ auto operator[](std::string_view key) →  node_view<node> noexcept +
+
Gets a node_view for the selected value.
+
+ auto operator[](std::string_view key) const →  node_view<const node> noexcept +
+
Gets a node_view for the selected value (const overload).
+
+ auto operator[](std::wstring_view key) →  node_view<node> +
+
Gets a node_view for the selected value.
+
+ auto operator[](std::wstring_view key) const →  node_view<const node> +
+
Gets a node_view for the selected value (const overload).
+
+ auto operator[](const toml::path& path) →  node_view<node> noexcept +
+
Returns a const view of the subnode matching a fully-qualified "TOML path".
+
+ auto operator[](const toml::path& path) const →  node_view<const node> noexcept +
+
Returns a const view of the subnode matching a fully-qualified "TOML path".
+
+
+
+

Searching

+
+
+ auto contains(std::string_view key) const →  bool noexcept +
+
Returns true if the table contains a node at the given key.
+
+ auto contains(std::wstring_view key) const →  bool +
+
Returns true if the table contains a node at the given key.
+
+ auto find(std::string_view key) →  iterator noexcept +
+
Gets an iterator to the node at a specific key.
+
+ auto find(std::string_view key) const →  const_iterator noexcept +
+
Gets an iterator to the node at a specific key (const overload)
+
+ auto find(std::wstring_view key) →  iterator +
+
Gets an iterator to the node at a specific key.
+
+ auto find(std::wstring_view key) const →  const_iterator +
+
Gets an iterator to the node at a specific key (const overload).
+
+ auto lower_bound(std::string_view key) →  iterator noexcept +
+
Returns an iterator to the first key-value pair with key that is not less than the given key.
+
+ auto lower_bound(std::string_view key) const →  const_iterator noexcept +
+
Returns a const iterator to the first key-value pair with key that is not less than the given key.
+
+ auto lower_bound(std::wstring_view key) →  iterator +
+
Returns an iterator to the first key-value pair with key that is not less than the given key.
+
+ auto lower_bound(std::wstring_view key) const →  const_iterator +
+
Returns a const iterator to the first key-value pair with key that is not less than the given key.
+
+
+
+

Size and Capacity

+
+
+ auto empty() const →  bool noexcept +
+
Returns true if the table is empty.
+
+ auto size() const →  size_t noexcept +
+
Returns the number of key-value pairs in the table.
+
+
+
+

Type casts

+
+
+
template <typename T>
+ auto as() →  impl::wrap_node<T>* noexcept +
+
Gets a pointer to the node as a more specific node type.
+
+
template <typename T>
+ auto as() const →  const impl::wrap_node<T>* noexcept +
+
Gets a pointer to the node as a more specific node type (const overload).
+
+ auto as_array() →  array* final noexcept +
+
Returns nullptr.
+
+ auto as_array() const →  const array* final noexcept +
+
Returns nullptr.
+
+ auto as_boolean() →  toml::value<bool>* final noexcept +
+
Returns nullptr.
+
+ auto as_boolean() const →  const toml::value<bool>* final noexcept +
+
Returns nullptr.
+
+ auto as_date() →  toml::value<date>* final noexcept +
+
Returns nullptr.
+
+ auto as_date() const →  const toml::value<date>* final noexcept +
+
Returns nullptr.
+
+ auto as_date_time() →  toml::value<date_time>* final noexcept +
+
Returns nullptr.
+
+ auto as_date_time() const →  const toml::value<date_time>* final noexcept +
+
Returns nullptr.
+
+ auto as_floating_point() →  toml::value<double>* final noexcept +
+
Returns nullptr.
+
+ auto as_floating_point() const →  const toml::value<double>* final noexcept +
+
Returns nullptr.
+
+ auto as_integer() →  toml::value<int64_t>* final noexcept +
+
Returns nullptr.
+
+ auto as_integer() const →  const toml::value<int64_t>* final noexcept +
+
Returns nullptr.
+
+ auto as_string() →  toml::value<std::string>* final noexcept +
+
Returns nullptr.
+
+ auto as_string() const →  const toml::value<std::string>* final noexcept +
+
Returns nullptr.
+
+ auto as_table() →  table* final noexcept +
+
Returns a pointer to the table.
+
+ auto as_table() const →  const table* final noexcept +
+
Returns a const-qualified pointer to the table.
+
+ auto as_time() →  toml::value<time>* final noexcept +
+
Returns nullptr.
+
+ auto as_time() const →  const toml::value<time>* final noexcept +
+
Returns nullptr.
+
+
+
+

Type checks

+
+
+
template <typename T>
+ auto is() const →  bool noexcept +
+
Checks if a node is a specific type.
+
+ auto is_array() const →  bool final noexcept +
+
Returns false.
+
+ auto is_array_of_tables() const →  bool final noexcept +
+
Returns false.
+
+ auto is_boolean() const →  bool final noexcept +
+
Returns false.
+
+ auto is_date() const →  bool final noexcept +
+
Returns false.
+
+ auto is_date_time() const →  bool final noexcept +
+
Returns false.
+
+ auto is_floating_point() const →  bool final noexcept +
+
Returns false.
+
+ auto is_homogeneous(node_type ntype) const →  bool final noexcept +
+
Checks if the node contains values/elements of only one type.
+
+ auto is_homogeneous(node_type ntype, + node*& first_nonmatch) →  bool final noexcept +
+
Checks if a node contains values/elements of only one type.
+
+ auto is_homogeneous(node_type ntype, + const node*& first_nonmatch) const →  bool final noexcept +
+
Checks if a node contains values/elements of only one type (const overload).
+
+
template <typename ElemType = void>
+ auto is_homogeneous() const →  bool noexcept +
+
Checks if the node contains values/elements of only one type.
+
+ auto is_integer() const →  bool final noexcept +
+
Returns false.
+
+ auto is_number() const →  bool final noexcept +
+
Returns false.
+
+ auto is_string() const →  bool final noexcept +
+
Returns false.
+
+ auto is_table() const →  bool final noexcept +
+
Returns true.
+
+ auto is_time() const →  bool final noexcept +
+
Returns false.
+
+ auto is_value() const →  bool final noexcept +
+
Returns false.
+
+ auto type() const →  node_type final noexcept +
+
Returns toml::node_type::table.
+
+
+
+

Value retrieval

+
+
+ auto at(std::string_view key) →  node& +
+
Gets a reference to the element at a specific key, throwing std::out_of_range if none existed.
+
+ auto at(std::string_view key) const →  const node& +
+
Gets a reference to the element at a specific key, throwing std::out_of_range if none existed.
+
+ auto at(std::wstring_view key) →  node& +
+
Gets a reference to the element at a specific key, throwing std::out_of_range if none existed.
+
+ auto at(std::wstring_view key) const →  const node& +
+
Gets a reference to the element at a specific key, throwing std::out_of_range if none existed.
+
+ auto get(std::string_view key) →  node* noexcept +
+
Gets the node at a specific key.
+
+ auto get(std::string_view key) const →  const node* noexcept +
+
Gets the node at a specific key (const overload).
+
+ auto get(std::wstring_view key) →  node* +
+
Gets the node at a specific key.
+
+ auto get(std::wstring_view key) const →  const node* +
+
Gets the node at a specific key (const overload).
+
+
template <typename T>
+ auto get_as(std::string_view key) →  impl::wrap_node<T>* noexcept +
+
Gets the node at a specific key if it is a particular type.
+
+
template <typename T>
+ auto get_as(std::string_view key) const →  const impl::wrap_node<T>* noexcept +
+
Gets the node at a specific key if it is a particular type (const overload).
+
+
template <typename T>
+ auto get_as(std::wstring_view key) →  impl::wrap_node<T>* +
+
Gets the node at a specific key if it is a particular type.
+
+
template <typename T>
+ auto get_as(std::wstring_view key) const →  const impl::wrap_node<T>* +
+
Gets the node at a specific key if it is a particular type (const overload).
+
+
template <typename T>
+ auto ref() & →  decltype(auto) noexcept +
+
Gets a raw reference to a node's underlying data.
+
+
template <typename T>
+ auto ref() && →  decltype(auto) noexcept +
+
Gets a raw reference to a node's underlying data (rvalue overload).
+
+
template <typename T>
+ auto ref() const & →  decltype(auto) noexcept +
+
Gets a raw reference to a node's underlying data (const lvalue overload).
+
+
template <typename T>
+ auto ref() const && →  decltype(auto) noexcept +
+
Gets a raw reference to a node's underlying data (const rvalue overload).
+
+
template <typename T>
+ auto value() const →  optional<T> noexcept(…) +
+
Gets the value contained by this node.
+
+
template <typename T>
+ auto value_exact() const →  optional<T> noexcept(…) +
+
Gets the value contained by this node.
+
+
template <typename T>
+ auto value_or(T&& default_value) const →  auto noexcept(…) +
+
Gets the raw value contained by this node, or a default.
+
+
+
+

Visitation

+
+
+
template <typename Func>
+ auto visit(Func&& visitor) & →  decltype(auto) noexcept(…) +
+
Invokes a visitor on the node based on the node's concrete type.
+
+
template <typename Func>
+ auto visit(Func&& visitor) && →  decltype(auto) noexcept(…) +
+
Invokes a visitor on the node based on the node's concrete type (rvalue overload).
+
+
template <typename Func>
+ auto visit(Func&& visitor) const & →  decltype(auto) noexcept(…) +
+
Invokes a visitor on the node based on the node's concrete type (const lvalue overload).
+
+
template <typename Func>
+ auto visit(Func&& visitor) const && →  decltype(auto) noexcept(…) +
+
Invokes a visitor on the node based on the node's concrete type (const rvalue overload).
+
+
+
+

Friends

+
+
+ auto operator<<(std::ostream& lhs, + const table& rhs) →  std::ostream& +
+
Prints the table out to a stream as formatted TOML.
+
+
+
+

Function documentation

+
+

+ toml::table::table(std::initializer_list<impl::table_init_pair> kvps) explicit +

+

Constructs a table with one or more initial key-value pairs.

+ + + + + + + + + + +
Parameters
kvpsA list of key-value pairs used to initialize the table.
+
auto tbl = toml::table{
+    { "foo", 1 },
+    { "bar", 2.0 },
+    { "kek", "three" }
+};
+std::cout << tbl << "\n";
{ foo = 1, bar = 2.0, kek = "three" }
+
+
+

+ bool toml::table::operator!=(const table& lhs, + const table& rhs) noexcept +

+

Inequality operator.

+ + + + + + + + + + + + + + + + + + + + +
Parameters
lhsThe LHS table.
rhsThe RHS table.
ReturnsTrue if the tables did not contain the same keys and map.
+
+
+

+ bool toml::table::operator==(const table& lhs, + const table& rhs) noexcept +

+

Equality operator.

+ + + + + + + + + + + + + + + + + + + + +
Parameters
lhsThe LHS table.
rhsThe RHS table.
ReturnsTrue if the tables contained the same keys and map.
+
+
+

+ iterator toml::table::erase(iterator pos) noexcept +

+

Removes the specified key-value pair from the table.

+ + + + + + + + + + + + + + + + +
Parameters
posIterator to the key-value pair being erased.
ReturnsIterator to the first key-value pair immediately following the removed key-value pair.
+
auto tbl = toml::table{
+    { "a", 1 },
+    { "b", 2 },
+    { "c", 3 }
+};
+std::cout << tbl << "\n";
+
+tbl.erase(tbl.begin() + 1);
+std::cout << tbl << "\n";
{ a = 1, b = 2, c = 3 }
+{ a = 1, c = 3 }
+
+
+

+ iterator toml::table::erase(const_iterator pos) noexcept +

+

Removes the specified key-value pair from the table (const iterator overload).

+ + + + + + + + + + + + + + + + +
Parameters
posIterator to the key-value pair being erased.
ReturnsIterator to the first key-value pair immediately following the removed key-value pair.
+
auto tbl = toml::table{
+    { "a", 1 },
+    { "b", 2 },
+    { "c", 3 }
+};
+std::cout << tbl << "\n";
+
+tbl.erase(tbl.cbegin() + 1);
+std::cout << tbl << "\n";
{ a = 1, b = 2, c = 3 }
+{ a = 1, c = 3 }
+
+
+

+ iterator toml::table::erase(const_iterator begin, + const_iterator end) noexcept +

+

Removes the key-value pairs in the range [first, last) from the table.

+ + + + + + + + + + + + + + + + + + + + +
Parameters
beginIterator to the first key-value pair being erased.
endIterator to the one-past-the-last key-value pair being erased.
ReturnsIterator to the first key-value pair immediately following the last removed key-value pair.
+
auto tbl = toml::table{
+    { "a", 1 },
+    { "b", "bad" },
+    { "c", "karma" },
+    { "d", 2 }
+};
+std::cout << tbl << "\n";
+
+tbl.erase(tbl.cbegin() + 1, tbl.cbegin() + 3);
+std::cout << tbl << "\n";
{ a = 1, b = "bad", c = "karma", d = 2 }
+{ a = 1, d = 2 }
+
+
+

+ size_t toml::table::erase(std::string_view key) noexcept +

+

Removes the value with the given key from the table.

+ + + + + + + + + + + + + + + + +
Parameters
keyKey to erase.
ReturnsNumber of elements removed (0 or 1).
+
auto tbl = toml::table{
+    { "a", 1 },
+    { "b", 2 },
+    { "c", 3 }
+};
+std::cout << tbl << "\n";
+
+std::cout << tbl.erase("b") << "\n";
+std::cout << tbl.erase("not an existing key") << "\n";
+std::cout << tbl << "\n";
{ a = 1, b = 2, c = 3 }
+true
+false
+{ a = 1, c = 3 }
+
+
+

+ size_t toml::table::erase(std::wstring_view key) +

+

Removes the value with the given key from the table.

+ + + + + + + + + + + + + + + + +
Parameters
keyKey to erase.
ReturnsNumber of elements removed (0 or 1).
+ +
+
+

+ table& toml::table::prune(bool recursive = true) & noexcept +

+

Removes empty child arrays and tables.

+ + + + + + + + + + + + + + + + +
Parameters
recursiveShould child arrays and tables themselves be pruned?
ReturnsA reference to the table.
+
auto tbl = toml::table{ { "a", 1 }, { "b", toml::array{ } }, { "c", toml::array{ toml::table{}, toml::array{} } } };
+std::cout << arr << "\n";
+
+arr.prune();
+std::cout << arr << "\n";
{ a = 1, b = [], c = [ {}, [] ] }
+{ a = 1 }
+
+
+

+ table&& toml::table::prune(bool recursive = true) && noexcept +

+

Removes empty child arrays and tables (rvalue overload).

+ + + + + + + + + + + + + + + + +
Parameters
recursiveShould child arrays and tables themselves be pruned?
ReturnsAn rvalue reference to the table.
+
+
+

+
+ template <typename ValueType = void, typename KeyType, typename... ValueArgs> +
+ std::pair<iterator, bool> toml::table::emplace(KeyType&& key, + ValueArgs && ... args) +

+

Emplaces a new value at a specific key if one did not already exist.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Template parameters
ValueTypetoml::table, toml::array, or any native TOML value type.
KeyTypeA toml::key or any compatible string type.
ValueArgsValue constructor argument types.
Parameters
keyThe key at which to emplace the new value.
argsArguments to forward to the value's constructor.
Returns

A std::pair containing:

  • An iterator to the emplacement position (or the position of the value that prevented emplacement)
  • A boolean indicating if the emplacement was successful.
+
auto tbl = toml::table{
+    { "a", 1 },
+    { "b", 2 },
+    { "c", 3 }
+};
+std::cout << tbl << "\n";
+
+for (auto k : { "a", "d" })
+{
+    // add a string using std::string's substring constructor
+    auto result = tbl.emplace<std::string>(k, "this is not a drill"sv, 14, 5);
+    std::cout << "emplaced with key '"sv << k << "': "sv << result.second << "\n";
+}
+std::cout << tbl << "\n";
{ a = 1, b = 2, c = 3 }
+emplaced with key 'a': false
+emplaced with key 'd': true
+{ a = 1, b = 2, c = 3, d = "drill" }
+
+
+

+
+ template <typename ValueType = void, typename KeyType, typename... ValueArgs> +
+ iterator toml::table::emplace_hint(const_iterator hint, + KeyType&& key, + ValueArgs && ... args) +

+

Emplaces a new value at a specific key if one did not already exist.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Template parameters
ValueTypetoml::table, toml::array, or any native TOML value type.
KeyTypeA toml::key or any compatible string type.
ValueArgsValue constructor argument types.
Parameters
hintIterator to the position before which the new element will be emplaced.
keyThe key at which to emplace the new value.
argsArguments to forward to the value's constructor.
ReturnsAn iterator to the emplacement position (or the position of the value that prevented emplacement)
+ +
+
+

+
+ template <typename KeyType, typename ValueType> +
+ std::pair<iterator, bool> toml::table::insert(KeyType&& key, + ValueType&& val, + value_flags flags = preserve_source_value_flags) +

+

Inserts a new value at a specific key if one did not already exist.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Template parameters
KeyTypeA toml::key or any compatible string type.
ValueTypetoml::node, toml::node_view, toml::table, toml::array, or a native TOML value type (or a type promotable to one).
Parameters
keyThe key at which to insert the new value.
valThe new value to insert.
flagsValue flags to apply to new values.
Returns

Valid input:

  • An iterator to the insertion position (or the position of the value that prevented insertion)
  • A boolean indicating if the insertion was successful.
+

Input is a null toml::node_view: + { end(), false }

+

Try this code on Compiler Explorer

auto tbl = toml::table{ + { "a", 1 }, + { "b", 2 }, + { "c", 3 } +}; +std::cout << tbl << "\n"; + +for (auto k : { "a", "d" }) +{ + auto result = tbl.insert(k, 42); + std::cout << "inserted with key '"sv << k << "': "sv << result.second << "\n"; +} +std::cout << tbl << "\n";
a = 1
+b = 2
+c = 3
+
+inserted with key 'a': false
+inserted with key 'd': true
+a = 1
+b = 2
+c = 3
+d = 42
+
+
+

+
+ template <typename Iter> +
+ void toml::table::insert(Iter begin, + Iter end, + value_flags flags = preserve_source_value_flags) +

+

Inserts a series of key-value pairs into the table.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Template parameters
IterAn InputIterator to a collection of key-value pairs.
Parameters
beginAn iterator to the first value in the input collection.
endAn iterator to one-past-the-last value in the input collection.
flagsValue flags to apply to new values.
+

Try this code on Compiler Explorer

auto tbl = toml::table{ + { "a", 1 }, + { "b", 2 }, + { "c", 3 } +}; +std::cout << tbl << "\n"; + +auto kvps = std::array<std::pair<std::string, int>, 2>{{ + { "d", 42 }, + { "a", 43 } // won't be inserted, 'a' already exists +}}; +tbl.insert(kvps.begin(), kvps.end()); +std::cout << tbl << "\n";
a = 1
+b = 2
+c = 3
+
+a = 1
+b = 2
+c = 3
+d = 42
+
+
+

+
+ template <typename KeyType, typename ValueType> +
+ std::pair<iterator, bool> toml::table::insert_or_assign(KeyType&& key, + ValueType&& val, + value_flags flags = preserve_source_value_flags) +

+

Inserts or assigns a value at a specific key.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Template parameters
KeyTypeA toml::key or any compatible string type.
ValueTypetoml::node, toml::node_view, toml::table, toml::array, or a native TOML value type (or a type promotable to one).
Parameters
keyThe key at which to insert or assign the value.
valThe value to insert/assign.
flagsValue flags to apply to new values.
Returns

Valid input:

  • An iterator to the value's position
  • true if the value was inserted, false if it was assigned.
+

Input is a null toml::node_view: + { end(), false }

+

Try this code on Compiler Explorer

auto tbl = toml::table{ + { "a", 1 }, + { "b", 2 }, + { "c", 3 } +}; +std::cout << tbl << "\n"; + +for (auto k : { "a", "d" }) +{ + auto result = tbl.insert_or_assign(k, 42); + std::cout << "value at key '"sv << k + << "' was "sv << (result.second ? "inserted"sv : "assigned"sv) << "\n"; +} +std::cout << tbl << "\n";
a = 1
+b = 2
+c = 3
+
+value at key 'a' was assigned
+value at key 'd' was inserted
+a = 42
+b = 2
+c = 3
+d = 42
+
+
+

+
+ template <typename Func> +
+ table& toml::table::for_each(Func&& visitor) & noexcept(…) +

+

Invokes a visitor on each key-value pair in the table.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
Template parameters
Func

A callable type invocable with one of the following signatures:

  • func(key, val)
  • func(val)

Where:

  • key will recieve a const reference to a toml::key
  • val will recieve the value as it's concrete type with cvref-qualifications matching the table

Visitors returning bool (or something convertible to bool) will cause iteration to stop if they return false.

Parameters
visitorThe visitor object.
ReturnsA reference to the table.
+
toml::table tbl{
+    { "0",  0      },
+    { "1",  1      },
+    { "2",  2      },
+    { "3",  3.0    },
+    { "4",  "four" },
+    { "5",  "five" },
+    { "6",  6      }
+};
+
+// select only the integers using a strongly-typed visitor
+tbl.for_each([](toml::value<int64_t>& val)
+{
+    std::cout << val << ", ";
+});
+std::cout << "\n";
+
+// select all the numeric values using a generic visitor + is_number<> metafunction
+tbl.for_each([](auto&& val)
+{
+    if constexpr (toml::is_number<decltype(val)>)
+        std::cout << val << ", ";
+});
+std::cout << "\n";
+
+// select all the numeric values until we encounter something non-numeric
+tbl.for_each([](auto&& val)
+{
+    if constexpr (toml::is_number<decltype(val)>)
+    {
+        std::cout << val << ", ";
+        return true; // "keep going"
+    }
+    else
+        return false; // "stop!"
+
+});
+std::cout << "\n\n";
+
+// visitors may also recieve the key
+tbl.for_each([](const toml::key& key, auto&& val)
+{
+    std::cout << key << ": " << val << "\n";
+});
0, 1, 2, 6,
+0, 1, 2, 3.0, 6,
+0, 1, 2, 3.0,
+
+0: 0
+1: 1
+2: 2
+3: 3.0
+4: 'four'
+5: 'five'
+6: 6
+
+
+

+ bool toml::table::is_inline() const noexcept +

+

Returns true if this table is an inline table.

+ +
+
+

+ void toml::table::is_inline(bool val) noexcept +

+

Sets whether this table is a TOML inline table.

+ + + + + + + + + + +
Parameters
valThe new value for 'inline'.
+

Try this code on Compiler Explorer

auto tbl = toml::table{ + { "a", 1 }, + { "b", 2 }, + { "c", 3 }, + { "d", toml::table{ { "e", 4 } } } +}; +std::cout << "is inline? "sv << tbl.is_inline() << "\n"; +std::cout << tbl << "\n\n"; + +tbl.is_inline(!tbl.is_inline()); +std::cout << "is inline? "sv << tbl.is_inline() << "\n"; +std::cout << tbl << "\n";
is inline? false
+a = 1
+b = 2
+c = 3
+
+[d]
+e = 4
+
+
+is inline? true
+{ a = 1, b = 2, c = 3, d = { e = 4 } }
+
+
+

+ node_view<node> toml::table::operator[](std::string_view key) noexcept +

+

Gets a node_view for the selected value.

+ + + + + + + + + + + + + + + + +
Parameters
keyThe key used for the lookup.
ReturnsA view of the value at the given key if one existed, or an empty node view.
+ +
+
+

+ node_view<const node> toml::table::operator[](std::string_view key) const noexcept +

+

Gets a node_view for the selected value (const overload).

+ + + + + + + + + + + + + + + + +
Parameters
keyThe key used for the lookup.
ReturnsA view of the value at the given key if one existed, or an empty node view.
+ +
+
+

+ node_view<node> toml::table::operator[](std::wstring_view key) +

+

Gets a node_view for the selected value.

+ + + + + + + + + + + + + + + + +
Parameters
keyThe key used for the lookup.
ReturnsA view of the value at the given key if one existed, or an empty node view.
+ +
+
+

+ node_view<const node> toml::table::operator[](std::wstring_view key) const +

+

Gets a node_view for the selected value (const overload).

+ + + + + + + + + + + + + + + + +
Parameters
keyThe key used for the lookup.
ReturnsA view of the value at the given key if one existed, or an empty node view.
+ +
+
+

+ bool toml::table::contains(std::wstring_view key) const +

+

Returns true if the table contains a node at the given key.

+ +
+
+

+ iterator toml::table::find(std::string_view key) noexcept +

+

Gets an iterator to the node at a specific key.

+ + + + + + + + + + + + + + + + +
Parameters
keyThe node's key.
ReturnsAn iterator to the node at the specified key, or end().
+
+
+

+ const_iterator toml::table::find(std::string_view key) const noexcept +

+

Gets an iterator to the node at a specific key (const overload)

+ + + + + + + + + + + + + + + + +
Parameters
keyThe node's key.
ReturnsA const iterator to the node at the specified key, or cend().
+
+
+

+ iterator toml::table::find(std::wstring_view key) +

+

Gets an iterator to the node at a specific key.

+ + + + + + + + + + + + + + + + +
Parameters
keyThe node's key.
ReturnsAn iterator to the node at the specified key, or end().
+ +
+
+

+ const_iterator toml::table::find(std::wstring_view key) const +

+

Gets an iterator to the node at a specific key (const overload).

+ + + + + + + + + + + + + + + + +
Parameters
keyThe node's key.
ReturnsA const iterator to the node at the specified key, or cend().
+ +
+
+

+ iterator toml::table::lower_bound(std::string_view key) noexcept +

+

Returns an iterator to the first key-value pair with key that is not less than the given key.

+ + + + + + + +
ReturnsAn iterator to the first matching key-value pair, or end().
+
+
+

+ const_iterator toml::table::lower_bound(std::string_view key) const noexcept +

+

Returns a const iterator to the first key-value pair with key that is not less than the given key.

+ + + + + + + +
ReturnsAn iterator to the first matching key-value pair, or end().
+
+
+

+ iterator toml::table::lower_bound(std::wstring_view key) +

+

Returns an iterator to the first key-value pair with key that is not less than the given key.

+ + + + + + + +
ReturnsAn iterator to the first matching key-value pair, or end().
+ +
+
+

+ const_iterator toml::table::lower_bound(std::wstring_view key) const +

+

Returns a const iterator to the first key-value pair with key that is not less than the given key.

+ + + + + + + +
ReturnsAn iterator to the first matching key-value pair, or end().
+ +
+
+

+ bool toml::table::is_homogeneous(node_type ntype) const final noexcept +

+

Checks if the node contains values/elements of only one type.

+ + + + + + + + + + + + + + + + +
Parameters
ntypeA TOML node type.
toml::node_type::none: "is every element the same type?" Anything else: "is every element one of these?"
ReturnsTrue if the node was homogeneous.
+
auto arr = toml::array{ 1, 2, 3 };
+std::cout << "homogenous: "sv << arr.is_homogeneous(toml::node_type::none) << "\n";
+std::cout << "all floats: "sv << arr.is_homogeneous(toml::node_type::floating_point) << "\n";
+std::cout << "all arrays: "sv << arr.is_homogeneous(toml::node_type::array) << "\n";
+std::cout << "all ints:   "sv << arr.is_homogeneous(toml::node_type::integer) << "\n";
homogeneous: true
+all floats:  false
+all arrays:  false
+all ints:    true
+
+
+

+ bool toml::table::is_homogeneous(node_type ntype, + node*& first_nonmatch) final noexcept +

+

Checks if a node contains values/elements of only one type.

+ + + + + + + + + + + + + + + + + + + + +
Parameters
ntypeA TOML node type.
toml::node_type::none: "is every element the same type?" Anything else: "is every element one of these?"
first_nonmatchReference to a pointer in which the address of the first non-matching element will be stored if the return value is false.
ReturnsTrue if the node was homogeneous.
+
auto cfg = toml::parse("arr = [ 1, 2, 3, 4.0 ]");
+toml::array& arr = *cfg["arr"].as_array();
+
+toml::node* nonmatch{};
+if (arr.is_homogeneous(toml::node_type::integer, nonmatch))
+    std::cout << "array was homogeneous"sv << "\n";
+else
+    std::cout << "array was not homogeneous!\n"
+    << "first non-match was a "sv << nonmatch->type() << " at " << nonmatch->source() << "\n";
array was not homogeneous!
+first non-match was a floating-point at line 1, column 18
+
+
+

+ node& toml::table::at(std::wstring_view key) +

+

Gets a reference to the element at a specific key, throwing std::out_of_range if none existed.

+ +
+
+

+ const node& toml::table::at(std::wstring_view key) const +

+

Gets a reference to the element at a specific key, throwing std::out_of_range if none existed.

+ +
+
+

+ node* toml::table::get(std::string_view key) noexcept +

+

Gets the node at a specific key.

+ + + + + + + + + + + + + + + + +
Parameters
keyThe node's key.
ReturnsA pointer to the node at the specified key, or nullptr.
+
auto tbl = toml::table{
+    { "a", 42, },
+    { "b", "is the meaning of life, apparently." }
+};
+std::cout << R"(node ["a"] exists: )"sv << !!tbl.get("a") << "\n";
+std::cout << R"(node ["b"] exists: )"sv << !!tbl.get("b") << "\n";
+std::cout << R"(node ["c"] exists: )"sv << !!tbl.get("c") << "\n";
+if (auto val = tbl.get("a"))
+    std::cout << R"(node ["a"] was an )"sv << val->type() << "\n";
node ["a"] exists: true
+node ["b"] exists: true
+node ["c"] exists: false
+node ["a"] was an integer
+
+
+

+ const node* toml::table::get(std::string_view key) const noexcept +

+

Gets the node at a specific key (const overload).

+ + + + + + + + + + + + + + + + +
Parameters
keyThe node's key.
ReturnsA pointer to the node at the specified key, or nullptr.
+
+
+

+ node* toml::table::get(std::wstring_view key) +

+

Gets the node at a specific key.

+ + + + + + + + + + + + + + + + +
Parameters
keyThe node's key.
ReturnsA pointer to the node at the specified key, or nullptr.
+ +
+
+

+ const node* toml::table::get(std::wstring_view key) const +

+

Gets the node at a specific key (const overload).

+ + + + + + + + + + + + + + + + +
Parameters
keyThe node's key.
ReturnsA pointer to the node at the specified key, or nullptr.
+ +
+
+

+
+ template <typename T> +
+ impl::wrap_node<T>* toml::table::get_as(std::string_view key) noexcept +

+

Gets the node at a specific key if it is a particular type.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
Template parameters
TOne of the TOML node or value types.
Parameters
keyThe node's key.
ReturnsA pointer to the node at the specified key if it was of the given type, or nullptr.
+
auto tbl = toml::table{
+    { "a", 42, },
+    { "b", "is the meaning of life, apparently." }
+};
+if (auto val = arr.get_as<int64_t>("a"))
+    std::cout << R"(node ["a"] was an integer with value )"sv << **val << "\n";
node ["a"] was an integer with value 42
+
+
+

+
+ template <typename T> +
+ const impl::wrap_node<T>* toml::table::get_as(std::string_view key) const noexcept +

+

Gets the node at a specific key if it is a particular type (const overload).

+ + + + + + + + + + + + + + + + + + + + + + + + + +
Template parameters
TOne of the TOML node or value types.
Parameters
keyThe node's key.
ReturnsA pointer to the node at the specified key if it was of the given type, or nullptr.
+
+
+

+
+ template <typename T> +
+ impl::wrap_node<T>* toml::table::get_as(std::wstring_view key) +

+

Gets the node at a specific key if it is a particular type.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
Template parameters
TOne of the TOML node or value types.
Parameters
keyThe node's key.
ReturnsA pointer to the node at the specified key if it was of the given type, or nullptr.
+ +
+
+

+
+ template <typename T> +
+ const impl::wrap_node<T>* toml::table::get_as(std::wstring_view key) const +

+

Gets the node at a specific key if it is a particular type (const overload).

+ + + + + + + + + + + + + + + + + + + + + + + + + +
Template parameters
TOne of the TOML node or value types.
Parameters
keyThe node's key.
ReturnsA pointer to the node at the specified key if it was of the given type, or nullptr.
+ +
+
+

+ std::ostream& operator<<(std::ostream& lhs, + const table& rhs) +

+

Prints the table out to a stream as formatted TOML.

+ +
+
+
+
+
+
+ + + + + + + \ No newline at end of file diff --git a/classtoml_1_1toml__formatter.html b/classtoml_1_1toml__formatter.html new file mode 100644 index 0000000000..40813c38b5 --- /dev/null +++ b/classtoml_1_1toml__formatter.html @@ -0,0 +1,247 @@ + + + + toml::toml_formatter class | toml++ TOML for C++ + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ toml::toml_formatter class +

+

A wrapper for printing TOML objects out to a stream as formatted TOML.

+ +
auto tbl = toml::table{
+    { "description", "This is some TOML, yo." },
+    { "fruit", toml::array{ "apple", "orange", "pear" } },
+    { "numbers", toml::array{ 1, 2, 3, 4, 5 } },
+    { "table", toml::table{ { "foo", "bar" } } }
+};
+
+// these two lines are equivalent:
+std::cout << toml::toml_formatter{ tbl } << "\n";
+std::cout << tbl << "\n";
description = "This is some TOML, yo."
+fruit = ["apple", "orange", "pear"]
+numbers = [1, 2, 3, 4, 5]
+
+[table]
+foo = "bar"
+
+

Public static variables

+
+
+ static format_flags default_flags constexpr +
+
The default flags for a toml_formatter.
+
+
+
+

Constructors, destructors, conversion operators

+
+
+ toml_formatter(const toml::node& source, + format_flags flags = default_flags) explicit noexcept +
+
Constructs a TOML formatter and binds it to a TOML object.
+
+ toml_formatter(const toml::parse_result& result, + format_flags flags = default_flags) explicit noexcept +
+
Constructs a TOML formatter and binds it to a toml::parse_result.
+
+
+
+

Friends

+
+
+ auto operator<<(std::ostream& lhs, + toml_formatter& rhs) →  std::ostream& +
+
Prints the bound TOML object out to the stream as formatted TOML.
+
+ auto operator<<(std::ostream& lhs, + toml_formatter&& rhs) →  std::ostream& +
+
Prints the bound TOML object out to the stream as formatted TOML (rvalue overload).
+
+
+
+

Function documentation

+
+

+ toml::toml_formatter::toml_formatter(const toml::node& source, + format_flags flags = default_flags) explicit noexcept +

+

Constructs a TOML formatter and binds it to a TOML object.

+ + + + + + + + + + + + + + +
Parameters
sourceThe source TOML object.
flagsFormat option flags.
+
+
+

+ toml::toml_formatter::toml_formatter(const toml::parse_result& result, + format_flags flags = default_flags) explicit noexcept +

+

Constructs a TOML formatter and binds it to a toml::parse_result.

+ + + + + + + + + + + + + + +
Parameters
resultThe parse result.
flagsFormat option flags.
+ +
+
+
+
+
+
+ + + + + + + \ No newline at end of file diff --git a/classtoml_1_1value.html b/classtoml_1_1value.html new file mode 100644 index 0000000000..410dbd00e0 --- /dev/null +++ b/classtoml_1_1value.html @@ -0,0 +1,1055 @@ + + + + toml::value class | toml++ TOML for C++ + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+
template <typename ValueType>
+ toml::value class +

+

A TOML value.

+ + + + + + + + + + +
Template parameters
ValueType

The value's native TOML data type. Can be one of:

+ +
+

Base classes

+
+
+ class node +
+
A TOML node.
+
+
+
+

Public types

+
+
+ using value_arg = /* ... */ +
+
A type alias for 'value arguments'.
+
+ using value_type = ValueType +
+
The value's underlying data type.
+
+
+
+

Constructors, destructors, conversion operators

+
+
+ value(Args && ... args) explicit noexcept(…) +
+
Constructs a toml value.
+
+ value(const value& other) noexcept +
+
Copy constructor.
+
+ value(const value& other, + value_flags flags) noexcept +
+
Copy constructor with flags override.
+
+ value(value&& other) noexcept +
+
Move constructor.
+
+ value(value&& other, + value_flags flags) noexcept +
+
Move constructor with flags override.
+
+
+
+

Public functions

+
+
+ auto operator=(const value& rhs) →  value& noexcept +
+
Copy-assignment operator.
+
+ auto operator=(value&& rhs) →  value& noexcept +
+
Move-assignment operator.
+
+ auto operator=(value_arg rhs) →  value& noexcept +
+
Value-assignment operator.
+
+
+
+

Equality and Comparison

+
+
+
template <typename T>
+ auto operator!=(const value& lhs, + const value<T>& rhs) →  bool noexcept +
+
Inequality operator.
+
+ auto operator<(const value& lhs, + value_arg rhs) →  bool noexcept +
+
Value less-than operator.
+
+ auto operator<(value_arg lhs, + const value& rhs) →  bool noexcept +
+
Value less-than operator.
+
+
template <typename T>
+ auto operator<(const value& lhs, + const value<T>& rhs) →  bool noexcept +
+
Less-than operator.
+
+ auto operator<=(const value& lhs, + value_arg rhs) →  bool noexcept +
+
Value less-than-or-equal-to operator.
+
+ auto operator<=(value_arg lhs, + const value& rhs) →  bool noexcept +
+
Value less-than-or-equal-to operator.
+
+
template <typename T>
+ auto operator<=(const value& lhs, + const value<T>& rhs) →  bool noexcept +
+
Less-than-or-equal-to operator.
+
+ auto operator==(const value& lhs, + value_arg rhs) →  bool noexcept +
+
Value equality operator.
+
+
template <typename T>
+ auto operator==(const value& lhs, + const value<T>& rhs) →  bool noexcept +
+
Equality operator.
+
+ auto operator>(const value& lhs, + value_arg rhs) →  bool noexcept +
+
Value greater-than operator.
+
+ auto operator>(value_arg lhs, + const value& rhs) →  bool noexcept +
+
Value greater-than operator.
+
+
template <typename T>
+ auto operator>(const value& lhs, + const value<T>& rhs) →  bool noexcept +
+
Greater-than operator.
+
+ auto operator>=(const value& lhs, + value_arg rhs) →  bool noexcept +
+
Value greater-than-or-equal-to operator.
+
+ auto operator>=(value_arg lhs, + const value& rhs) →  bool noexcept +
+
Value greater-than-or-equal-to operator.
+
+
template <typename T>
+ auto operator>=(const value& lhs, + const value<T>& rhs) →  bool noexcept +
+
Greater-than-or-equal-to operator.
+
+
+
+

Metadata

+
+
+ auto flags() const →  value_flags noexcept +
+
Returns the metadata flags associated with this value.
+
+ auto flags(value_flags new_flags) →  value& noexcept +
+
Sets the metadata flags associated with this value.
+
+ auto source() const →  const source_region& noexcept +
+
Returns the source region responsible for generating this node during parsing.
+
+
+
+

Node views

+
+
+ auto at_path(std::string_view path) →  node_view<node> noexcept +
+
Returns a view of the subnode matching a fully-qualified "TOML path".
+
+ auto at_path(std::string_view path) const →  node_view<const node> noexcept +
+
Returns a const view of the subnode matching a fully-qualified "TOML path".
+
+ auto at_path(const toml::path& path) →  node_view<node> noexcept +
+
Returns a view of the subnode matching a fully-qualified "TOML path".
+
+ auto at_path(const toml::path& path) const →  node_view<const node> noexcept +
+
Returns a const view of the subnode matching a fully-qualified "TOML path".
+
+ auto at_path(std::wstring_view path) →  node_view<node> +
+
Returns a view of the subnode matching a fully-qualified "TOML path".
+
+ auto at_path(std::wstring_view path) const →  node_view<const node> +
+
Returns a const view of the subnode matching a fully-qualified "TOML path".
+
+ operator node_view<const node>() const explicit noexcept +
+
Creates a node_view pointing to this node (const overload).
+
+ operator node_view<node>() explicit noexcept +
+
Creates a node_view pointing to this node.
+
+ auto operator[](const toml::path& path) →  node_view<node> noexcept +
+
Returns a const view of the subnode matching a fully-qualified "TOML path".
+
+ auto operator[](const toml::path& path) const →  node_view<const node> noexcept +
+
Returns a const view of the subnode matching a fully-qualified "TOML path".
+
+
+
+

Type casts

+
+
+
template <typename T>
+ auto as() →  impl::wrap_node<T>* noexcept +
+
Gets a pointer to the node as a more specific node type.
+
+
template <typename T>
+ auto as() const →  const impl::wrap_node<T>* noexcept +
+
Gets a pointer to the node as a more specific node type (const overload).
+
+ auto as_array() →  array* final noexcept +
+
Returns nullptr.
+
+ auto as_array() const →  const array* final noexcept +
+
Returns nullptr.
+
+ auto as_boolean() →  value<bool>* final noexcept +
+
Returns a pointer to the value if it is a value<bool>, otherwise nullptr.
+
+ auto as_boolean() const →  const value<bool>* final noexcept +
+
Returns a const-qualified pointer to the value if it is a value<bool>, otherwise nullptr.
+
+ auto as_date() →  value<date>* final noexcept +
+
Returns a pointer to the value if it is a value<date>, otherwise nullptr.
+
+ auto as_date() const →  const value<date>* final noexcept +
+
Returns a const-qualified pointer to the value if it is a value<date>, otherwise nullptr.
+
+ auto as_date_time() →  value<date_time>* final noexcept +
+
Returns a pointer to the value if it is a value<date_time>, otherwise nullptr.
+
+ auto as_date_time() const →  const value<date_time>* final noexcept +
+
Returns a const-qualified pointer to the value if it is a value<date_time>, otherwise nullptr.
+
+ auto as_floating_point() →  value<double>* final noexcept +
+
Returns a pointer to the value if it is a value<double>, otherwise nullptr.
+
+ auto as_floating_point() const →  const value<double>* final noexcept +
+
Returns a const-qualified pointer to the value if it is a value<double>, otherwise nullptr.
+
+ auto as_integer() →  value<int64_t>* final noexcept +
+
Returns a pointer to the value if it is a value<int64_t>, otherwise nullptr.
+
+ auto as_integer() const →  const value<int64_t>* final noexcept +
+
Returns a const-qualified pointer to the value if it is a value<int64_t>, otherwise nullptr.
+
+ auto as_string() →  value<std::string>* final noexcept +
+
Returns a pointer to the value if it is a value<std::string>, otherwise nullptr.
+
+ auto as_string() const →  const value<std::string>* final noexcept +
+
Returns a const-qualified pointer to the value if it is a value<std::string>, otherwise nullptr.
+
+ auto as_table() →  table* final noexcept +
+
Returns nullptr.
+
+ auto as_table() const →  const table* final noexcept +
+
Returns nullptr.
+
+ auto as_time() →  value<time>* final noexcept +
+
Returns a pointer to the value if it is a value<time>, otherwise nullptr.
+
+ auto as_time() const →  const value<time>* final noexcept +
+
Returns a const-qualified pointer to the value if it is a value<time>, otherwise nullptr.
+
+
+
+

Type checks

+
+
+
template <typename T>
+ auto is() const →  bool noexcept +
+
Checks if a node is a specific type.
+
+ auto is_array() const →  bool final noexcept +
+
Returns false.
+
+ auto is_array_of_tables() const →  bool final noexcept +
+
Returns false.
+
+ auto is_boolean() const →  bool final noexcept +
+
Returns true if the value_type is bool.
+
+ auto is_date() const →  bool final noexcept +
+
Returns true if the value_type is toml::date.
+
+ auto is_date_time() const →  bool final noexcept +
+
Returns true if the value_type is toml_date_time.
+
+ auto is_floating_point() const →  bool final noexcept +
+
Returns true if the value_type is double.
+
+ auto is_homogeneous(node_type ntype) const →  bool final noexcept +
+
Checks if the node contains values/elements of only one type.
+
+ auto is_homogeneous(node_type ntype, + node*& first_nonmatch) →  bool final noexcept +
+
Checks if a node contains values/elements of only one type.
+
+ auto is_homogeneous(node_type ntype, + const node*& first_nonmatch) const →  bool final noexcept +
+
Checks if a node contains values/elements of only one type (const overload).
+
+
template <typename ElemType = void>
+ auto is_homogeneous() const →  bool noexcept +
+
Checks if the node contains values/elements of only one type.
+
+ auto is_integer() const →  bool final noexcept +
+
Returns true if the value_type is int64_t.
+
+ auto is_number() const →  bool final noexcept +
+
Returns true if the value_type is int64_t or double.
+
+ auto is_string() const →  bool final noexcept +
+
Returns true if the value_type is std::string.
+
+ auto is_table() const →  bool final noexcept +
+
Returns false.
+
+ auto is_time() const →  bool final noexcept +
+
Returns true if the value_type is toml::time.
+
+ auto is_value() const →  bool final noexcept +
+
Returns true.
+
+ auto type() const →  node_type final noexcept +
+
Returns the value's node type identifier.
+
+
+
+

Value retrieval

+
+
+ auto get() & →  value_type& noexcept +
+
Returns a reference to the underlying value.
+
+ auto get() && →  value_type&& noexcept +
+
Returns a reference to the underlying value (rvalue overload).
+
+ auto get() const & →  const value_type& noexcept +
+
Returns a reference to the underlying value (const overload).
+
+ auto get() const && →  const value_type&& noexcept +
+
Returns a reference to the underlying value (const rvalue overload).
+
+ operator const value_type&() const & explicit noexcept +
+
Returns a reference to the underlying value (const overload).
+
+ operator const value_type&&() && explicit noexcept +
+
Returns a reference to the underlying value (const rvalue overload).
+
+ operator value_type&() & explicit noexcept +
+
Returns a reference to the underlying value.
+
+ operator value_type&&() && explicit noexcept +
+
Returns a reference to the underlying value (rvalue overload).
+
+ auto operator*() & →  value_type& noexcept +
+
Returns a reference to the underlying value.
+
+ auto operator*() && →  value_type&& noexcept +
+
Returns a reference to the underlying value (rvalue overload).
+
+ auto operator*() const & →  const value_type& noexcept +
+
Returns a reference to the underlying value (const overload).
+
+ auto operator*() const && →  const value_type&& noexcept +
+
Returns a reference to the underlying value (const rvalue overload).
+
+ auto operator->() →  value_type* noexcept +
+
Returns a pointer to the underlying value.
+
+ auto operator->() const →  const value_type* noexcept +
+
Returns a pointer to the underlying value (const overload).
+
+
template <typename T>
+ auto ref() & →  decltype(auto) noexcept +
+
Gets a raw reference to a node's underlying data.
+
+
template <typename T>
+ auto ref() && →  decltype(auto) noexcept +
+
Gets a raw reference to a node's underlying data (rvalue overload).
+
+
template <typename T>
+ auto ref() const & →  decltype(auto) noexcept +
+
Gets a raw reference to a node's underlying data (const lvalue overload).
+
+
template <typename T>
+ auto ref() const && →  decltype(auto) noexcept +
+
Gets a raw reference to a node's underlying data (const rvalue overload).
+
+
template <typename T>
+ auto value() const →  optional<T> noexcept(…) +
+
Gets the value contained by this node.
+
+
template <typename T>
+ auto value_exact() const →  optional<T> noexcept(…) +
+
Gets the value contained by this node.
+
+
template <typename T>
+ auto value_or(T&& default_value) const →  auto noexcept(…) +
+
Gets the raw value contained by this node, or a default.
+
+
+
+

Visitation

+
+
+
template <typename Func>
+ auto visit(Func&& visitor) & →  decltype(auto) noexcept(…) +
+
Invokes a visitor on the node based on the node's concrete type.
+
+
template <typename Func>
+ auto visit(Func&& visitor) && →  decltype(auto) noexcept(…) +
+
Invokes a visitor on the node based on the node's concrete type (rvalue overload).
+
+
template <typename Func>
+ auto visit(Func&& visitor) const & →  decltype(auto) noexcept(…) +
+
Invokes a visitor on the node based on the node's concrete type (const lvalue overload).
+
+
template <typename Func>
+ auto visit(Func&& visitor) const && →  decltype(auto) noexcept(…) +
+
Invokes a visitor on the node based on the node's concrete type (const rvalue overload).
+
+
+
+

Friends

+
+
+ auto operator<<(std::ostream& lhs, + const value& rhs) →  std::ostream& +
+
Prints the value out to a stream as formatted TOML.
+
+
+
+

Typedef documentation

+
+

+
+ template <typename ValueType> +
+ using toml::value::value_arg = /* ... */ +

+

A type alias for 'value arguments'.

+

This differs according to the value's type argument:

  • ints, floats, booleans: value_type
  • strings: string_view
  • everything else: const value_type&
+
+
+
+

Function documentation

+
+

+
+ template <typename ValueType> +
+ toml::value::value(Args && ... args) explicit noexcept(…) +

+

Constructs a toml value.

+ + + + + + + + + + +
Parameters
argsArguments to forward to the internal value's constructor.
+
+
+

+
+ template <typename ValueType> +
+ template <typename T> +
+ bool toml::value::operator!=(const value& lhs, + const value<T>& rhs) noexcept +

+

Inequality operator.

+ + + + + + + + + + + + + + + + + + + + +
Parameters
lhsThe LHS value.
rhsThe RHS value.
ReturnsTrue if the values were not of the same type, or did not contain the same value.
+
+
+

+
+ template <typename ValueType> +
+ template <typename T> +
+ bool toml::value::operator<(const value& lhs, + const value<T>& rhs) noexcept +

+

Less-than operator.

+ + + + + + + + + + + + + + + + + + + + +
Parameters
lhsThe LHS toml::value.
rhsThe RHS toml::value.
ReturnsSame value types: + lhs.get() < rhs.get()Different value types: + lhs.type() < rhs.type()
+
+
+

+
+ template <typename ValueType> +
+ template <typename T> +
+ bool toml::value::operator<=(const value& lhs, + const value<T>& rhs) noexcept +

+

Less-than-or-equal-to operator.

+ + + + + + + + + + + + + + + + + + + + +
Parameters
lhsThe LHS toml::value.
rhsThe RHS toml::value.
ReturnsSame value types: + lhs.get() <= rhs.get()Different value types: + lhs.type() <= rhs.type()
+
+
+

+
+ template <typename ValueType> +
+ template <typename T> +
+ bool toml::value::operator==(const value& lhs, + const value<T>& rhs) noexcept +

+

Equality operator.

+ + + + + + + + + + + + + + + + + + + + +
Parameters
lhsThe LHS value.
rhsThe RHS value.
ReturnsTrue if the values were of the same type and contained the same value.
+
+
+

+
+ template <typename ValueType> +
+ template <typename T> +
+ bool toml::value::operator>(const value& lhs, + const value<T>& rhs) noexcept +

+

Greater-than operator.

+ + + + + + + + + + + + + + + + + + + + +
Parameters
lhsThe LHS toml::value.
rhsThe RHS toml::value.
ReturnsSame value types: + lhs.get() > rhs.get()Different value types: + lhs.type() > rhs.type()
+
+
+

+
+ template <typename ValueType> +
+ template <typename T> +
+ bool toml::value::operator>=(const value& lhs, + const value<T>& rhs) noexcept +

+

Greater-than-or-equal-to operator.

+ + + + + + + + + + + + + + + + + + + + +
Parameters
lhsThe LHS toml::value.
rhsThe RHS toml::value.
ReturnsSame value types: + lhs.get() >= rhs.get()Different value types: + lhs.type() >= rhs.type()
+
+
+

+
+ template <typename ValueType> +
+ value& toml::value::flags(value_flags new_flags) noexcept +

+

Sets the metadata flags associated with this value.

+ + + + + + + +
ReturnsA reference to the value object.
+
+
+

+
+ template <typename ValueType> +
+ bool toml::value::is_homogeneous(node_type ntype) const final noexcept +

+

Checks if the node contains values/elements of only one type.

+ + + + + + + + + + + + + + + + +
Parameters
ntypeA TOML node type.
toml::node_type::none: "is every element the same type?" Anything else: "is every element one of these?"
ReturnsTrue if the node was homogeneous.
+
auto arr = toml::array{ 1, 2, 3 };
+std::cout << "homogenous: "sv << arr.is_homogeneous(toml::node_type::none) << "\n";
+std::cout << "all floats: "sv << arr.is_homogeneous(toml::node_type::floating_point) << "\n";
+std::cout << "all arrays: "sv << arr.is_homogeneous(toml::node_type::array) << "\n";
+std::cout << "all ints:   "sv << arr.is_homogeneous(toml::node_type::integer) << "\n";
homogeneous: true
+all floats:  false
+all arrays:  false
+all ints:    true
+
+
+

+
+ template <typename ValueType> +
+ bool toml::value::is_homogeneous(node_type ntype, + node*& first_nonmatch) final noexcept +

+

Checks if a node contains values/elements of only one type.

+ + + + + + + + + + + + + + + + + + + + +
Parameters
ntypeA TOML node type.
toml::node_type::none: "is every element the same type?" Anything else: "is every element one of these?"
first_nonmatchReference to a pointer in which the address of the first non-matching element will be stored if the return value is false.
ReturnsTrue if the node was homogeneous.
+
auto cfg = toml::parse("arr = [ 1, 2, 3, 4.0 ]");
+toml::array& arr = *cfg["arr"].as_array();
+
+toml::node* nonmatch{};
+if (arr.is_homogeneous(toml::node_type::integer, nonmatch))
+    std::cout << "array was homogeneous"sv << "\n";
+else
+    std::cout << "array was not homogeneous!\n"
+    << "first non-match was a "sv << nonmatch->type() << " at " << nonmatch->source() << "\n";
array was not homogeneous!
+first non-match was a floating-point at line 1, column 18
+
+
+

+
+ template <typename ValueType> +
+ node_type toml::value::type() const final noexcept +

+

Returns the value's node type identifier.

+ + + + + + + +
Returns

One of:

+
+
+

+
+ template <typename ValueType> +
+ value_type* toml::value::operator->() noexcept +

+

Returns a pointer to the underlying value.

+ +
+
+

+
+ template <typename ValueType> +
+ const value_type* toml::value::operator->() const noexcept +

+

Returns a pointer to the underlying value (const overload).

+ +
+
+

+
+ template <typename ValueType> +
+ std::ostream& operator<<(std::ostream& lhs, + const value& rhs) +

+

Prints the value out to a stream as formatted TOML.

+ +
+
+
+
+
+
+ + + + + + + \ No newline at end of file diff --git a/classtoml_1_1yaml__formatter.html b/classtoml_1_1yaml__formatter.html new file mode 100644 index 0000000000..260272351a --- /dev/null +++ b/classtoml_1_1yaml__formatter.html @@ -0,0 +1,247 @@ + + + + toml::yaml_formatter class | toml++ TOML for C++ + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ toml::yaml_formatter class +

+

A wrapper for printing TOML objects out to a stream as formatted YAML.

+ +
auto some_toml = toml::parse(R"(
+    [fruit]
+    apple.color = "red"
+    apple.taste.sweet = true
+
+    [fruit.apple.texture]
+    smooth = true
+)"sv);
+std::cout << toml::yaml_formatter{ some_toml } << "\n";
fruit:
+  apple:
+    color: red
+    taste:
+      sweet: true
+    texture:
+      smooth: true
+
+

Public static variables

+
+
+ static format_flags default_flags constexpr +
+
The default flags for a yaml_formatter.
+
+
+
+

Constructors, destructors, conversion operators

+
+
+ yaml_formatter(const toml::node& source, + format_flags flags = default_flags) explicit noexcept +
+
Constructs a YAML formatter and binds it to a TOML object.
+
+ yaml_formatter(const toml::parse_result& result, + format_flags flags = default_flags) explicit noexcept +
+
Constructs a YAML formatter and binds it to a toml::parse_result.
+
+
+
+

Friends

+
+
+ auto operator<<(std::ostream& lhs, + yaml_formatter& rhs) →  std::ostream& +
+
Prints the bound TOML object out to the stream as YAML.
+
+ auto operator<<(std::ostream& lhs, + yaml_formatter&& rhs) →  std::ostream& +
+
Prints the bound TOML object out to the stream as YAML (rvalue overload).
+
+
+
+

Function documentation

+
+

+ toml::yaml_formatter::yaml_formatter(const toml::node& source, + format_flags flags = default_flags) explicit noexcept +

+

Constructs a YAML formatter and binds it to a TOML object.

+ + + + + + + + + + + + + + +
Parameters
sourceThe source TOML object.
flagsFormat option flags.
+
+
+

+ toml::yaml_formatter::yaml_formatter(const toml::parse_result& result, + format_flags flags = default_flags) explicit noexcept +

+

Constructs a YAML formatter and binds it to a toml::parse_result.

+ + + + + + + + + + + + + + +
Parameters
resultThe parse result.
flagsFormat option flags.
+ +
+
+
+
+
+
+ + + + + + + \ No newline at end of file diff --git a/concepts.html b/concepts.html new file mode 100644 index 0000000000..f1a7e3654b --- /dev/null +++ b/concepts.html @@ -0,0 +1,141 @@ + + + + toml++ TOML for C++ + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Concepts

+
    +
+ +
+
+
+
+ + + + + + + \ No newline at end of file diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 0000000000..518213d188 Binary files /dev/null and b/favicon.ico differ diff --git a/files.html b/files.html new file mode 100644 index 0000000000..1044cba86f --- /dev/null +++ b/files.html @@ -0,0 +1,141 @@ + + + + toml++ TOML for C++ + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Files

+
    +
+ +
+
+
+
+ + + + + + + \ No newline at end of file diff --git a/group__configuration.html b/group__configuration.html new file mode 100644 index 0000000000..60e15a9c1a --- /dev/null +++ b/group__configuration.html @@ -0,0 +1,371 @@ + + + + Library Configuration module | toml++ TOML for C++ + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Library Configuration module

+

Preprocessor macros for configuring library functionality.

+ +

Define these before including toml++ to alter the way it functions.

+
+

Defines

+
+
+ #define TOML_ASSERT(expr) +
+
Sets the assert function used by the library.
+
+ #define TOML_CALLCONV +
+
Calling convention to apply to exported free/static functions.
+
+ #define TOML_CONFIG_HEADER +
+
An additional header to include before any other toml++ header files.
+
+ #define TOML_DISABLE_CONDITIONAL_NOEXCEPT_LAMBDA +
+
Disable using noexcept(<condition>) in lambda definitions within the toml++ library implementation.
+
+ #define TOML_DISABLE_NOEXCEPT_NOEXCEPT +
+
Disable using noexcept(noexcept(<expression>)) within the toml++ library implementation.
+
+ #define TOML_ENABLE_FLOAT16 +
+
Enable support for the built-in _Float16 type.
+
+ #define TOML_ENABLE_FORMATTERS +
+
Sets whether the various formatter classes are enabled.
+
+ #define TOML_ENABLE_PARSER +
+
Sets whether the parser-related parts of the library are included.
+
+ #define TOML_ENABLE_UNRELEASED_FEATURES +
+
Enables support for unreleased TOML language features not yet part of a numbered version.
+
+ #define TOML_ENABLE_WINDOWS_COMPAT +
+
Enables the use of wide strings (wchar_t, std::wstring) in various places throughout the library when building for Windows.
+
+ #define TOML_EXCEPTIONS +
+
Sets whether the library uses exceptions to report parsing failures.
+
+ #define TOML_EXPORTED_CLASS +
+
An 'export' annotation to add to classes.
+
+ #define TOML_EXPORTED_FREE_FUNCTION +
+
An 'export' annotation to add to free functions.
+
+ #define TOML_EXPORTED_MEMBER_FUNCTION +
+
An 'export' annotation to add to non-static class member functions.
+
+ #define TOML_EXPORTED_STATIC_FUNCTION +
+
An 'export' annotation to add to static class member functions.
+
+ #define TOML_HEADER_ONLY +
+
Sets whether the library is entirely inline.
+
+ #define TOML_IMPLEMENTATION +
+
Enables the library's implementation when TOML_HEADER_ONLY is disabled.
+
+ #define TOML_OPTIONAL_TYPE +
+
Overrides the optional<T> type used by the library.
+
+ #define TOML_SMALL_FLOAT_TYPE +
+
If your codebase has an additional 'small' float type (e.g. half-precision), this tells toml++ about it.
+
+ #define TOML_SMALL_INT_TYPE +
+
If your codebase has an additional 'small' integer type (e.g. 24-bits), this tells toml++ about it.
+
+
+
+

Define documentation

+
+

+ #define TOML_ASSERT(expr) +

+

Sets the assert function used by the library.

+

Defaults to the standard C assert().

+
+
+

+ #define TOML_CALLCONV +

+

Calling convention to apply to exported free/static functions.

+

Not defined by default (let the compiler decide).

+
+
+

+ #define TOML_CONFIG_HEADER +

+

An additional header to include before any other toml++ header files.

+

Not defined by default.

+
+
+

+ #define TOML_DISABLE_CONDITIONAL_NOEXCEPT_LAMBDA +

+

Disable using noexcept(<condition>) in lambda definitions within the toml++ library implementation.

+

This macro offers a workaround to a bug in the old "legacy lambda processor" of Visual C++, which caused compile errors like "error C2057: expected constant expression", when it encountered such lambda's. These compile errors were reported by Kevin Dick, Jan 19, 2024, at https://github.com/marzer/tomlplusplus/issues/219

+
+
+

+ #define TOML_DISABLE_NOEXCEPT_NOEXCEPT +

+

Disable using noexcept(noexcept(<expression>)) within the toml++ library implementation.

+

This macro offers a workaround to a bug in Visual C++ (Visual Studio 2022), which caused compile errors, saying: "error C3878: syntax error: unexpected token ',' following 'simple-type-specifier'"

+
+
+

+ #define TOML_ENABLE_FLOAT16 +

+

Enable support for the built-in _Float16 type.

+

Defaults to 0.

+
+
+

+ #define TOML_ENABLE_FORMATTERS +

+

Sets whether the various formatter classes are enabled.

+

Defaults to 1.

+
+
+

+ #define TOML_ENABLE_PARSER +

+

Sets whether the parser-related parts of the library are included.

+

Defaults to 1.

+
+
+

+ #define TOML_ENABLE_UNRELEASED_FEATURES +

+

Enables support for unreleased TOML language features not yet part of a numbered version.

+

Defaults to 0.

+
+
+

+ #define TOML_ENABLE_WINDOWS_COMPAT +

+

Enables the use of wide strings (wchar_t, std::wstring) in various places throughout the library when building for Windows.

+

Defaults to 1 when building for Windows, 0 otherwise. Has no effect when building for anything other than Windows.

+
+
+

+ #define TOML_EXCEPTIONS +

+

Sets whether the library uses exceptions to report parsing failures.

+

Defaults to 1 or 0 according to your compiler's exception mode.

+
+
+

+ #define TOML_EXPORTED_CLASS +

+

An 'export' annotation to add to classes.

+

Not defined by default.

+
+
+

+ #define TOML_EXPORTED_FREE_FUNCTION +

+

An 'export' annotation to add to free functions.

+

Not defined by default.

+
+
+

+ #define TOML_EXPORTED_MEMBER_FUNCTION +

+

An 'export' annotation to add to non-static class member functions.

+

Not defined by default.

+
+
+

+ #define TOML_EXPORTED_STATIC_FUNCTION +

+

An 'export' annotation to add to static class member functions.

+

Not defined by default.

+
+
+

+ #define TOML_HEADER_ONLY +

+

Sets whether the library is entirely inline.

+

Defaults to 1.

+
+
+

+ #define TOML_IMPLEMENTATION +

+

Enables the library's implementation when TOML_HEADER_ONLY is disabled.

+

Not defined by default. Meaningless when TOML_HEADER_ONLY is enabled.

+
+
+

+ #define TOML_OPTIONAL_TYPE +

+

Overrides the optional<T> type used by the library.

+

Not defined by default (use std::optional).

+
+
+

+ #define TOML_SMALL_FLOAT_TYPE +

+

If your codebase has an additional 'small' float type (e.g. half-precision), this tells toml++ about it.

+

Not defined by default.

+
+
+

+ #define TOML_SMALL_INT_TYPE +

+

If your codebase has an additional 'small' integer type (e.g. 24-bits), this tells toml++ about it.

+

Not defined by default.

+
+
+
+
+
+
+ + + + + + + \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000000..67fdbda7aa --- /dev/null +++ b/index.html @@ -0,0 +1,436 @@ + + + + toml++ TOML for C++ + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+ banner + +

Features

  • Header-only (optional!)
  • Module support
  • Supports the latest TOML release (v1.0.0), plus optional support for some unreleased TOML features
  • Passes all tests in the toml-test suite
  • Supports serializing to JSON and YAML
  • Proper UTF-8 handling (incl. BOM)
  • C++17 (plus some C++20 features where available, e.g. experimental support for char8_t strings)
  • Doesn't require RTTI
  • Works with or without exceptions
  • Tested on Clang (8+), GCC (8+) and MSVC (VS2019)
  • Tested on x64, x86 and ARM

API documentation

You're looking at it! Browse the docs using the links at the top of the page. You can search from anywhere by pressing the TAB key.

Basic examples

Parsing files

Call toml::parse_file() and work with the toml::table you get back, or handle any toml::parse_error that gets thrown:

#include <iostream>
+#include <toml++/toml.hpp>
+// or alternatively:
+import tomlplusplus; // if C++20 or later
+
+int main(int argc, char\*\* argv)
+{
+    toml::table tbl;
+    try
+    {
+        tbl = toml::parse_file(argv[1]);
+        std::cout << tbl << "\n";
+    }
+    catch (const toml::parse_error& err)
+    {
+        std::cerr << "Parsing failed:\n" << err << "\n";
+        return 1;
+    }
+
+    return 0;
+}

Parsing strings and iostreams

Call toml::parse() and work with the toml::table you get back, or handle any toml::parse_error that gets thrown:

Try this code on Compiler Explorer

#include <iostream> +#include <sstream> +#include <toml++/toml.hpp> +using namespace std::string_view_literals; + +int main() +{ + static constexpr std::string_view some_toml = R"( + [library] + name = "toml++" + authors = ["Mark Gillard <mark.gillard@outlook.com.au>"] + cpp = 17 + )"sv; + + try + { + // parse directly from a string view: + { + toml::table tbl = toml::parse(some_toml); + std::cout << tbl << "\n"; + } + + // parse from a string stream: + { + std::stringstream ss{ std::string{ some_toml } }; + toml::table tbl = toml::parse(ss); + std::cout << tbl << "\n"; + } + } + catch (const toml::parse_error& err) + { + std::cerr << "Parsing failed:\n" << err << "\n"; + return 1; + } + + return 0; + +}
[library]
+authors = [ 'Mark Gillard <mark.gillard@outlook.com.au>' ]
+cpp = 17
+name = 'toml++'
+
+[library]
+authors = [ 'Mark Gillard <mark.gillard@outlook.com.au>' ]
+cpp = 17
+name = 'toml++'

Handling errors without exceptions

Can't (or won't) use exceptions? That's fine too. You can disable exceptions in your compiler flags and/or explicitly disable the library's use of them by setting the option TOML_EXCEPTIONS to 0. In either case, the parsing functions return a toml::parse_result instead of a toml::table:

#include <iostream>
+
+#define TOML_EXCEPTIONS 0 // only necessary if you've left them enabled in your compiler
+#include <toml++/toml.hpp>
+
+int main()
+{
+    toml::parse_result result = toml::parse_file("configuration.toml");
+
+    if (!result)
+    {
+        std::cerr << "Parsing failed:\n" << result.error() << "\n";
+        return 1;
+    }
+
+    do_stuff_with_your_config(std::move(result).table()); // 'steal' the table from the result
+    return 0;
+}

Custom error formatting

The examples above use an overloaded operator<< with ostreams to print basic error messages, and look like this:

Error while parsing key: expected bare key starting character or string delimiter, saw '?'
+(error occurred at line 2, column 5)

The library doesn't natively support error colouring in TTY environments, but instead provides the requisite information for you to build that and any other custom error handling yourself if necessary via toml::parse_error's source() and description() members:

toml::table tbl;
+try
+{
+    tbl = toml::parse_file("configuration.toml");
+}
+catch (const toml::parse_error& err)
+{
+    std::cerr
+        << "Error parsing file '" << \*err.source().path
+        << "':\n" << err.description()
+        << "\n (" << err.source().begin << ")\n";
+    return 1;
+}

Working with TOML data

A TOML document is a tree of values, arrays and tables, represented as the toml::value, toml::array and toml::table, respectively. All three inherit from toml::node, and can be easily accessed via the toml::node_view:

Try this code on Compiler Explorer

#include <iostream> +#include <toml++/toml.hpp> +using namespace std::string_view_literals; + +int main() +{ + static constexpr auto source = R"( + str = "hello world" + + numbers = [ 1, 2, 3, "four", 5.0 ] + vegetables = [ "tomato", "onion", "mushroom", "lettuce" ] + minerals = [ "quartz", "iron", "copper", "diamond" ] + + [animals] + cats = [ "tiger", "lion", "puma" ] + birds = [ "macaw", "pigeon", "canary" ] + fish = [ "salmon", "trout", "carp" ] + )"sv; + toml::table tbl = toml::parse(source); + + // different ways of directly querying data + std::optional<std::string_view> str1 = tbl["str"].value<std::string_view>(); + std::optional<std::string> str2 = tbl["str"].value<std::string>(); + std::string_view str3 = tbl["str"].value_or(""sv); + std::string& str4 = tbl["str"].ref<std::string>(); // ~~dangerous~~ + + std::cout << *str1 << "\n"; + std::cout << *str2 << "\n"; + std::cout << str3 << "\n"; + std::cout << str4 << "\n"; + + // get a toml::node_view of the element 'numbers' using operator[] + auto numbers = tbl["numbers"]; + std::cout << "table has 'numbers': " << !!numbers << "\n"; + std::cout << "numbers is an: " << numbers.type() << "\n"; + std::cout << "numbers: " << numbers << "\n"; + + // get the underlying array object to do some more advanced stuff + if (toml::array* arr = numbers.as_array()) + { + // visitation with for_each() helps deal with heterogeneous data + arr->for_each([](auto&& el) + { + if constexpr (toml::is_number<decltype(el)>) + (*el)++; + else if constexpr (toml::is_string<decltype(el)>) + el = "five"sv; + }); + + // arrays are very similar to std::vector + arr->push_back(7); + arr->emplace_back<toml::array>(8, 9); + std::cout << "numbers: " << numbers << "\n"; + } + + // node-views can be chained to quickly query deeper + std::cout << "cats: " << tbl["animals"]["cats"] << "\n"; + std::cout << "fish[1]: " << tbl["animals"]["fish"][1] << "\n"; + + // can also be retrieved via absolute path + std::cout << "cats: " << tbl.at_path("animals.cats") << "\n"; + std::cout << "fish[1]: " << tbl.at_path("animals.fish[1]") << "\n"; + + // ...even if the element doesn't exist + std::cout << "dinosaurs: " << tbl["animals"]["dinosaurs"] << "\n"; //no dinosaurs :( + + return 0; + +}
hello world
+hello world
+hello world
+hello world
+table has 'numbers': 1
+numbers is an: array
+numbers: [ 1, 2, 3, 'four', 5.0 ]
+numbers: [ 2, 3, 4, 'five', 6.0, 7, [ 8, 9 ] ]
+cats: [ 'tiger', 'lion', 'puma' ]
+fish[1]: 'trout'
+dinosaurs:

Serializing as TOML, JSON and YAML

All toml++ data types have overloaded operator<< for ostreams, so 'serializing' a set of TOML data to actual TOML is done just by printing it to an ostream. Converting it to JSON and YAML is done in much the same way, but via a toml::json_formatter and toml::yaml_formatter.

Try this code on Compiler Explorer

#include <iostream> +#include <toml++/toml.hpp> + +int main() +{ + auto tbl = toml::table{ + { "lib", "toml++" }, + { "cpp", toml::array{ 17, 20, "and beyond" } }, + { "toml", toml::array{ "1.0.0", "and beyond" } }, + { "repo", "https://github.com/marzer/tomlplusplus/" }, + { "author", toml::table{ + { "name", "Mark Gillard" }, + { "github", "https://github.com/marzer" }, + { "twitter", "https://twitter.com/marzer8789" } + } + }, + }; + + // serializing as TOML + std::cout << "###### TOML ######" << "\n\n"; + std::cout << tbl << "\n\n"; + + // serializing as JSON using toml::json_formatter: + std::cout << "###### JSON ######" << "\n\n"; + std::cout << toml::json_formatter{ tbl } << "\n\n"; + + // serializing as YAML using toml::yaml_formatter: + std::cout << "###### YAML ######" << "\n\n"; + std::cout << toml::yaml_formatter{ tbl } << "\n\n"; + + return 0; + +}
###### TOML
+
+cpp = [ 17, 20, 'and beyond' ]
+lib = 'toml++'
+repo = 'https://github.com/marzer/tomlplusplus/'
+toml = [ '1.0.0', 'and beyond' ]
+
+[author]
+github = 'https://github.com/marzer'
+name = 'Mark Gillard'
+twitter = 'https://twitter.com/marzer8789'
+
+###### JSON
+
+{
+    "author" : {
+        "github" : "https://github.com/marzer",
+        "name" : "Mark Gillard",
+        "twitter" : "https://twitter.com/marzer8789"
+    },
+    "cpp" : [
+        17,
+        20,
+        "and beyond"
+    ],
+    "lib" : "toml++",
+    "repo" : "https://github.com/marzer/tomlplusplus/",
+    "toml" : [
+        "1.0.0",
+        "and beyond"
+    ]
+}
+
+###### YAML
+
+author:
+github: 'https://github.com/marzer'
+name: 'Mark Gillard'
+twitter: 'https://twitter.com/marzer8789'
+cpp:
+-   17
+-   20
+-   'and beyond'
+lib: 'toml++'
+repo: 'https://github.com/marzer/tomlplusplus/'
+toml:
+-   '1.0.0'
+-   'and beyond'

Speeding up compilation

Because toml++ is a header-only library of nontrivial size you might find that compilation times noticeably increase after you add it to your project, especially if you add the library's header somewhere that's visible from a large number of translation units. You can counter this by disabling header-only mode and explicitly controlling where the library's implementation is compiled.

Step 1: Set TOML_HEADER_ONLY to 0 before including toml++

This must be the same everywhere, so either set it as a global #define in your build system, or do it manually before including toml++ in some global header that's used everywhere in your project:

// global_header_that_includes_toml++.h
+
+#define TOML_HEADER_ONLY 0
+#include <toml.hpp>

Step 2: Define TOML_IMPLEMENTATION before including toml++ in one specific translation unit

// some_code_file.cpp
+
+#define TOML_IMPLEMENTATION
+#include "global_header_that_includes_toml++.hpp"

Bonus Step: Disable any library features you don't need

Some library features can be disabled wholesale so you can avoid paying their the compilation cost if you don't need them. For example, if all you need to do is serialize some code-generated TOML and don't actually need the parser at all you, can set TOML_ENABLE_PARSER to 0 to disable the parser altogether. This can yield fairly significant compilation speedups since the parser accounts for a good chunk of the library's code.

Adding toml++ to your project

"The old fashioned way"

The library comes in two flavours, 🍦️ Single-header and 🍨️ Regular. The API is the same for both.

🍦️ Single-header flavour

  1. Drop toml.hpp wherever you like in your source tree
  2. There is no step two

🍨️ Regular flavour

  1. Clone the repository from GitHub
  2. Add tomlplusplus/include to your include paths, or for optional module support add tomlplusplus/modules as well and enable TOMLPLUSPLUS_BUILD_MODULES
  3. #include <toml++/toml.hpp> (or import tomlplusplus;)

Conan

Add tomlplusplus/3.4.0 to your conanfile.

DDS

Add tomlpp to your package.json5, e.g.:

depends: [
+    'tomlpp^3.4.0',
+]

Meson

You can install the wrap with:

meson wrap install tomlplusplus

After that, you can use it like a regular dependency:

tomlplusplus_dep = dependency('tomlplusplus')

You can also add it as a subproject directly.

Tipi.build

tomlplusplus can be easily used in tipi.build projects by adding the following entry to your .tipi/deps:

{
+    "marzer/tomlplusplus": { }
+}

Vcpkg

vcpkg install tomlplusplus

CMake FetchContent

include(FetchContent)
+FetchContent_Declare(
+    tomlplusplus
+    GIT_REPOSITORY https://github.com/marzer/tomlplusplus.git
+    GIT_TAG v3.4.0
+)
+FetchContent_MakeAvailable(tomlplusplus)

Git submodules

git submodule add --depth 1 https://github.com/marzer/tomlplusplus.git tomlplusplus

Other environments and package managers

The C++ tooling ecosystem is a fractal nightmare of unbridled chaos so naturally I'm not up-to-speed with all of the available packaging and integration options. I'm always happy to see new ones supported, though! If there's some integration you'd like to see and have the technical know-how to make it happen, feel free to make a pull request.

Special mention: Python

There exists a python wrapper library built around toml++ called pytomlpp which is, at the time of writing, one of only two natively-compiled TOML libraries available for python, and thus one of the fastest options available:

Parsing data.toml 5000 times:
+pytomlpp: 0.694 s
+rtoml: 0.871 s ( 1.25x)
+tomli: 2.625 s ( 3.78x)
+toml: 5.642 s ( 8.12x)
+qtoml: 7.760 s (11.17x)
+tomlkit: 32.708 s (47.09x)

Install it using pip:

pip install pytomlpp

Note that I'm not the owner of that project, so if you wish to report a bug relating to the python implementation please do so at their repository, not on the main toml++ one.

Library configuration options

The library exposes a number of configuration options in the form of compiler #defines. Things like changing the optional<T> type, disabling header-only mode, et cetera. The full list of configurables can be found on the Library Configuration page.

Contributing

Contributions are very welcome! Either by reporting issues or submitting pull requests. If you wish to submit a pull request, please see CONTRIBUTING for all the details you need to get going.

License

toml++ is licensed under the terms of the MIT license - see LICENSE.

If you're using the single-header version of the library you don't need to explicitly distribute the license file; it is embedded in the preamble at the top of the header.

Contacting the author

For bug reports and feature requests please use the Github Issues system. For anything else you're welcome to reach out via other means. In order of likely response speed:

+
+
+
+
+ + + + + + + \ No newline at end of file diff --git a/logo.svg b/logo.svg new file mode 100644 index 0000000000..5941d793df --- /dev/null +++ b/logo.svg @@ -0,0 +1,15 @@ + + + + + + + \ No newline at end of file diff --git a/modules.html b/modules.html new file mode 100644 index 0000000000..9423bcd348 --- /dev/null +++ b/modules.html @@ -0,0 +1,142 @@ + + + + toml++ TOML for C++ + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Modules

+ + +
+
+
+
+ + + + + + + \ No newline at end of file diff --git a/namespaces.html b/namespaces.html new file mode 100644 index 0000000000..123deb3cdf --- /dev/null +++ b/namespaces.html @@ -0,0 +1,147 @@ + + + + toml++ TOML for C++ + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Namespaces

+
    +
  • + namespace toml The root namespace for all toml++ functions and types. +
      +
    • namespace literals inline Convenience literal operators for working with toml++.
    • +
    +
  • +
+ +
+
+
+
+ + + + + + + \ No newline at end of file diff --git a/namespacetoml.html b/namespacetoml.html new file mode 100644 index 0000000000..1fcba517b0 --- /dev/null +++ b/namespacetoml.html @@ -0,0 +1,1313 @@ + + + + toml namespace | toml++ TOML for C++ + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ toml namespace +

+

The root namespace for all toml++ functions and types.

+ +
+

Namespaces

+
+
namespace literals inline
+
Convenience literal operators for working with toml++.
+
+
+
+

Classes

+
+
+ class array +
+
A TOML array.
+
+ struct date +
+
A local date.
+
+ struct date_time +
+
A date-time.
+
+
template <typename T>
+ struct inserter +
+
Helper class for suppressing move-construction in single-argument array constructors.
+
+ class json_formatter +
+
A wrapper for printing TOML objects out to a stream as formatted JSON.
+
+ class key +
+
A key parsed from a TOML document.
+
+ class node +
+
A TOML node.
+
+
template <typename ViewedType>
+ class node_view +
+
A view of a node.
+
+ class parse_error +
+
An error generated when parsing fails.
+
+ class parse_result +
+
The result of a parsing operation.
+
+ class path +
+
A TOML path.
+
+ class path_component +
+
Represents a single component of a complete 'TOML-path': either a key or an array index.
+
+ struct source_position +
+
A source document line-and-column pair.
+
+ struct source_region +
+
A source document region.
+
+ class table +
+
A TOML table.
+
+ struct time +
+
A local time-of-day.
+
+ struct time_offset +
+
A timezone offset.
+
+ class toml_formatter +
+
A wrapper for printing TOML objects out to a stream as formatted TOML.
+
+
template <typename ValueType>
+ class value +
+
A TOML value.
+
+ class yaml_formatter +
+
A wrapper for printing TOML objects out to a stream as formatted YAML.
+
+
+
+

Enums

+
+
+ enum class format_flags: uint64_t { none, + quote_dates_and_times = (1ull << 0), + quote_infinities_and_nans = (1ull << 1), + allow_literal_strings = (1ull << 2), + allow_multi_line_strings = (1ull << 3), + allow_real_tabs_in_strings = (1ull << 4), + allow_unicode_strings = (1ull << 5), + allow_binary_integers = (1ull << 6), + allow_octal_integers = (1ull << 7), + allow_hexadecimal_integers = (1ull << 8), + indent_sub_tables = (1ull << 9), + indent_array_elements = (1ull << 10), + indentation = indent_sub_tables | indent_array_elements, + relaxed_float_precision = (1ull << 11), + terse_key_value_pairs = (1ull << 12), + force_multiline_arrays = (1ull << 13) } +
+
Format flags for modifying how TOML data is printed to streams.
+
+ enum class node_type: uint8_t { none, + table, + array, + string, + integer, + floating_point, + boolean, + date, + time, + date_time } +
+
TOML node type identifiers.
+
+ enum class path_component_type: uint8_t { key = 0x1, + array_index = 0x2 } +
+
Indicates type of path component, either a key, an index in an array, or invalid.
+
+ enum class value_flags: uint16_t { none, + format_as_binary = 1, + format_as_octal = 2, + format_as_hexadecimal = 3 } +
+
Metadata associated with TOML values.
+
+
+
+

Typedefs

+
+
+ using array_iterator = /* ... */ +
+
A RandomAccessIterator for iterating over elements in a toml::array.
+
+ using const_array_iterator = /* ... */ +
+
A RandomAccessIterator for iterating over const elements in a toml::array.
+
+ using const_table_iterator = /* ... */ +
+
A BidirectionalIterator for iterating over const key-value pairs in a toml::table.
+
+ using default_formatter = toml_formatter +
+
The 'default' formatter used by TOML objects when they are printed to a stream.
+
+
template <typename T>
+ using inserted_type_of = /* ... */ +
+
Metafunction for determining which node type would be constructed if an object of this type was inserted into a toml::table or toml::array.
+
+
template <typename T>
+ using optional = std::optional<T> +
+
The 'optional' type used throughout the library.
+
+ using source_index = uint32_t +
+
The integer type used to tally line numbers and columns.
+
+ using source_path_ptr = std::shared_ptr<const std::string> +
+
A pointer to a shared string resource containing a source path.
+
+ using table_iterator = /* ... */ +
+
A BidirectionalIterator for iterating over key-value pairs in a toml::table.
+
+
+
+

Functions

+
+
+ auto at_path(node& root, + std::string_view path) →  node_view<node> noexcept +
+
Returns a view of the node matching a fully-qualified "TOML path".
+
+ auto at_path(const node& root, + std::string_view path) →  node_view<const node> noexcept +
+
Returns a const view of the node matching a fully-qualified "TOML path".
+
+ auto at_path(node& root, + std::wstring_view path) →  node_view<node> +
+
Returns a view of the node matching a fully-qualified "TOML path".
+
+ auto at_path(const node& root, + std::wstring_view path) →  node_view<const node> +
+
Returns a const view of the node matching a fully-qualified "TOML path".
+
+ auto at_path(node& root, + const toml::path& path) →  node_view<node> noexcept +
+
Returns a view of the node matching a fully-qualified "TOML path".
+
+ auto at_path(const node& root, + const toml::path& path) →  node_view<const node> noexcept +
+
Returns a const view of the node matching a fully-qualified "TOML path".
+
+ auto get_line(std::string_view doc, + source_index line_num) →  optional<std::string_view> constexpr noexcept +
+
Returns the line at the specified line number, from the specified document.
+
+ auto operator""_toml(const char* str, + size_t len) →  parse_result +
+
Parses TOML data from a string literal.
+
+ auto operator""_toml(const char8_t* str, + size_t len) →  parse_result +
+
Parses TOML data from a UTF-8 string literal.
+
+ auto operator""_tpath(const char* str, + size_t len) →  path +
+
Parses a TOML path from a string literal.
+
+
template <typename Char>
+ auto operator<<(std::basic_ostream<Char>& lhs, + node_type rhs) →  std::basic_ostream<Char>& +
+
Pretty-prints the value of a node_type to a stream.
+
+ auto parse(std::string_view doc, + std::string_view source_path = {}) →  parse_result +
+
Parses a TOML document from a string view.
+
+ auto parse(std::string_view doc, + std::string&& source_path) →  parse_result +
+
Parses a TOML document from a string view.
+
+ auto parse(std::u8string_view doc, + std::string_view source_path = {}) →  parse_result +
+
Parses a TOML document from a char8_t string view.
+
+ auto parse(std::u8string_view doc, + std::string&& source_path) →  parse_result +
+
Parses a TOML document from a char8_t string view.
+
+ auto parse(std::string_view doc, + std::wstring_view source_path) →  parse_result +
+
Parses a TOML document from a string view.
+
+ auto parse(std::istream& doc, + std::wstring_view source_path) →  parse_result +
+
Parses a TOML document from a stream.
+
+ auto parse(std::u8string_view doc, + std::wstring_view source_path) →  parse_result +
+
Parses a TOML document from a char8_t string view.
+
+ auto parse(std::istream& doc, + std::string_view source_path = {}) →  parse_result +
+
Parses a TOML document from a stream.
+
+ auto parse(std::istream& doc, + std::string&& source_path) →  parse_result +
+
Parses a TOML document from a stream.
+
+ auto parse_file(std::string_view file_path) →  parse_result +
+
Parses a TOML document from a file.
+
+ auto parse_file(std::u8string_view file_path) →  parse_result +
+
Parses a TOML document from a file.
+
+ auto parse_file(std::wstring_view file_path) →  parse_result +
+
Parses a TOML document from a file.
+
+
+
+

Variables

+
+
+
template <typename T>
+ bool is_array constexpr +
+
Metafunction for determining if a type is, or is a reference to, a toml::array.
+
+
template <typename T>
+ bool is_boolean constexpr +
+
Metafunction for determining if a type is, or is a reference to, a bool or toml::value<bool>.
+
+
template <typename T>
+ bool is_chronological constexpr +
+
Metafunction for determining if a type satisfies any of toml::is_date, toml::is_time or toml::is_date_time.
+
+
template <typename T>
+ bool is_container constexpr +
+
Metafunction for determining if a type satisfies either toml::is_table or toml::is_array.
+
+
template <typename T>
+ bool is_date constexpr +
+
Metafunction for determining if a type is, or is a reference to, a toml::date or toml::value<date>.
+
+
template <typename T>
+ bool is_date_time constexpr +
+
Metafunction for determining if a type is, or is a reference to, a toml::date_time or toml::value<date_time>.
+
+
template <typename T>
+ bool is_floating_point constexpr +
+
Metafunction for determining if a type is, or is a reference to, a double or toml::value<double>.
+
+
template <typename T>
+ bool is_integer constexpr +
+
Metafunction for determining if a type is, or is a reference to, a int64_t or toml::value<int64_t>.
+
+
template <typename T>
+ bool is_key constexpr +
+
Metafunction for determining if a type is, or is a reference to, a toml::key.
+
+
template <typename T>
+ bool is_key_or_convertible constexpr +
+
Metafunction for determining if a type is, or is a reference to, a toml::key, or is implicitly or explicitly convertible to one.
+
+
template <typename T>
+ bool is_node constexpr +
+
Metafunction for determining if a type is, or is a reference to, a toml::node (or one of its subclasses).
+
+
template <typename T>
+ bool is_node_view constexpr +
+
Metafunction for determining if a type is, or is a reference to, a toml::node_view.
+
+
template <typename T>
+ bool is_number constexpr +
+
Metafunction for determining if a type satisfies either toml::is_integer or toml::is_floating_point.
+
+
template <typename T>
+ bool is_string constexpr +
+
Metafunction for determining if a type is, or is a reference to, a std::string or toml::value<std::string>.
+
+
template <typename T>
+ bool is_table constexpr +
+
Metafunction for determining if a type is, or is a reference to, a toml::table.
+
+
template <typename T>
+ bool is_time constexpr +
+
Metafunction for determining if a type is, or is a reference to, a toml::time or toml::value<time>.
+
+
template <typename T>
+ bool is_value constexpr +
+
Metafunction for determining if a type is, or is a reference to, any of the toml value types. Excludes tables and arrays.
+
+ value_flags preserve_source_value_flags constexpr +
+
Special toml::value_flags constant used for array + table insert functions to specify that any value nodes being copied should not have their flags property overridden by the inserting function's flags argument.
+
+
+
+

Enum documentation

+
+

+ enum class toml::format_flags: uint64_t +

+

Format flags for modifying how TOML data is printed to streams.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Enumerators
none +

None.

+
quote_dates_and_times +

Dates and times will be emitted as quoted strings.

+
quote_infinities_and_nans +

Infinities and NaNs will be emitted as quoted strings.

+
allow_literal_strings +

Strings will be emitted as single-quoted literal strings where possible.

+
allow_multi_line_strings +

Strings containing newlines will be emitted as triple-quoted 'multi-line' strings where possible.

+
allow_real_tabs_in_strings +

Allow real tab characters in string literals (as opposed to the escaped form \t).

+
allow_unicode_strings +

Allow non-ASCII characters in strings (as opposed to their escaped form, e.g. \u00DA).

+
allow_binary_integers +

Allow integers with value_flags::format_as_binary to be emitted as binary.

+
allow_octal_integers +

Allow integers with value_flags::format_as_octal to be emitted as octal.

+
allow_hexadecimal_integers +

Allow integers with value_flags::format_as_hexadecimal to be emitted as hexadecimal.

+
indent_sub_tables +

Apply indentation to tables nested within other tables/arrays.

+
indent_array_elements +

Apply indentation to array elements when the array is forced to wrap over multiple lines.

+
indentation +

Combination mask of all indentation-enabling flags.

+
relaxed_float_precision +

Emit floating-point values with relaxed (human-friendly) precision.

+ +
terse_key_value_pairs +

Avoids the use of whitespace around key-value pairs.

+
force_multiline_arrays +

Always print multiline arrays (one element per line).

+
+
+
+

+ enum class toml::node_type: uint8_t +

+

TOML node type identifiers.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Enumerators
none +

Not-a-node.

+
table +

The node is a toml::table.

+
array +

The node is a toml::array.

+
string +

The node is a toml::value<std::string>.

+
integer +

The node is a toml::value<int64_t>.

+
floating_point +

The node is a toml::value<double>.

+
boolean +

The node is a toml::value<bool>.

+
date +

The node is a toml::value<date>.

+
time +

The node is a toml::value<time>.

+
date_time +

The node is a toml::value<date_time>.

+
+
+
+

+ enum class toml::value_flags: uint16_t +

+

Metadata associated with TOML values.

+ + + + + + + + + + + + + + + + + + + + +
Enumerators
none +

None.

+
format_as_binary +

Format integer values as binary.

+
format_as_octal +

Format integer values as octal.

+
format_as_hexadecimal +

Format integer values as hexadecimal.

+
+
+
+
+

Typedef documentation

+
+

+ using toml::default_formatter = toml_formatter +

+

The 'default' formatter used by TOML objects when they are printed to a stream.

+

This is an alias for toml::toml_formatter.

+
+
+

+
+ template <typename T> +
+ using toml::inserted_type_of = /* ... */ +

+

Metafunction for determining which node type would be constructed if an object of this type was inserted into a toml::table or toml::array.

+
static_assert(std::is_same_v<toml::inserted_type_of<const char*>, toml::value<std::string>);
+static_assert(std::is_same_v<toml::inserted_type_of<int>,         toml::value<int64_t>);
+static_assert(std::is_same_v<toml::inserted_type_of<float>,       toml::value<double>);
+static_assert(std::is_same_v<toml::inserted_type_of<bool>,        toml::value<bool>);
+
+
+

+
+ template <typename T> +
+ using toml::optional = std::optional<T> +

+

The 'optional' type used throughout the library.

+ +
+
+
+

Function documentation

+
+

+ node_view<node> toml::at_path(node& root, + std::string_view path) noexcept +

+

Returns a view of the node matching a fully-qualified "TOML path".

+ + + + + + + + + + + + + + +
Parameters
rootThe root node from which the path will be traversed.
pathThe "TOML path" to traverse.
+
auto config = toml::parse(R"(
+
+[foo]
+bar = [ 0, 1, 2, [ 3 ], { kek = 4 } ]
+
+)"sv);
+
+std::cout << toml::at_path(config, "foo.bar[2]") << "\n";
+std::cout << toml::at_path(config, "foo.bar[3][0]") << "\n";
+std::cout << toml::at_path(config, "foo.bar[4].kek") << "\n";
2
+3
+4
+
+
+

+ node_view<const node> toml::at_path(const node& root, + std::string_view path) noexcept +

+

Returns a const view of the node matching a fully-qualified "TOML path".

+ +
+
+

+ node_view<node> toml::at_path(node& root, + std::wstring_view path) +

+

Returns a view of the node matching a fully-qualified "TOML path".

+ +
+
+

+ node_view<const node> toml::at_path(const node& root, + std::wstring_view path) +

+

Returns a const view of the node matching a fully-qualified "TOML path".

+ +
+
+

+ node_view<node> toml::at_path(node& root, + const toml::path& path) noexcept +

+

Returns a view of the node matching a fully-qualified "TOML path".

+ + + + + + + + + + + + + + +
Parameters
rootThe root node from which the path will be traversed.
pathThe "TOML path" to traverse.
+
auto config = toml::parse(R"(
+
+[foo]
+bar = [ 0, 1, 2, [ 3 ], { kek = 4 } ]
+
+)"sv);
+
+toml::path path1("foo.bar[2]");
+toml::path path2("foo.bar[4].kek");
+std::cout << toml::at_path(config, path1) << "\n";
+std::cout << toml::at_path(config, path1.parent_path()) << "\n";
+std::cout << toml::at_path(config, path2) << "\n";
+std::cout << toml::at_path(config, path2.parent_path()) << "\n";
2
+[ 0, 1, 2, [ 3 ], { kek = 4 } ]
+4
+{ kek  = 4 }
+
+
+

+ node_view<const node> toml::at_path(const node& root, + const toml::path& path) noexcept +

+

Returns a const view of the node matching a fully-qualified "TOML path".

+ +
+
+

+ optional<std::string_view> toml::get_line(std::string_view doc, + source_index line_num) constexpr noexcept +

+

Returns the line at the specified line number, from the specified document.

+ + + + + + + + + + + + + + + + + + + + +
Parameters
docThe document.
line_numThe line number (1-based).
ReturnsThe specified line, excluding any possible trailing carriage return or line feed character.
+
auto doc = "alpha = 1\nbeta = 2"sv;
+auto second_line = toml::get_line(doc, 2);
+
+std::cout << "The second line says \"" << second_line.value() << "\"\n";
The second line says "beta = 2"
+
+
+

+
+ template <typename Char> +
+ std::basic_ostream<Char>& toml::operator<<(std::basic_ostream<Char>& lhs, + node_type rhs) +

+

Pretty-prints the value of a node_type to a stream.

+
auto arr = toml::array{ 1, 2.0, "3", false };
+for (size_t i = 0; i < arr.size() i++)
+    std::cout << "Element ["sv << i << "] is: "sv << arr[i].type() << "\n";
Element [0] is: integer
+Element [1] is: floating-point
+Element [2] is: string
+Element [3] is: boolean
+
+
+

+ parse_result toml::parse(std::string_view doc, + std::string_view source_path = {}) +

+

Parses a TOML document from a string view.

+ + + + + + + + + + + + + + + + + + + + +
Parameters
docThe TOML document to parse. Must be valid UTF-8.
source_pathThe path used to initialize each node's source().path. If you don't have a path (or you have no intention of using paths in diagnostics) then this parameter can safely be left blank.
ReturnsWith exceptions: A toml::table. Without exceptions: A toml::parse_result.
+
auto tbl = toml::parse("a = 3"sv);
+std::cout << tbl["a"] << "\n";
3
+
+
+

+ parse_result toml::parse(std::string_view doc, + std::string&& source_path) +

+

Parses a TOML document from a string view.

+ + + + + + + + + + + + + + + + + + + + +
Parameters
docThe TOML document to parse. Must be valid UTF-8.
source_pathThe path used to initialize each node's source().path. If you don't have a path (or you have no intention of using paths in diagnostics) then this parameter can safely be left blank.
ReturnsWith exceptions: A toml::table. Without exceptions: A toml::parse_result.
+
auto tbl = toml::parse("a = 3"sv, "foo.toml");
+std::cout << tbl["a"] << "\n";
3
+
+
+

+ parse_result toml::parse(std::u8string_view doc, + std::string_view source_path = {}) +

+

Parses a TOML document from a char8_t string view.

+ + + + + + + + + + + + + + + + + + + + +
Parameters
docThe TOML document to parse. Must be valid UTF-8.
source_pathThe path used to initialize each node's source().path. If you don't have a path (or you have no intention of using paths in diagnostics) then this parameter can safely be left blank.
ReturnsWith exceptions: A toml::table. Without exceptions: A toml::parse_result.
+
auto tbl = toml::parse(u8"a = 3"sv);
+std::cout << tbl["a"] << "\n";
3
+
+
+

+ parse_result toml::parse(std::u8string_view doc, + std::string&& source_path) +

+

Parses a TOML document from a char8_t string view.

+ + + + + + + + + + + + + + + + + + + + +
Parameters
docThe TOML document to parse. Must be valid UTF-8.
source_pathThe path used to initialize each node's source().path. If you don't have a path (or you have no intention of using paths in diagnostics) then this parameter can safely be left blank.
ReturnsWith exceptions: A toml::table. Without exceptions: A toml::parse_result.
+
auto tbl = toml::parse(u8"a = 3"sv, "foo.toml");
+std::cout << tbl["a"] << "\n";
3
+
+
+

+ parse_result toml::parse(std::string_view doc, + std::wstring_view source_path) +

+

Parses a TOML document from a string view.

+ + + + + + + + + + + + + + + + + + + + +
Parameters
docThe TOML document to parse. Must be valid UTF-8.
source_pathThe path used to initialize each node's source().path. If you don't have a path (or you have no intention of using paths in diagnostics) then this parameter can safely be left blank.
ReturnsWith exceptions: A toml::table. Without exceptions: A toml::parse_result.
+
auto tbl = toml::parse("a = 3"sv, L"foo.toml");
+std::cout << tbl["a"] << "\n";
3
+
+
+

+ parse_result toml::parse(std::istream& doc, + std::wstring_view source_path) +

+

Parses a TOML document from a stream.

+ + + + + + + + + + + + + + + + + + + + +
Parameters
docThe TOML document to parse. Must be valid UTF-8.
source_pathThe path used to initialize each node's source().path. If you don't have a path (or you have no intention of using paths in diagnostics) then this parameter can safely be left blank.
ReturnsWith exceptions: A toml::table. Without exceptions: A toml::parse_result.
+
std::stringstream ss;
+ss << "a = 3"sv;
+
+auto tbl = toml::parse(ss);
+std::cout << tbl["a"] << "\n";
3
+
+
+

+ parse_result toml::parse(std::u8string_view doc, + std::wstring_view source_path) +

+

Parses a TOML document from a char8_t string view.

+ + + + + + + + + + + + + + + + + + + + +
Parameters
docThe TOML document to parse. Must be valid UTF-8.
source_pathThe path used to initialize each node's source().path. If you don't have a path (or you have no intention of using paths in diagnostics) then this parameter can safely be left blank.
ReturnsWith exceptions: A toml::table. Without exceptions: A toml::parse_result.
+
auto tbl = toml::parse(u8"a = 3"sv, L"foo.toml");
+std::cout << tbl["a"] << "\n";
3
+
+
+

+ parse_result toml::parse(std::istream& doc, + std::string_view source_path = {}) +

+

Parses a TOML document from a stream.

+ + + + + + + + + + + + + + + + + + + + +
Parameters
docThe TOML document to parse. Must be valid UTF-8.
source_pathThe path used to initialize each node's source().path. If you don't have a path (or you have no intention of using paths in diagnostics) then this parameter can safely be left blank.
ReturnsWith exceptions: A toml::table. Without exceptions: A toml::parse_result.
+
std::stringstream ss;
+ss << "a = 3"sv;
+
+auto tbl = toml::parse(ss);
+std::cout << tbl["a"] << "\n";
3
+
+
+

+ parse_result toml::parse(std::istream& doc, + std::string&& source_path) +

+

Parses a TOML document from a stream.

+ + + + + + + + + + + + + + + + + + + + +
Parameters
docThe TOML document to parse. Must be valid UTF-8.
source_pathThe path used to initialize each node's source().path. If you don't have a path (or you have no intention of using paths in diagnostics) then this parameter can safely be left blank.
ReturnsWith exceptions: A toml::table. Without exceptions: A toml::parse_result.
+
std::stringstream ss;
+ss << "a = 3"sv;
+
+auto tbl = toml::parse(ss, "foo.toml");
+std::cout << tbl["a"] << "\n";
3
+
+
+

+ parse_result toml::parse_file(std::string_view file_path) +

+

Parses a TOML document from a file.

+ + + + + + + + + + + + + + + + +
Parameters
file_pathThe TOML document to parse. Must be valid UTF-8.
ReturnsWith exceptions: A toml::table. Without exceptions: A toml::parse_result.
+
toml::parse_result get_foo_toml()
+{
+    return toml::parse_file("foo.toml");
+}
+
+
+

+ parse_result toml::parse_file(std::u8string_view file_path) +

+

Parses a TOML document from a file.

+ + + + + + + + + + + + + + + + +
Parameters
file_pathThe TOML document to parse. Must be valid UTF-8.
ReturnsWith exceptions: A toml::table. Without exceptions: A toml::parse_result.
+
toml::parse_result get_foo_toml()
+{
+    return toml::parse_file(u8"foo.toml");
+}
+
+
+

+ parse_result toml::parse_file(std::wstring_view file_path) +

+

Parses a TOML document from a file.

+ + + + + + + + + + + + + + + + +
Parameters
file_pathThe TOML document to parse. Must be valid UTF-8.
ReturnsWith exceptions: A toml::table. Without exceptions: A toml::parse_result.
+
toml::parse_result get_foo_toml()
+{
+    return toml::parse_file(L"foo.toml");
+}
+
+
+
+
+
+
+ + + + + + + \ No newline at end of file diff --git a/namespacetoml_1_1literals.html b/namespacetoml_1_1literals.html new file mode 100644 index 0000000000..e5566df35a --- /dev/null +++ b/namespacetoml_1_1literals.html @@ -0,0 +1,267 @@ + + + + toml::literals namespace | toml++ TOML for C++ + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ toml::literals namespace inline +

+

Convenience literal operators for working with toml++.

+ +

This namespace exists so you can safely hoist the toml++ literal operators into another scope without dragging in everything from the toml namespace:

#include <toml++/toml.hpp>
+using namespace toml::literals;
+
+int main()
+{
+    toml::table tbl = "vals = [1, 2, 3]"_toml;
+
+    // ... do stuff with the table generated by the "_toml" literal ...
+
+    return 0;
+}
+
+

Functions

+
+
+ auto operator""_toml(const char* str, + size_t len) →  parse_result +
+
Parses TOML data from a string literal.
+
+ auto operator""_toml(const char8_t* str, + size_t len) →  parse_result +
+
Parses TOML data from a UTF-8 string literal.
+
+ auto operator""_tpath(const char* str, + size_t len) →  path +
+
Parses a TOML path from a string literal.
+
+
+
+

Function documentation

+
+

+ parse_result toml::literals::operator""_toml(const char* str, + size_t len) +

+

Parses TOML data from a string literal.

+ + + + + + + + + + + + + + + + + + + + +
Parameters
strThe string data. Must be valid UTF-8.
lenThe string length.
ReturnsWith exceptions: A toml::table. Without exceptions: A toml::parse_result.
+
using namespace toml::literals;
+
+auto tbl = "a = 3"_toml;
+std::cout << tbl["a"] << "\n";
3
+
+
+

+ parse_result toml::literals::operator""_toml(const char8_t* str, + size_t len) +

+

Parses TOML data from a UTF-8 string literal.

+ + + + + + + + + + + + + + + + + + + + +
Parameters
strThe string data. Must be valid UTF-8.
lenThe string length.
ReturnsWith exceptions: A toml::table. Without exceptions: A toml::parse_result.
+
using namespace toml::literals;
+
+auto tbl = u8"a = 3"_toml;
+std::cout << tbl["a"] << "\n";
3
+
+
+

+ path toml::literals::operator""_tpath(const char* str, + size_t len) +

+

Parses a TOML path from a string literal.

+ + + + + + + + + + + + + + + + + + + + +
Parameters
strThe string data.
lenThe string length.
ReturnsA toml::path generated from the string literal.
+
using namespace toml::literals;
+
+auto path = "main.settings.devices[2]"_tpath;
+std::cout << path.parent_path() << "\n";
main.settings.devices
+
+
+
+
+
+
+ + + + + + + \ No newline at end of file diff --git a/pages.html b/pages.html new file mode 100644 index 0000000000..8d28db1313 --- /dev/null +++ b/pages.html @@ -0,0 +1,142 @@ + + + + toml++ TOML for C++ + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Pages

+ + +
+
+
+
+ + + + + + + \ No newline at end of file diff --git a/poxy/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7jsDJT9g.woff2 b/poxy/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7jsDJT9g.woff2 new file mode 100644 index 0000000000..fc854896c6 Binary files /dev/null and b/poxy/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7jsDJT9g.woff2 differ diff --git a/poxy/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7ksDJT9g.woff2 b/poxy/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7ksDJT9g.woff2 new file mode 100644 index 0000000000..96ea6b75c2 Binary files /dev/null and b/poxy/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7ksDJT9g.woff2 differ diff --git a/poxy/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDI.woff2 b/poxy/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDI.woff2 new file mode 100644 index 0000000000..48bda2d1d5 Binary files /dev/null and b/poxy/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDI.woff2 differ diff --git a/poxy/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7osDJT9g.woff2 b/poxy/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7osDJT9g.woff2 new file mode 100644 index 0000000000..6df989d17d Binary files /dev/null and b/poxy/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7osDJT9g.woff2 differ diff --git a/poxy/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7psDJT9g.woff2 b/poxy/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7psDJT9g.woff2 new file mode 100644 index 0000000000..6df2fe3103 Binary files /dev/null and b/poxy/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7psDJT9g.woff2 differ diff --git a/poxy/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7qsDJT9g.woff2 b/poxy/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7qsDJT9g.woff2 new file mode 100644 index 0000000000..82d3514a43 Binary files /dev/null and b/poxy/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7qsDJT9g.woff2 differ diff --git a/poxy/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7rsDJT9g.woff2 b/poxy/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7rsDJT9g.woff2 new file mode 100644 index 0000000000..773cf52f78 Binary files /dev/null and b/poxy/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7rsDJT9g.woff2 differ diff --git a/poxy/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qN67lqDY.woff2 b/poxy/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qN67lqDY.woff2 new file mode 100644 index 0000000000..c5e70a7641 Binary files /dev/null and b/poxy/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qN67lqDY.woff2 differ diff --git a/poxy/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qNK7lqDY.woff2 b/poxy/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qNK7lqDY.woff2 new file mode 100644 index 0000000000..e1f66a5b37 Binary files /dev/null and b/poxy/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qNK7lqDY.woff2 differ diff --git a/poxy/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qNa7lqDY.woff2 b/poxy/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qNa7lqDY.woff2 new file mode 100644 index 0000000000..496401b373 Binary files /dev/null and b/poxy/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qNa7lqDY.woff2 differ diff --git a/poxy/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qNq7lqDY.woff2 b/poxy/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qNq7lqDY.woff2 new file mode 100644 index 0000000000..edaf39ab1c Binary files /dev/null and b/poxy/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qNq7lqDY.woff2 differ diff --git a/poxy/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qO67lqDY.woff2 b/poxy/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qO67lqDY.woff2 new file mode 100644 index 0000000000..2f380980ef Binary files /dev/null and b/poxy/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qO67lqDY.woff2 differ diff --git a/poxy/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2 b/poxy/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2 new file mode 100644 index 0000000000..3f0f70a38e Binary files /dev/null and b/poxy/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2 differ diff --git a/poxy/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qPK7lqDY.woff2 b/poxy/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qPK7lqDY.woff2 new file mode 100644 index 0000000000..c05e527dc9 Binary files /dev/null and b/poxy/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qPK7lqDY.woff2 differ diff --git a/poxy/fonts/6xKwdSBYKcSV-LCoeQqfX1RYOo3qPZY4lCdg18Smxg.woff2 b/poxy/fonts/6xKwdSBYKcSV-LCoeQqfX1RYOo3qPZY4lCdg18Smxg.woff2 new file mode 100644 index 0000000000..2a6a4b5907 Binary files /dev/null and b/poxy/fonts/6xKwdSBYKcSV-LCoeQqfX1RYOo3qPZY4lCdg18Smxg.woff2 differ diff --git a/poxy/fonts/6xKwdSBYKcSV-LCoeQqfX1RYOo3qPZY4lCdh18Smxg.woff2 b/poxy/fonts/6xKwdSBYKcSV-LCoeQqfX1RYOo3qPZY4lCdh18Smxg.woff2 new file mode 100644 index 0000000000..c9d0633348 Binary files /dev/null and b/poxy/fonts/6xKwdSBYKcSV-LCoeQqfX1RYOo3qPZY4lCdh18Smxg.woff2 differ diff --git a/poxy/fonts/6xKwdSBYKcSV-LCoeQqfX1RYOo3qPZY4lCdi18Smxg.woff2 b/poxy/fonts/6xKwdSBYKcSV-LCoeQqfX1RYOo3qPZY4lCdi18Smxg.woff2 new file mode 100644 index 0000000000..9bdf94a0c8 Binary files /dev/null and b/poxy/fonts/6xKwdSBYKcSV-LCoeQqfX1RYOo3qPZY4lCdi18Smxg.woff2 differ diff --git a/poxy/fonts/6xKwdSBYKcSV-LCoeQqfX1RYOo3qPZY4lCdj18Smxg.woff2 b/poxy/fonts/6xKwdSBYKcSV-LCoeQqfX1RYOo3qPZY4lCdj18Smxg.woff2 new file mode 100644 index 0000000000..b3346d2342 Binary files /dev/null and b/poxy/fonts/6xKwdSBYKcSV-LCoeQqfX1RYOo3qPZY4lCdj18Smxg.woff2 differ diff --git a/poxy/fonts/6xKwdSBYKcSV-LCoeQqfX1RYOo3qPZY4lCdo18Smxg.woff2 b/poxy/fonts/6xKwdSBYKcSV-LCoeQqfX1RYOo3qPZY4lCdo18Smxg.woff2 new file mode 100644 index 0000000000..7b4afad1de Binary files /dev/null and b/poxy/fonts/6xKwdSBYKcSV-LCoeQqfX1RYOo3qPZY4lCdo18Smxg.woff2 differ diff --git a/poxy/fonts/6xKwdSBYKcSV-LCoeQqfX1RYOo3qPZY4lCds18Q.woff2 b/poxy/fonts/6xKwdSBYKcSV-LCoeQqfX1RYOo3qPZY4lCds18Q.woff2 new file mode 100644 index 0000000000..087bbde376 Binary files /dev/null and b/poxy/fonts/6xKwdSBYKcSV-LCoeQqfX1RYOo3qPZY4lCds18Q.woff2 differ diff --git a/poxy/fonts/6xKwdSBYKcSV-LCoeQqfX1RYOo3qPZY4lCdv18Smxg.woff2 b/poxy/fonts/6xKwdSBYKcSV-LCoeQqfX1RYOo3qPZY4lCdv18Smxg.woff2 new file mode 100644 index 0000000000..f1431d8f4a Binary files /dev/null and b/poxy/fonts/6xKwdSBYKcSV-LCoeQqfX1RYOo3qPZY4lCdv18Smxg.woff2 differ diff --git a/poxy/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwkxduz8A.woff2 b/poxy/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwkxduz8A.woff2 new file mode 100644 index 0000000000..2e69d23958 Binary files /dev/null and b/poxy/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwkxduz8A.woff2 differ diff --git a/poxy/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlBduz8A.woff2 b/poxy/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlBduz8A.woff2 new file mode 100644 index 0000000000..2e20e3e846 Binary files /dev/null and b/poxy/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlBduz8A.woff2 differ diff --git a/poxy/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlxdu.woff2 b/poxy/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlxdu.woff2 new file mode 100644 index 0000000000..d376442c98 Binary files /dev/null and b/poxy/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlxdu.woff2 differ diff --git a/poxy/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwmBduz8A.woff2 b/poxy/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwmBduz8A.woff2 new file mode 100644 index 0000000000..13fc823af7 Binary files /dev/null and b/poxy/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwmBduz8A.woff2 differ diff --git a/poxy/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwmRduz8A.woff2 b/poxy/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwmRduz8A.woff2 new file mode 100644 index 0000000000..0ec07f179b Binary files /dev/null and b/poxy/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwmRduz8A.woff2 differ diff --git a/poxy/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwmhduz8A.woff2 b/poxy/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwmhduz8A.woff2 new file mode 100644 index 0000000000..8fb81b5b46 Binary files /dev/null and b/poxy/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwmhduz8A.woff2 differ diff --git a/poxy/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwmxduz8A.woff2 b/poxy/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwmxduz8A.woff2 new file mode 100644 index 0000000000..82a6721089 Binary files /dev/null and b/poxy/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwmxduz8A.woff2 differ diff --git a/poxy/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlM-vWnsMnx0C9NAU.woff2 b/poxy/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlM-vWnsMnx0C9NAU.woff2 new file mode 100644 index 0000000000..da02ae9e9c Binary files /dev/null and b/poxy/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlM-vWnsMnx0C9NAU.woff2 differ diff --git a/poxy/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlMOvWnsMnx0C9NAU.woff2 b/poxy/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlMOvWnsMnx0C9NAU.woff2 new file mode 100644 index 0000000000..903f1e9ad4 Binary files /dev/null and b/poxy/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlMOvWnsMnx0C9NAU.woff2 differ diff --git a/poxy/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlMevWnsMnx0C9NAU.woff2 b/poxy/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlMevWnsMnx0C9NAU.woff2 new file mode 100644 index 0000000000..6fad69b416 Binary files /dev/null and b/poxy/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlMevWnsMnx0C9NAU.woff2 differ diff --git a/poxy/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlMuvWnsMnx0C9NAU.woff2 b/poxy/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlMuvWnsMnx0C9NAU.woff2 new file mode 100644 index 0000000000..48ca34dea8 Binary files /dev/null and b/poxy/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlMuvWnsMnx0C9NAU.woff2 differ diff --git a/poxy/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlOevWnsMnx0C9NAU.woff2 b/poxy/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlOevWnsMnx0C9NAU.woff2 new file mode 100644 index 0000000000..0810a898c1 Binary files /dev/null and b/poxy/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlOevWnsMnx0C9NAU.woff2 differ diff --git a/poxy/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlPevWnsMnx0C9.woff2 b/poxy/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlPevWnsMnx0C9.woff2 new file mode 100644 index 0000000000..2196a8250a Binary files /dev/null and b/poxy/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlPevWnsMnx0C9.woff2 differ diff --git a/poxy/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlPuvWnsMnx0C9NAU.woff2 b/poxy/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlPuvWnsMnx0C9NAU.woff2 new file mode 100644 index 0000000000..694439e66f Binary files /dev/null and b/poxy/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlPuvWnsMnx0C9NAU.woff2 differ diff --git a/poxy/fonts/HI_jiYsKILxRpg3hIP6sJ7fM7PqlOPHYvDP_W9O7GQTTbI1bQ10YVJg.woff2 b/poxy/fonts/HI_jiYsKILxRpg3hIP6sJ7fM7PqlOPHYvDP_W9O7GQTTbI1bQ10YVJg.woff2 new file mode 100644 index 0000000000..15ddcb1279 Binary files /dev/null and b/poxy/fonts/HI_jiYsKILxRpg3hIP6sJ7fM7PqlOPHYvDP_W9O7GQTTbI1bQ10YVJg.woff2 differ diff --git a/poxy/fonts/HI_jiYsKILxRpg3hIP6sJ7fM7PqlOPHYvDP_W9O7GQTTbI1bQF0YVJg.woff2 b/poxy/fonts/HI_jiYsKILxRpg3hIP6sJ7fM7PqlOPHYvDP_W9O7GQTTbI1bQF0YVJg.woff2 new file mode 100644 index 0000000000..bb9e0cad43 Binary files /dev/null and b/poxy/fonts/HI_jiYsKILxRpg3hIP6sJ7fM7PqlOPHYvDP_W9O7GQTTbI1bQF0YVJg.woff2 differ diff --git a/poxy/fonts/HI_jiYsKILxRpg3hIP6sJ7fM7PqlOPHYvDP_W9O7GQTTbI1bQV0YVJg.woff2 b/poxy/fonts/HI_jiYsKILxRpg3hIP6sJ7fM7PqlOPHYvDP_W9O7GQTTbI1bQV0YVJg.woff2 new file mode 100644 index 0000000000..ad2c98abc5 Binary files /dev/null and b/poxy/fonts/HI_jiYsKILxRpg3hIP6sJ7fM7PqlOPHYvDP_W9O7GQTTbI1bQV0YVJg.woff2 differ diff --git a/poxy/fonts/HI_jiYsKILxRpg3hIP6sJ7fM7PqlOPHYvDP_W9O7GQTTbI1bQl0YVJg.woff2 b/poxy/fonts/HI_jiYsKILxRpg3hIP6sJ7fM7PqlOPHYvDP_W9O7GQTTbI1bQl0YVJg.woff2 new file mode 100644 index 0000000000..e205f40a1e Binary files /dev/null and b/poxy/fonts/HI_jiYsKILxRpg3hIP6sJ7fM7PqlOPHYvDP_W9O7GQTTbI1bQl0YVJg.woff2 differ diff --git a/poxy/fonts/HI_jiYsKILxRpg3hIP6sJ7fM7PqlOPHYvDP_W9O7GQTTbI1bSl0YVJg.woff2 b/poxy/fonts/HI_jiYsKILxRpg3hIP6sJ7fM7PqlOPHYvDP_W9O7GQTTbI1bSl0YVJg.woff2 new file mode 100644 index 0000000000..1caa6feb59 Binary files /dev/null and b/poxy/fonts/HI_jiYsKILxRpg3hIP6sJ7fM7PqlOPHYvDP_W9O7GQTTbI1bSl0YVJg.woff2 differ diff --git a/poxy/fonts/HI_jiYsKILxRpg3hIP6sJ7fM7PqlOPHYvDP_W9O7GQTTbI1bTV0YVJg.woff2 b/poxy/fonts/HI_jiYsKILxRpg3hIP6sJ7fM7PqlOPHYvDP_W9O7GQTTbI1bTV0YVJg.woff2 new file mode 100644 index 0000000000..c7e28b341f Binary files /dev/null and b/poxy/fonts/HI_jiYsKILxRpg3hIP6sJ7fM7PqlOPHYvDP_W9O7GQTTbI1bTV0YVJg.woff2 differ diff --git a/poxy/fonts/HI_jiYsKILxRpg3hIP6sJ7fM7PqlOPHYvDP_W9O7GQTTbI1bTl0Y.woff2 b/poxy/fonts/HI_jiYsKILxRpg3hIP6sJ7fM7PqlOPHYvDP_W9O7GQTTbI1bTl0Y.woff2 new file mode 100644 index 0000000000..5c81ab3b40 Binary files /dev/null and b/poxy/fonts/HI_jiYsKILxRpg3hIP6sJ7fM7PqlOPHYvDP_W9O7GQTTbI1bTl0Y.woff2 differ diff --git a/poxy/poxy-badge-c++17.svg b/poxy/poxy-badge-c++17.svg new file mode 100644 index 0000000000..14d427e42d --- /dev/null +++ b/poxy/poxy-badge-c++17.svg @@ -0,0 +1 @@ + standardC++17 \ No newline at end of file diff --git a/poxy/poxy-badge-license-mit.svg b/poxy/poxy-badge-license-mit.svg new file mode 100644 index 0000000000..52456a74ef --- /dev/null +++ b/poxy/poxy-badge-license-mit.svg @@ -0,0 +1 @@ + licenseMIT \ No newline at end of file diff --git a/poxy/poxy-icon-email.svg b/poxy/poxy-icon-email.svg new file mode 100644 index 0000000000..4485c8ab19 --- /dev/null +++ b/poxy/poxy-icon-email.svg @@ -0,0 +1,9 @@ + + + + + + + + \ No newline at end of file diff --git a/poxy/poxy-icon-github.svg b/poxy/poxy-icon-github.svg new file mode 100644 index 0000000000..a8b0cbb64f --- /dev/null +++ b/poxy/poxy-icon-github.svg @@ -0,0 +1,3 @@ + + + diff --git a/poxy/poxy-icon-gitlab.svg b/poxy/poxy-icon-gitlab.svg new file mode 100644 index 0000000000..d36a619ee8 --- /dev/null +++ b/poxy/poxy-icon-gitlab.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/poxy/poxy-icon-sponsor.svg b/poxy/poxy-icon-sponsor.svg new file mode 100644 index 0000000000..fb7d2b8837 --- /dev/null +++ b/poxy/poxy-icon-sponsor.svg @@ -0,0 +1,6 @@ + + + diff --git a/poxy/poxy-icon-theme.svg b/poxy/poxy-icon-theme.svg new file mode 100644 index 0000000000..c416983287 --- /dev/null +++ b/poxy/poxy-icon-theme.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/poxy/poxy-icon-twitter.svg b/poxy/poxy-icon-twitter.svg new file mode 100644 index 0000000000..59f2c09bff --- /dev/null +++ b/poxy/poxy-icon-twitter.svg @@ -0,0 +1,5 @@ + + + \ No newline at end of file diff --git a/poxy/poxy.css b/poxy/poxy.css new file mode 100644 index 0000000000..10c88eba94 --- /dev/null +++ b/poxy/poxy.css @@ -0,0 +1,2857 @@ +/* +This file was automatically generated from multiple sources, +some of which included stylesheets from mosra/m.css. +The license for that project is as follows: + +Copyright © 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2025 + Vladimír Vondruš and contributors + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. +*/ + +/*==== https://fonts.googleapis.com/css?family=Source+Sans+Pro:400,400i,600,600i%7CSource+Code+Pro:400,400i,600 ======*/ +@font-face { +font-family: 'Source Code Pro'; +font-style: italic; +font-weight: 400; +src: url('fonts/HI_jiYsKILxRpg3hIP6sJ7fM7PqlOPHYvDP_W9O7GQTTbI1bQ10YVJg.woff2') format('woff2'); +unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; +} +@font-face { +font-family: 'Source Code Pro'; +font-style: italic; +font-weight: 400; +src: url('fonts/HI_jiYsKILxRpg3hIP6sJ7fM7PqlOPHYvDP_W9O7GQTTbI1bSl0YVJg.woff2') format('woff2'); +unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +@font-face { +font-family: 'Source Code Pro'; +font-style: italic; +font-weight: 400; +src: url('fonts/HI_jiYsKILxRpg3hIP6sJ7fM7PqlOPHYvDP_W9O7GQTTbI1bQl0YVJg.woff2') format('woff2'); +unicode-range: U+1F00-1FFF; +} +@font-face { +font-family: 'Source Code Pro'; +font-style: italic; +font-weight: 400; +src: url('fonts/HI_jiYsKILxRpg3hIP6sJ7fM7PqlOPHYvDP_W9O7GQTTbI1bTV0YVJg.woff2') format('woff2'); +unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF; +} +@font-face { +font-family: 'Source Code Pro'; +font-style: italic; +font-weight: 400; +src: url('fonts/HI_jiYsKILxRpg3hIP6sJ7fM7PqlOPHYvDP_W9O7GQTTbI1bQV0YVJg.woff2') format('woff2'); +unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; +} +@font-face { +font-family: 'Source Code Pro'; +font-style: italic; +font-weight: 400; +src: url('fonts/HI_jiYsKILxRpg3hIP6sJ7fM7PqlOPHYvDP_W9O7GQTTbI1bQF0YVJg.woff2') format('woff2'); +unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +@font-face { +font-family: 'Source Code Pro'; +font-style: italic; +font-weight: 400; +src: url('fonts/HI_jiYsKILxRpg3hIP6sJ7fM7PqlOPHYvDP_W9O7GQTTbI1bTl0Y.woff2') format('woff2'); +unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +@font-face { +font-family: 'Source Code Pro'; +font-style: normal; +font-weight: 400; +src: url('fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlMOvWnsMnx0C9NAU.woff2') format('woff2'); +unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; +} +@font-face { +font-family: 'Source Code Pro'; +font-style: normal; +font-weight: 400; +src: url('fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlOevWnsMnx0C9NAU.woff2') format('woff2'); +unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +@font-face { +font-family: 'Source Code Pro'; +font-style: normal; +font-weight: 400; +src: url('fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlMevWnsMnx0C9NAU.woff2') format('woff2'); +unicode-range: U+1F00-1FFF; +} +@font-face { +font-family: 'Source Code Pro'; +font-style: normal; +font-weight: 400; +src: url('fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlPuvWnsMnx0C9NAU.woff2') format('woff2'); +unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF; +} +@font-face { +font-family: 'Source Code Pro'; +font-style: normal; +font-weight: 400; +src: url('fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlMuvWnsMnx0C9NAU.woff2') format('woff2'); +unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; +} +@font-face { +font-family: 'Source Code Pro'; +font-style: normal; +font-weight: 400; +src: url('fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlM-vWnsMnx0C9NAU.woff2') format('woff2'); +unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +@font-face { +font-family: 'Source Code Pro'; +font-style: normal; +font-weight: 400; +src: url('fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlPevWnsMnx0C9.woff2') format('woff2'); +unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +@font-face { +font-family: 'Source Code Pro'; +font-style: normal; +font-weight: 600; +src: url('fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlMOvWnsMnx0C9NAU.woff2') format('woff2'); +unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; +} +@font-face { +font-family: 'Source Code Pro'; +font-style: normal; +font-weight: 600; +src: url('fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlOevWnsMnx0C9NAU.woff2') format('woff2'); +unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +@font-face { +font-family: 'Source Code Pro'; +font-style: normal; +font-weight: 600; +src: url('fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlMevWnsMnx0C9NAU.woff2') format('woff2'); +unicode-range: U+1F00-1FFF; +} +@font-face { +font-family: 'Source Code Pro'; +font-style: normal; +font-weight: 600; +src: url('fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlPuvWnsMnx0C9NAU.woff2') format('woff2'); +unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF; +} +@font-face { +font-family: 'Source Code Pro'; +font-style: normal; +font-weight: 600; +src: url('fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlMuvWnsMnx0C9NAU.woff2') format('woff2'); +unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; +} +@font-face { +font-family: 'Source Code Pro'; +font-style: normal; +font-weight: 600; +src: url('fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlM-vWnsMnx0C9NAU.woff2') format('woff2'); +unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +@font-face { +font-family: 'Source Code Pro'; +font-style: normal; +font-weight: 600; +src: url('fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlPevWnsMnx0C9.woff2') format('woff2'); +unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +@font-face { +font-family: 'Source Sans Pro'; +font-style: italic; +font-weight: 400; +src: url('fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7qsDJT9g.woff2') format('woff2'); +unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; +} +@font-face { +font-family: 'Source Sans Pro'; +font-style: italic; +font-weight: 400; +src: url('fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7jsDJT9g.woff2') format('woff2'); +unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +@font-face { +font-family: 'Source Sans Pro'; +font-style: italic; +font-weight: 400; +src: url('fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7rsDJT9g.woff2') format('woff2'); +unicode-range: U+1F00-1FFF; +} +@font-face { +font-family: 'Source Sans Pro'; +font-style: italic; +font-weight: 400; +src: url('fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7ksDJT9g.woff2') format('woff2'); +unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF; +} +@font-face { +font-family: 'Source Sans Pro'; +font-style: italic; +font-weight: 400; +src: url('fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7osDJT9g.woff2') format('woff2'); +unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; +} +@font-face { +font-family: 'Source Sans Pro'; +font-style: italic; +font-weight: 400; +src: url('fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7psDJT9g.woff2') format('woff2'); +unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +@font-face { +font-family: 'Source Sans Pro'; +font-style: italic; +font-weight: 400; +src: url('fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDI.woff2') format('woff2'); +unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +@font-face { +font-family: 'Source Sans Pro'; +font-style: italic; +font-weight: 600; +src: url('fonts/6xKwdSBYKcSV-LCoeQqfX1RYOo3qPZY4lCdh18Smxg.woff2') format('woff2'); +unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; +} +@font-face { +font-family: 'Source Sans Pro'; +font-style: italic; +font-weight: 600; +src: url('fonts/6xKwdSBYKcSV-LCoeQqfX1RYOo3qPZY4lCdo18Smxg.woff2') format('woff2'); +unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +@font-face { +font-family: 'Source Sans Pro'; +font-style: italic; +font-weight: 600; +src: url('fonts/6xKwdSBYKcSV-LCoeQqfX1RYOo3qPZY4lCdg18Smxg.woff2') format('woff2'); +unicode-range: U+1F00-1FFF; +} +@font-face { +font-family: 'Source Sans Pro'; +font-style: italic; +font-weight: 600; +src: url('fonts/6xKwdSBYKcSV-LCoeQqfX1RYOo3qPZY4lCdv18Smxg.woff2') format('woff2'); +unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF; +} +@font-face { +font-family: 'Source Sans Pro'; +font-style: italic; +font-weight: 600; +src: url('fonts/6xKwdSBYKcSV-LCoeQqfX1RYOo3qPZY4lCdj18Smxg.woff2') format('woff2'); +unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; +} +@font-face { +font-family: 'Source Sans Pro'; +font-style: italic; +font-weight: 600; +src: url('fonts/6xKwdSBYKcSV-LCoeQqfX1RYOo3qPZY4lCdi18Smxg.woff2') format('woff2'); +unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +@font-face { +font-family: 'Source Sans Pro'; +font-style: italic; +font-weight: 600; +src: url('fonts/6xKwdSBYKcSV-LCoeQqfX1RYOo3qPZY4lCds18Q.woff2') format('woff2'); +unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +@font-face { +font-family: 'Source Sans Pro'; +font-style: normal; +font-weight: 400; +src: url('fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qNa7lqDY.woff2') format('woff2'); +unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; +} +@font-face { +font-family: 'Source Sans Pro'; +font-style: normal; +font-weight: 400; +src: url('fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qPK7lqDY.woff2') format('woff2'); +unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +@font-face { +font-family: 'Source Sans Pro'; +font-style: normal; +font-weight: 400; +src: url('fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qNK7lqDY.woff2') format('woff2'); +unicode-range: U+1F00-1FFF; +} +@font-face { +font-family: 'Source Sans Pro'; +font-style: normal; +font-weight: 400; +src: url('fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qO67lqDY.woff2') format('woff2'); +unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF; +} +@font-face { +font-family: 'Source Sans Pro'; +font-style: normal; +font-weight: 400; +src: url('fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qN67lqDY.woff2') format('woff2'); +unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; +} +@font-face { +font-family: 'Source Sans Pro'; +font-style: normal; +font-weight: 400; +src: url('fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qNq7lqDY.woff2') format('woff2'); +unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +@font-face { +font-family: 'Source Sans Pro'; +font-style: normal; +font-weight: 400; +src: url('fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2') format('woff2'); +unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +@font-face { +font-family: 'Source Sans Pro'; +font-style: normal; +font-weight: 600; +src: url('fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwmhduz8A.woff2') format('woff2'); +unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; +} +@font-face { +font-family: 'Source Sans Pro'; +font-style: normal; +font-weight: 600; +src: url('fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwkxduz8A.woff2') format('woff2'); +unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +@font-face { +font-family: 'Source Sans Pro'; +font-style: normal; +font-weight: 600; +src: url('fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwmxduz8A.woff2') format('woff2'); +unicode-range: U+1F00-1FFF; +} +@font-face { +font-family: 'Source Sans Pro'; +font-style: normal; +font-weight: 600; +src: url('fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlBduz8A.woff2') format('woff2'); +unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF; +} +@font-face { +font-family: 'Source Sans Pro'; +font-style: normal; +font-weight: 600; +src: url('fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwmBduz8A.woff2') format('woff2'); +unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; +} +@font-face { +font-family: 'Source Sans Pro'; +font-style: normal; +font-weight: 600; +src: url('fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwmRduz8A.woff2') format('woff2'); +unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +@font-face { +font-family: 'Source Sans Pro'; +font-style: normal; +font-weight: 600; +src: url('fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlxdu.woff2') format('woff2'); +unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/*==== m-theme-dark.css ==============================================================================================*/ +.poxy-theme-dark { +--font: 'Source Sans Pro', sans-serif; +--code-font: 'Source Code Pro', monospace; +--font-size: 16px; +--code-font-size: 0.9em; +--line-height: normal; +--paragraph-indent: 1.5rem; +--paragraph-align: justify; +--link-decoration: underline; +--link-decoration-nav: none; +--link-decoration-heading: none; +--nav-brand-case: uppercase; +--nav-menu-case: none; +--nav-heading-case: uppercase; +--nav-categories-case: lowercase; +--landing-header-case: lowercase; +--heading-font-weight: 600; +--border-radius: 0.2rem; +--background-color: #2f363f; +--color: #dcdcdc; +--line-color: #405363; +--link-color: #5b9dd9; +--link-active-color: #a5c9ea; +--mark-color: #2f83cc; +--mark-background-color: #c7cf2f; +--button-background-color: #22272e; +--code-color: #e6e6e6; +--code-background-color: #282e36; +--code-note-background-color: rgba(34, 39, 46, 0.5); +--console-color: #fcfcfc; +--console-background-color: #1a1c1d; +--header-border-width: 0 0 0.25rem 0; +--header-color: #ffffff; +--header-breadcrumb-color: #747474; +--header-background-color: #22272e; +--header-background-color-landing: rgba(34, 39, 46, 0.75); +--header-background-color-jumbo: rgba(34, 39, 46, 0.25); +--header-link-color: #ffffff; +--header-link-active-color: #a5c9ea; +--header-link-current-color: #5b9dd9; +--header-link-active-background-color: #292f37; +--header-link-active-background-color-semi: rgba(41, 47, 55, 0.5); +--footer-font-size: 0.85rem; +--footer-color: #c5c5c5; +--footer-background-color: #444e5c; +--footer-link-color: #ffffff; +--footer-link-active-color: #a5c9ea; +--cover-image-background-color: #0f1217; +--search-overlay-color: var(--header-background-color-landing); +--search-background-color: var(--header-background-color); +--article-header-color: #f0f0f0; +--article-footer-color: #c5c5c5; +--article-heading-color: #a5c9ea; +--article-heading-active-color: #dcdcdc; +--navpanel-link-color: #ffffff; +--navpanel-link-active-color: #a5c9ea; +--plot-background-color: #34424d; +--plot-error-color: #ffffff; +--default-color: #dcdcdc; +--default-link-active-color: #a5c9ea; +--default-filled-color: #dcdcdc; +--default-filled-background-color: #34424d; +--default-filled-link-color: #5b9dd9; +--default-filled-link-active-color: #a5c9ea; +--primary-color: #a5c9ea; +--primary-link-active-color: #dcdcdc; +--primary-filled-color: #2f363f; +--primary-filled-background-color: #a5c2db; +--primary-filled-link-color: #2a75b6; +--primary-filled-link-active-color: #2f363f; +--success-color: #3bd267; +--success-link-active-color: #acecbe; +--success-filled-color: #acecbe; +--success-filled-background-color: #2a703f; +--success-filled-link-color: #3bd267; +--success-filled-link-active-color: #acecbe; +--warning-color: #c7cf2f; +--warning-link-active-color: #e9ecae; +--warning-filled-color: #e9ecae; +--warning-filled-background-color: #6d702a; +--warning-filled-link-color: #b8bf2b; +--warning-filled-link-active-color: #e9ecae; +--danger-color: #cd3431; +--danger-link-active-color: #ff9391; +--danger-filled-color: #ff9391; +--danger-filled-background-color: #702b2a; +--danger-filled-link-color: #d85c59; +--danger-filled-link-active-color: #ff9391; +--info-color: #2f83cc; +--info-link-active-color: #5297d7; +--info-filled-color: #a5caeb; +--info-filled-background-color: #2a4f70; +--info-filled-link-color: #5297d7; +--info-filled-link-active-color: #a5caeb; +--dim-color: #747474; +--dim-link-color: #acacac; +--dim-link-active-color: #747474; +--dim-filled-color: #747474; +--dim-filled-background-color: #2d3236; +--dim-filled-link-color: #acacac; +--dim-filled-link-active-color: #747474; +--dim-button-active-color: #acacac; +} +/*==== poxy-theme-dark.css ===========================================================================================*/ +.poxy-theme-dark { +--code-font: "Consolas", "Source Code Pro", monospace; +--code-color-comments: #57a64a; +--code-color-keywords: #569cd6; +--code-color-identifiers: #e6e6e6; +--code-color-typenames: #4ec9b0; +--code-color-namespaces: #8c8c8c; +--code-color-operators: #aaaaaa; +--code-color-punctuation: #787878; +--code-color-numbers: #b5cea8; +--code-color-strings: #d69d85; +--code-color-escapes: #e07cdc; +--code-color-preprocessor: #787878; +--code-color-macros: #beb7ff; +--code-color-functions: #dcdcaa; +--special-color: #b65ad7; +--special-link-active-color: #e4a8ff; +--special-filled-color: #ce97e8; +--special-filled-background-color: #532f64; +--special-filled-link-color: #a061bd; +--special-filled-link-active-color: #e4a8ff; +--detail-section-header-color: var(--header-background-color); +--detail-section-background-color: rgba(0, 0, 0, 0.06); +--sponsor-color: #ff69b4; +} +/*==== m-theme-light.css =============================================================================================*/ +.poxy-theme-light { +--theme-hue: 210; +--theme-saturation: 100%; +--theme-luminosity: 50%; +--theme-color: hsl(var(--theme-hue), var(--theme-saturation), var(--theme-luminosity)); +--theme-text1: hsl(var(--theme-hue), var(--theme-saturation), 10%); +--theme-text2: hsl(var(--theme-hue), 30%, 30%); +--theme-surface1: hsl(var(--theme-hue), 25%, 90%); +--theme-surface2: hsl(var(--theme-hue), 20%, 99%); +--theme-surface3: hsl(var(--theme-hue), calc(var(--theme-saturation) * 0.3), 85%); +--theme-surface4: hsl(var(--theme-hue), 20%, 93%); +--theme-surface5: hsl(var(--theme-hue), calc(var(--theme-saturation) * 0.5), 55%); +--theme-surface6: hsl(var(--theme-hue), calc(var(--theme-saturation) * 0.5), 68%); +--theme-surface7: hsl(var(--theme-hue), var(--theme-saturation), 90%); +--theme-surface8: hsl(var(--theme-hue), calc(var(--theme-saturation) * 0.8), 50%); +} +.poxy-theme-light { +--font: 'Source Sans Pro', sans-serif; +--code-font: 'Source Code Pro', monospace; +--font-size: 16px; +--code-font-size: 0.9em; +--line-height: normal; +--paragraph-indent: 1.5rem; +--paragraph-align: justify; +--link-decoration: underline; +--link-decoration-nav: none; +--link-decoration-heading: none; +--nav-brand-case: uppercase; +--nav-menu-case: none; +--nav-heading-case: uppercase; +--nav-categories-case: lowercase; +--landing-header-case: lowercase; +--heading-font-weight: 600; +--border-radius: 0.2rem; +--background-color: var(--theme-surface4); +--color: var(--theme-text1); +--line-color: var(--theme-surface6); +--link-color: var(--theme-surface8); +--link-active-color: var(--theme-text2); +--mark-color: #2f83cc; +--mark-background-color: #c7cf2f; +--button-background-color: #22272e; +--code-color: var(--theme-text1); +--code-background-color: var(--theme-surface2); +--code-note-background-color: hsla(var(--theme-hue), var(--theme-saturation), 99%, 0.7); +--console-color: #fcfcfc; +--console-background-color: #1a1c1d; +--header-border-width: 0 0 0.25rem 0; +--header-color: var(--theme-surface1); +--header-breadcrumb-color: var(--theme-surface1); +--header-background-color: var(--theme-surface5); +--header-background-color-landing: rgba(34, 39, 46, 0.75); +--header-background-color-jumbo: rgba(34, 39, 46, 0.25); +--header-link-color: var(--theme-surface2); +--header-link-active-color: var(--theme-surface7); +--header-link-current-color: var(--theme-surface7); +--header-link-active-background-color: var(--theme-surface6); +--header-link-active-background-color-semi: #ebeaea80; +--footer-font-size: 0.85rem; +--footer-color: var(--theme-text2); +--footer-background-color: var(--theme-surface3); +--footer-link-color: var(--theme-text1); +--footer-link-active-color:var(--theme-text2); +--cover-image-background-color: #0f1217; +--search-overlay-color: hsla(var(--theme-hue), calc(var(--theme-saturation) * 0.5), 75%, 85%); +--search-background-color: var(--theme-surface4); +--article-header-color: #f0f0f0; +--article-footer-color: #c5c5c5; +--article-heading-color: var(--theme-surface8); +--article-heading-active-color: var(--theme-text2); +--navpanel-link-color: #ffffff; +--navpanel-link-active-color: #5787EF; +--plot-background-color: #ced8de; +--plot-error-color: #ffffff; +--default-color: var(--theme-text1); +--default-link-active-color: var(--link-active-color); +--default-filled-color: #151414; +--default-filled-background-color: var(--theme-surface3); +--default-filled-link-color: #134ECD; +--default-filled-link-active-color: #5787EF; +--primary-hue: var(--theme-hue); +--primary-saturation: var(--theme-saturation); +--primary-luminosity: calc(var(--theme-luminosity) * 1.05); +--primary-color: hsl(var(--primary-hue), var(--primary-saturation), var(--primary-luminosity)); +--primary-link-active-color: hsl(var(--primary-hue), var(--primary-saturation), calc(var(--primary-luminosity) * 0.7)); +--primary-filled-color: hsl(var(--primary-hue), var(--primary-saturation), 25%); +--primary-filled-background-color: hsl(var(--primary-hue), var(--primary-saturation), calc(var(--primary-luminosity) * 1.7)); +--primary-filled-link-color: hsl(var(--primary-hue), var(--primary-saturation), 50%); +--primary-filled-link-active-color: var(--primary-filled-color); +--success-hue: 138; +--success-saturation: 40%; +--success-luminosity: 45%; +--success-color: hsl(var(--success-hue), var(--success-saturation), var(--success-luminosity)); +--success-link-active-color: hsl(var(--success-hue), var(--success-saturation), calc(var(--success-luminosity) * 0.7)); +--success-filled-color: hsl(var(--success-hue), var(--success-saturation), 25%); +--success-filled-background-color: hsl(var(--success-hue), calc(var(--success-saturation) * 0.9), calc(var(--success-luminosity) * 1.8)); +--success-filled-link-color: hsl(var(--success-hue), calc(var(--success-saturation) * 0.8), 40%); +--success-filled-link-active-color: var(--success-filled-color); +--warning-hue: 53; +--warning-saturation: 50%; +--warning-luminosity: 44%; +--warning-color: hsl(var(--warning-hue), var(--warning-saturation), var(--warning-luminosity)); +--warning-link-active-color: hsl(var(--warning-hue), var(--warning-saturation), calc(var(--warning-luminosity) * 0.7)); +--warning-filled-color: hsl(var(--warning-hue), var(--warning-saturation), 20%); +--warning-filled-background-color: hsl(var(--warning-hue), calc(var(--warning-saturation) * 0.8), calc(var(--warning-luminosity) * 1.8)); +--warning-filled-link-color: hsl(var(--warning-hue), calc(var(--warning-saturation) * 0.6), 40%); +--warning-filled-link-active-color: var(--warning-filled-color); +--danger-hue: 0; +--danger-saturation: 70%; +--danger-luminosity: 50%; +--danger-color: hsl(var(--danger-hue), var(--danger-saturation), var(--danger-luminosity)); +--danger-link-active-color: hsl(var(--danger-hue), var(--danger-saturation), calc(var(--danger-luminosity) * 0.7)); +--danger-filled-color: hsl(var(--danger-hue), var(--danger-saturation), 25%); +--danger-filled-background-color: hsl(var(--danger-hue), calc(var(--danger-saturation) * 0.8), calc(var(--danger-luminosity) * 1.75)); +--danger-filled-link-color: hsl(var(--danger-hue), calc(var(--danger-saturation) * 0.6), 50%); +--danger-filled-link-active-color: var(--danger-filled-color); +--info-hue: 209; +--info-saturation: 62%; +--info-luminosity: 50%; +--info-color: hsl(var(--info-hue), var(--info-saturation), var(--info-luminosity)); +--info-link-active-color: hsl(var(--info-hue), var(--info-saturation), calc(var(--info-luminosity) * 0.7)); +--info-filled-color: hsl(var(--info-hue), var(--info-saturation), 25%); +--info-filled-background-color: hsl(var(--info-hue), calc(var(--info-saturation) * 0.8), calc(var(--info-luminosity) * 1.7)); +--info-filled-link-color: hsl(var(--info-hue), calc(var(--info-saturation) * 0.6), 50%); +--info-filled-link-active-color: var(--info-filled-color); +--dim-hue: 0; +--dim-saturation: 0%; +--dim-luminosity: 48%; +--dim-color: hsl(var(--dim-hue), var(--dim-saturation), var(--dim-luminosity)); +--dim-link-color: #292929; +--dim-link-active-color: hsl(var(--dim-hue), var(--dim-saturation), calc(var(--dim-luminosity) * 0.7)); +--dim-filled-color: #656565; +--dim-filled-background-color: #d3d3d3; +--dim-filled-link-color: #292929; +--dim-filled-link-active-color: #7c7c7c; +--dim-button-active-color: #292929; +} +/*==== poxy-theme-light.css ==========================================================================================*/ +.poxy-theme-light { +--code-font: "Consolas", "Source Code Pro", monospace; +--code-color-comments: #008000; +--code-color-keywords: #0000ff; +--code-color-identifiers: #151414; +--code-color-typenames: #2b91af; +--code-color-namespaces: #808080; +--code-color-operators: #404040; +--code-color-punctuation: #404040; +--code-color-numbers: #74531f; +--code-color-strings: #a31515; +--code-color-escapes: #b776fb; +--code-color-preprocessor: #808080; +--code-color-macros: #a800d7; +--code-color-functions: #6f5300; +--special-hue: 284; +--special-saturation: 50%; +--special-luminosity: 60%; +--special-color: hsl(var(--special-hue), var(--special-saturation), var(--special-luminosity)); +--special-link-active-color: hsl( +var(--special-hue), +var(--special-saturation), +calc(var(--special-luminosity) * 0.7) +); +--special-filled-color: hsl(var(--special-hue), var(--special-saturation), 25%); +--special-filled-background-color: hsl( +var(--special-hue), +calc(var(--special-saturation) * 0.8), +calc(var(--special-luminosity) * 1.4) +); +--special-filled-link-color: hsl(var(--special-hue), calc(var(--special-saturation) * 0.6), 50%); +--special-filled-link-active-color: var(--special-filled-color); +--detail-section-header-color: var(--theme-surface3); +--detail-section-background-color: rgba(255, 255, 255, 0.3); +--sponsor-color: #f8c8dc; +} +/*==== ../mcss/css/m-grid.css ========================================================================================*/ +*, ::before, ::after { box-sizing: border-box; } +body { margin: 0; } +.m-container { width: 100%; margin: auto; padding-left: 1rem; padding-right: 1rem; } +.m-row { margin-left: -1rem; margin-right: -1rem; } +.m-row::after { content: ' '; clear: both; display: table; } +.m-row > [class*='m-col-'] { position: relative; padding: 1rem; } +[class*='m-clearfix-']::after { display: block; content: ' '; clear: both; } +[class*='m-show-'] { display: none; } +.m-container-inflate, :not(.m-row) > [class*='m-col-'] { margin-bottom: 1rem; } +.m-container-inflate:last-child, :not(.m-row) > [class*='m-col-']:last-child { margin-bottom: 0; } +.m-container.m-nopad, [class*='m-col-'].m-nopad, +.m-container.m-nopadx, [class*='m-col-'].m-nopadx, +.m-container.m-nopadl, [class*='m-col-'].m-nopadl { padding-left: 0; } +.m-container.m-nopad, [class*='m-col-'].m-nopad, +.m-container.m-nopadx, [class*='m-col-'].m-nopadx, +.m-container.m-nopadr, [class*='m-col-'].m-nopadr { padding-right: 0; } +[class*='m-col-'].m-nopad, [class*='m-col-'].m-nopady, [class*='m-col-'].m-nopadt { padding-top: 0; } +[class*='m-col-'].m-nopad, [class*='m-col-'].m-nopady, [class*='m-col-'].m-nopadb, +.m-container-inflate.m-nopadb { padding-bottom: 0; } +[class*='m-col-t-'] { float: left; } +.m-left-t { padding-right: 1rem; float: left; } +.m-right-t, [class*='m-col-t-'].m-right-t { padding-left: 1rem; float: right; } +.m-center-t, [class*='m-col-t-'].m-center-t { float: none; } +.m-center-t, [class*='m-col-t-'].m-center-t { margin-left: auto; margin-right: auto; float: none; } +.m-col-t-1 { width: calc(1 * 100% / 12); } +.m-col-t-2 { width: calc(2 * 100% / 12); } +.m-col-t-3 { width: calc(3 * 100% / 12); } +.m-col-t-4 { width: calc(4 * 100% / 12); } +.m-col-t-5 { width: calc(5 * 100% / 12); } +.m-col-t-6 { width: calc(6 * 100% / 12); } +.m-col-t-7 { width: calc(7 * 100% / 12); } +.m-col-t-8 { width: calc(8 * 100% / 12); } +.m-col-t-9 { width: calc(9 * 100% / 12); } +.m-col-t-10 { width: calc(10 * 100% / 12); } +.m-col-t-11 { width: calc(11 * 100% / 12); } +.m-col-t-12 { width: calc(12 * 100% / 12); } +.m-push-t-1 { left: calc(1 * 100% / 12); } +.m-push-t-2 { left: calc(2 * 100% / 12); } +.m-push-t-3 { left: calc(3 * 100% / 12); } +.m-push-t-4 { left: calc(4 * 100% / 12); } +.m-push-t-5 { left: calc(5 * 100% / 12); } +.m-push-t-6 { left: calc(6 * 100% / 12); } +.m-push-t-7 { left: calc(7 * 100% / 12); } +.m-push-t-8 { left: calc(8 * 100% / 12); } +.m-push-t-9 { left: calc(9 * 100% / 12); } +.m-push-t-10 { left: calc(10 * 100% / 12); } +.m-push-t-11 { left: calc(11 * 100% / 12); } +.m-pull-t-1 { right: calc(1 * 100% / 12); } +.m-pull-t-2 { right: calc(2 * 100% / 12); } +.m-pull-t-3 { right: calc(3 * 100% / 12); } +.m-pull-t-4 { right: calc(4 * 100% / 12); } +.m-pull-t-5 { right: calc(5 * 100% / 12); } +.m-pull-t-6 { right: calc(6 * 100% / 12); } +.m-pull-t-7 { right: calc(7 * 100% / 12); } +.m-pull-t-8 { right: calc(8 * 100% / 12); } +.m-pull-t-9 { right: calc(9 * 100% / 12); } +.m-pull-t-10 { right: calc(10 * 100% / 12); } +.m-pull-t-11 { right: calc(11 * 100% / 12); } +@media screen and (min-width: 576px) { +.m-container { width: 560px; } +.m-container-inflatable .m-col-s-10 .m-container-inflate:not([class*='m-left-']):not([class*='m-right-']) { margin-left: -10%; margin-right: -10%; } +.m-container-inflatable .m-col-s-10 .m-container-inflate.m-left-s { margin-left: -10%; } +.m-container-inflatable .m-col-s-10 .m-container-inflate.m-right-s { margin-right: -10%; } +[class*='m-col-s-'] { float: left; } +.m-left-s { padding-right: 1rem; float: left; } +.m-right-s, [class*='m-col-s-'].m-right-s { padding-left: 1rem; float: right; } +.m-center-s, [class*='m-col-s-'].m-center-s { margin-left: auto; margin-right: auto; float: none; } +.m-col-s-1 { width: calc(1 * 100% / 12); } +.m-col-s-2 { width: calc(2 * 100% / 12); } +.m-col-s-3 { width: calc(3 * 100% / 12); } +.m-col-s-4 { width: calc(4 * 100% / 12); } +.m-col-s-5 { width: calc(5 * 100% / 12); } +.m-col-s-6 { width: calc(6 * 100% / 12); } +.m-col-s-7 { width: calc(7 * 100% / 12); } +.m-col-s-8 { width: calc(8 * 100% / 12); } +.m-col-s-9 { width: calc(9 * 100% / 12); } +.m-col-s-10 { width: calc(10 * 100% / 12); } +.m-col-s-11 { width: calc(11 * 100% / 12); } +.m-col-s-12 { width: calc(12 * 100% / 12); } +.m-push-s-0 { left: calc(0 * 100% / 12); } +.m-push-s-1 { left: calc(1 * 100% / 12); } +.m-push-s-2 { left: calc(2 * 100% / 12); } +.m-push-s-3 { left: calc(3 * 100% / 12); } +.m-push-s-4 { left: calc(4 * 100% / 12); } +.m-push-s-5 { left: calc(5 * 100% / 12); } +.m-push-s-6 { left: calc(6 * 100% / 12); } +.m-push-s-7 { left: calc(7 * 100% / 12); } +.m-push-s-8 { left: calc(8 * 100% / 12); } +.m-push-s-9 { left: calc(9 * 100% / 12); } +.m-push-s-10 { left: calc(10 * 100% / 12); } +.m-push-s-11 { left: calc(11 * 100% / 12); } +.m-pull-s-0 { right: calc(0 * 100% / 12); } +.m-pull-s-1 { right: calc(1 * 100% / 12); } +.m-pull-s-2 { right: calc(2 * 100% / 12); } +.m-pull-s-3 { right: calc(3 * 100% / 12); } +.m-pull-s-4 { right: calc(4 * 100% / 12); } +.m-pull-s-5 { right: calc(5 * 100% / 12); } +.m-pull-s-6 { right: calc(6 * 100% / 12); } +.m-pull-s-7 { right: calc(7 * 100% / 12); } +.m-pull-s-8 { right: calc(8 * 100% / 12); } +.m-pull-s-9 { right: calc(9 * 100% / 12); } +.m-pull-s-10 { right: calc(10 * 100% / 12); } +.m-pull-s-11 { right: calc(11 * 100% / 12); } +.m-clearfix-t::after { display: none; } +.m-hide-s { display: none; } +.m-show-s { display: block; } +.m-col-s-none { width: auto; float: none; } +} +@media screen and (min-width: 768px) { +.m-container { width: 750px; } +.m-container-inflatable .m-col-m-10 .m-container-inflate:not([class*='m-left-']):not([class*='m-right-']) { margin-left: -10%; margin-right: -10%; } +.m-container-inflatable .m-col-m-10 .m-container-inflate.m-left-m { margin-left: -10%; } +.m-container-inflatable .m-col-m-10 .m-container-inflate.m-right-m { margin-right: -10%; } +[class*='m-col-m-'] { float: left; } +.m-left-m { padding-right: 1rem; float: left; } +.m-right-m, [class*='m-col-m-'].m-right-m { padding-left: 1rem; float: right; } +.m-center-m, [class*='m-col-m-'].m-center-m { margin-left: auto; margin-right: auto; float: none; } +.m-col-m-1 { width: calc(1 * 100% / 12); } +.m-col-m-2 { width: calc(2 * 100% / 12); } +.m-col-m-3 { width: calc(3 * 100% / 12); } +.m-col-m-4 { width: calc(4 * 100% / 12); } +.m-col-m-5 { width: calc(5 * 100% / 12); } +.m-col-m-6 { width: calc(6 * 100% / 12); } +.m-col-m-7 { width: calc(7 * 100% / 12); } +.m-col-m-8 { width: calc(8 * 100% / 12); } +.m-col-m-9 { width: calc(9 * 100% / 12); } +.m-col-m-10 { width: calc(10 * 100% / 12); } +.m-col-m-11 { width: calc(11 * 100% / 12); } +.m-col-m-12 { width: calc(12 * 100% / 12); } +.m-push-m-0 { left: calc(0 * 100% / 12); } +.m-push-m-1 { left: calc(1 * 100% / 12); } +.m-push-m-2 { left: calc(2 * 100% / 12); } +.m-push-m-3 { left: calc(3 * 100% / 12); } +.m-push-m-4 { left: calc(4 * 100% / 12); } +.m-push-m-5 { left: calc(5 * 100% / 12); } +.m-push-m-6 { left: calc(6 * 100% / 12); } +.m-push-m-7 { left: calc(7 * 100% / 12); } +.m-push-m-8 { left: calc(8 * 100% / 12); } +.m-push-m-9 { left: calc(9 * 100% / 12); } +.m-push-m-10 { left: calc(10 * 100% / 12); } +.m-push-m-11 { left: calc(11 * 100% / 12); } +.m-pull-m-0 { right: calc(0 * 100% / 12); } +.m-pull-m-1 { right: calc(1 * 100% / 12); } +.m-pull-m-2 { right: calc(2 * 100% / 12); } +.m-pull-m-3 { right: calc(3 * 100% / 12); } +.m-pull-m-4 { right: calc(4 * 100% / 12); } +.m-pull-m-5 { right: calc(5 * 100% / 12); } +.m-pull-m-6 { right: calc(6 * 100% / 12); } +.m-pull-m-7 { right: calc(7 * 100% / 12); } +.m-pull-m-8 { right: calc(8 * 100% / 12); } +.m-pull-m-9 { right: calc(9 * 100% / 12); } +.m-pull-m-10 { right: calc(10 * 100% / 12); } +.m-pull-m-11 { right: calc(11 * 100% / 12); } +.m-clearfix-s::after { display: none; } +.m-hide-m { display: none; } +.m-show-m { display: block; } +.m-col-m-none { width: auto; float: none; } +} +@media screen and (min-width: 992px) { +.m-container { width: 960px; } +.m-container-inflatable .m-col-l-10 .m-container-inflate:not([class*='m-left-']):not([class*='m-right-']) { margin-left: -10%; margin-right: -10%; } +.m-container-inflatable .m-col-l-10 .m-container-inflate.m-left-l { margin-left: -10%; } +.m-container-inflatable .m-col-l-10 .m-container-inflate.m-right-l { margin-right: -10%; } +[class*='m-col-l-'] { float: left; } +.m-left-l { padding-right: 1rem; float: left; } +.m-right-l, [class*='m-col-l-'].m-right-l { padding-left: 1rem; float: right; } +.m-center-l, [class*='m-col-l-'].m-center-l { margin-left: auto; margin-right: auto; float: none; } +.m-col-l-1 { width: calc(1 * 100% / 12); } +.m-col-l-2 { width: calc(2 * 100% / 12); } +.m-col-l-3 { width: calc(3 * 100% / 12); } +.m-col-l-4 { width: calc(4 * 100% / 12); } +.m-col-l-5 { width: calc(5 * 100% / 12); } +.m-col-l-6 { width: calc(6 * 100% / 12); } +.m-col-l-7 { width: calc(7 * 100% / 12); } +.m-col-l-8 { width: calc(8 * 100% / 12); } +.m-col-l-9 { width: calc(9 * 100% / 12); } +.m-col-l-10 { width: calc(10 * 100% / 12); } +.m-col-l-11 { width: calc(11 * 100% / 12); } +.m-col-l-12 { width: calc(12 * 100% / 12); } +.m-push-l-0 { left: calc(0 * 100% / 12); } +.m-push-l-1 { left: calc(1 * 100% / 12); } +.m-push-l-2 { left: calc(2 * 100% / 12); } +.m-push-l-3 { left: calc(3 * 100% / 12); } +.m-push-l-4 { left: calc(4 * 100% / 12); } +.m-push-l-5 { left: calc(5 * 100% / 12); } +.m-push-l-6 { left: calc(6 * 100% / 12); } +.m-push-l-7 { left: calc(7 * 100% / 12); } +.m-push-l-8 { left: calc(8 * 100% / 12); } +.m-push-l-9 { left: calc(9 * 100% / 12); } +.m-push-l-10 { left: calc(10 * 100% / 12); } +.m-push-l-11 { left: calc(11 * 100% / 12); } +.m-pull-l-0 { right: calc(0 * 100% / 12); } +.m-pull-l-1 { right: calc(1 * 100% / 12); } +.m-pull-l-2 { right: calc(2 * 100% / 12); } +.m-pull-l-3 { right: calc(3 * 100% / 12); } +.m-pull-l-4 { right: calc(4 * 100% / 12); } +.m-pull-l-5 { right: calc(5 * 100% / 12); } +.m-pull-l-6 { right: calc(6 * 100% / 12); } +.m-pull-l-7 { right: calc(7 * 100% / 12); } +.m-pull-l-8 { right: calc(8 * 100% / 12); } +.m-pull-l-9 { right: calc(9 * 100% / 12); } +.m-pull-l-10 { right: calc(10 * 100% / 12); } +.m-pull-l-11 { right: calc(11 * 100% / 12); } +.m-clearfix-m::after { display: none; } +.m-hide-l { display: none; } +.m-show-l { display: block; } +.m-col-l-none { width: auto; float: none; } +} +/*==== ../mcss/css/m-components.css ==================================================================================*/ +html { font-size: var(--font-size); background-color: var(--background-color); } +body { font-family: var(--font); font-size: 1rem; line-height: var(--line-height); color: var(--color); } +h1, h2, h3, h4, h5, h6 { margin-top: 0; font-weight: var(--heading-font-weight); } +h1 { margin-bottom: 1rem; } +h2, h3, h4, h5, h6 { margin-bottom: 0.5rem; } +p, ul, ol, dl { margin-top: 0; } +ul, ol { padding-left: 2rem; } +ul ol, ul ul, ol ol, ol ul { margin-bottom: 0; } +main p { text-indent: var(--paragraph-indent); text-align: var(--paragraph-align); } +main p.m-noindent, li > p, dd > p, table.m-table td > p { text-indent: 0; text-align: left; } +blockquote { +margin-top: 0; +margin-left: 1rem; +margin-right: 1rem; +padding: 1rem; +border-left-style: solid; +border-left-width: 0.25rem; +} +hr { width: 75%; border-width: 0.0625rem; border-style: solid; } +blockquote, hr { border-color: var(--line-color); } +strong, .m-text.m-strong { font-weight: bold; } +em, .m-text.m-em { font-style: italic; } +s, .m-text.m-s { text-decoration: line-through; } +sub, sup, .m-text.m-sub, .m-text.m-sup { font-size: 0.75rem; line-height: 0; position: relative; vertical-align: baseline; } +sup, .m-text.m-sup { top: -0.35rem; } +sub, .m-text.m-sub { bottom: -0.2rem; } +abbr { cursor: help; text-decoration: underline dotted; } +a { color: var(--link-color); } +a.m-flat { text-decoration: none; } +a:hover, a:focus, a:active { color: var(--link-active-color); } +a img { border: 0; } +svg a { cursor: pointer; } +mark { padding: 0.0625rem; background-color: var(--mark-background-color); color: var(--mark-color); } +.m-link-wrap { word-break: break-all; } +pre, code { +font-family: var(--code-font), monospace, monospace; +font-size: var(--code-font-size); +color: var(--code-color); +background-color: var(--code-background-color); +} +pre.m-console, code.m-console { color: var(--console-color); background-color: var(--console-background-color); } +pre { padding: 0.5rem 1rem; border-radius: var(--border-radius); overflow-x: auto; margin-top: 0; } +pre.m-console-wrap { white-space: pre-wrap; word-break: break-all; } +code { padding: 0.125rem; } +*:focus { outline-color: var(--header-link-current-color); } +div.m-scroll { max-width: 100%; overflow-x: auto; } +.m-fullwidth { width: 100%; } +.m-spacing-150 { line-height: 1.5rem; } +.m-text-center, .m-text-center.m-noindent, table.m-table th.m-text-center, .m-text-center p { text-align: center; } +.m-text-left, .m-text-left.m-noindent, table.m-table th.m-text-left, .m-text-right p { text-align: left; } +.m-text-right, .m-text-right.m-noindent, table.m-table th.m-text-right, .m-text-right p { text-align: right; } +.m-text-top, table.m-table th.m-text-top, table.m-table td.m-text-top { vertical-align: top; } +.m-text-middle, table.m-table th.m-text-middle, table.m-table td.m-text-middle { vertical-align: middle; } +.m-text-bottom, table.m-table th.m-text-bottom, table.m-table td.m-text-bottom { vertical-align: bottom; } +.m-text.m-tiny { font-size: 50.0%; } +.m-text.m-small { font-size: 85.4%; } +.m-text.m-big { font-size: 117%; } +h1 .m-thin, h2 .m-thin, h3 .m-thin, h4 .m-thin, h5 .m-thin, h6 .m-thin { font-weight: normal; } +ul.m-unstyled, ol.m-unstyled { list-style-type: none; padding-left: 0; } +ul[class*='m-block-'], ol[class*='m-block-'] { padding-left: 0; } +ul[class*='m-block-'] li, ol[class*='m-block-'] li { display: inline; } +ul[class*='m-block-bar-'] li:not(:last-child)::after, ol[class*='m-block-bar-'] li:not(:last-child)::after { content: " | "; } +ul[class*='m-block-dot-'] li:not(:last-child)::after, ol[class*='m-block-dot-'] li:not(:last-child)::after { content: " • "; } +@media screen and (min-width: 576px) { +ul.m-block-bar-s, ol.m-block-bar-s, +ul.m-block-dot-s, ol.m-block-dot-s { padding-left: 2rem; } +ul.m-block-bar-s li, ol.m-block-bar-s li, +ul.m-block-dot-s li, ol.m-block-dot-s li { display: list-item; } +ul.m-block-bar-s li:not(:last-child)::after, ol.m-block-bar-s li:not(:last-child)::after, +ul.m-block-dot-s li:not(:last-child)::after, ol.m-block-dot-s li:not(:last-child)::after { content: ""; } +} +@media screen and (min-width: 768px) { +ul.m-block-bar-m, ol.m-block-bar-m, +ul.m-block-dot-m, ol.m-block-dot-m { padding-left: 2rem; } +ul.m-block-bar-m li, ol.m-block-bar-m li, +ul.m-block-dot-m li, ol.m-block-dot-m li { display: list-item; } +ul.m-block-bar-m li:not(:last-child)::after, ol.m-block-bar-m li:not(:last-child)::after, +ul.m-block-dot-m li:not(:last-child)::after, ol.m-block-dot-m li:not(:last-child)::after { content: ""; } +} +@media screen and (min-width: 992px) { +ul.m-block-bar-l, ol.m-block-bar-l, +ul.m-block-dot-l, ol.m-block-dot-l { padding-left: 2rem; } +ul.m-block-bar-l li, ol.m-block-bar-l li, +ul.m-block-dot-l li, ol.m-block-dot-l li { display: list-item; } +ul.m-block-bar-l li:not(:last-child)::after, ol.m-block-bar-l li:not(:last-child)::after, +ul.m-block-dot-l li:not(:last-child)::after, ol.m-block-dot-l li:not(:last-child)::after { content: ""; } +} +p.m-poem { text-indent: 0; text-align: left; margin-left: var(--paragraph-indent); } +p.m-transition { color: var(--line-color); text-indent: 0; text-align: center; font-size: 2rem; } +dl.m-diary { margin-bottom: 1.25rem; } +dl.m-diary:last-child { margin-bottom: 0.25rem; } +dl.m-diary dt { font-weight: bold; width: 6rem; float: left; clear: both; padding-top: 0.25rem; } +dl.m-diary dd { padding-top: 0.25rem; padding-left: 6rem; margin-left: 0; } +a.m-footnote, dl.m-footnote dd span.m-footnote { top: -0.35rem; font-size: 0.75rem; line-height: 0; position: relative; vertical-align: baseline; } +a.m-footnote, dl.m-footnote dd span.m-footnote a { text-decoration: none; } +a.m-footnote::before { content: '['; } +a.m-footnote::after { content: ']'; } +dl.m-footnote dt { width: 1.5rem; float: left; clear: both; } +dl.m-footnote dd { margin-left: 1.5rem; } +dl.m-footnote { font-size: 85.4%; } +dl.m-footnote dd span.m-footnote a { font-weight: bold; font-style: italic; } +.m-note { border-radius: var(--border-radius); padding: 1rem; } +.m-frame { +background-color: var(--background-color); +border-style: solid; +border-width: 0.125rem; +border-radius: var(--border-radius); +border-color: var(--line-color); +padding: 0.875rem; +} +.m-block { +border-style: solid; +border-width: 0.0625rem; +border-left-width: 0.25rem; +border-radius: var(--border-radius); +border-color: var(--line-color); +padding: 0.9375rem 0.9375rem 0.9375rem 0.75rem; +} +.m-block.m-badge::after { content: ' '; display: block; clear: both; } +.m-block.m-badge h3 { margin-left: 5rem; } +.m-block.m-badge p { margin-left: 5rem; text-indent: 0; } +.m-block.m-badge img { width: 4rem; height: 4rem; border-radius: 2rem; float: left; } +div.m-button { text-align: center; } +div.m-button a { +display: inline-block; +border-radius: var(--border-radius); +padding-top: 0.75rem; +padding-bottom: 0.75rem; +padding-left: 1.5rem; +padding-right: 1.5rem; +text-decoration: none; +font-size: 1.17rem; +} +div.m-button.m-fullwidth a { display: block; padding-left: 0.5rem; padding-right: 0.5rem; } +div.m-button a .m-big:first-child { font-size: 1.37rem; font-weight: bold; } +div.m-button a .m-small:last-child { font-size: 0.854rem; } +.m-label { +border-radius: var(--border-radius); +font-size: 75%; +font-weight: normal; +padding: 0.125rem 0.25rem; +vertical-align: 7.5%; +} +.m-label.m-flat { +border-width: 0.0625rem; +border-style: solid; +border-color: var(--dim-color); +padding: 0.0625rem 0.1875rem; +} +table.m-table { border-collapse: collapse; margin-left: auto; margin-right: auto; } +table.m-table.m-big { margin-top: 1.75rem; } +div.m-scroll > table.m-table:last-child { margin-bottom: 0.0625rem; } +table.m-table:not(.m-flat) tbody tr:hover { background-color: var(--line-color); } +table.m-table th, table.m-table td { +vertical-align: top; +border-style: solid; +border-top-width: 0.0625rem; +border-left-width: 0; +border-right-width: 0; +border-bottom-width: 0; +border-color: var(--line-color); +} +table.m-table caption { padding-bottom: 0.5rem; } +table.m-table thead tr:first-child th, table.m-table thead tr:first-child td { border-top-width: 0.125rem; } +table.m-table thead th, table.m-table thead td { border-bottom-width: 0.125rem; vertical-align: bottom; } +table.m-table tfoot th, table.m-table tfoot td { border-top-width: 0.125rem; } +table.m-table th, table.m-table td { padding: 0.5rem; } +table.m-table.m-big th, table.m-table.m-big td { padding: 0.75rem 1rem; } +table.m-table th { text-align: left; } +table.m-table th.m-thin { font-weight: normal; } +table.m-table td.m-default, table.m-table th.m-default, +table.m-table td.m-primary, table.m-table th.m-primary, +table.m-table td.m-success, table.m-table th.m-success, +table.m-table td.m-warning, table.m-table th.m-warning, +table.m-table td.m-danger, table.m-table th.m-danger, +table.m-table td.m-info, table.m-table th.m-info, +table.m-table td.m-dim, table.m-table th.m-dim { padding-left: 0.4375rem; padding-right: 0.4375rem; border-left-width: 0.0625rem; } +table.m-table.m-big td.m-default, table.m-table.m-big th.m-default, +table.m-table.m-big td.m-primary, table.m-table.m-big th.m-primary, +table.m-table.m-big td.m-success, table.m-table.m-big th.m-success, +table.m-table.m-big td.m-warning, table.m-table.m-big th.m-warning, +table.m-table.m-big td.m-danger, table.m-table.m-big th.m-danger, +table.m-table.m-big td.m-info, table.m-table.m-big th.m-info, +table.m-table.m-big td.m-dim, table.m-table.m-big th.m-dim { padding-left: 0.9375rem; padding-right: 0.9375rem; border-left-width: 0.0625rem; } +table.m-table tr.m-default td, table.m-table td.m-default, +table.m-table tr.m-default th, table.m-table th.m-default, +table.m-table tr.m-primary td, table.m-table td.m-primary, +table.m-table tr.m-primary th, table.m-table th.m-primary, +table.m-table tr.m-success td, table.m-table td.m-success, +table.m-table tr.m-success th, table.m-table th.m-success, +table.m-table tr.m-warning td, table.m-table td.m-warning, +table.m-table tr.m-warning th, table.m-table th.m-warning, +table.m-table tr.m-danger td, table.m-table td.m-danger, +table.m-table tr.m-danger th, table.m-table th.m-danger, +table.m-table tr.m-info td, table.m-table td.m-info, +table.m-table tr.m-info th, table.m-table th.m-info, +table.m-table tr.m-dim td, table.m-table td.m-dim, +table.m-table tr.m-dim th, table.m-table th.m-dim { border-color: var(--background-color); } +.m-note pre, .m-note code, +table.m-table tr.m-default pre, table.m-table tr.m-default code, +table.m-table td.m-default pre, table.m-table td.m-default code, +table.m-table th.m-default pre, table.m-table th.m-default code, +table.m-table tr.m-primary pre, table.m-table tr.m-primary code, +table.m-table td.m-primary pre, table.m-table td.m-primary code, +table.m-table th.m-primary pre, table.m-table th.m-primary code, +table.m-table tr.m-success pre, table.m-table tr.m-success code, +table.m-table td.m-success pre, table.m-table td.m-success code, +table.m-table th.m-success pre, table.m-table th.m-success code, +table.m-table tr.m-warning pre, table.m-table tr.m-warning code, +table.m-table td.m-warning pre, table.m-table td.m-warning code, +table.m-table th.m-warning pre, table.m-table th.m-warning code, +table.m-table tr.m-danger pre, table.m-table tr.m-danger code, +table.m-table td.m-danger pre, table.m-table td.m-danger code, +table.m-table th.m-danger pre, table.m-table th.m-danger code, +table.m-table tr.m-info pre, table.m-table tr.m-info code, +table.m-table td.m-info pre, table.m-table td.m-info code, +table.m-table th.m-info pre, table.m-table th.m-info code, +table.m-table tr.m-dim pre, table.m-table tr.m-dim code, +table.m-table td.m-dim pre, table.m-table td.m-dim code, +table.m-table th.m-dim pre, table.m-table th.m-dim code { background-color: var(--code-note-background-color); } +img.m-image, svg.m-image, video.m-image { display: block; margin-left: auto; margin-right: auto; } +div.m-image { text-align: center; } +img.m-image, svg.m-image, video.m-image, +div.m-image img, div.m-image svg, div.m-image video { max-width: 100%; border-radius: var(--border-radius); } +div.m-image.m-fullwidth img, +div.m-image.m-fullwidth svg, +div.m-image.m-fullwidth video { width: 100%; } +img.m-image.m-badge, div.m-image.m-badge img { border-radius: 50%; } +figure.m-figure { +max-width: 100%; +margin-top: 0; +margin-left: auto; +margin-right: auto; +position: relative; +display: table; +} +figure.m-figure::before { +position: absolute; +content: ' '; +top: 0; +bottom: 0; +left: 0; +right: 0; +z-index: -1; +border-style: solid; +border-width: 0.125rem; +border-radius: var(--border-radius); +border-color: var(--line-color); +} +figure.m-figure.m-flat::before { border-color: transparent; } +figure.m-figure > * { margin-left: 1rem; margin-right: 1rem; display: table-caption; caption-side: bottom; } +figure.m-figure > *:first-child { display: inline; } +figure.m-figure > *:last-child { margin-bottom: 1rem !important; } +figure.m-figure img, +figure.m-figure svg, +figure.m-figure video { +position: relative; +margin-left: 0; +margin-right: 0; +margin-bottom: 0; +border-top-left-radius: var(--border-radius); +border-top-right-radius: var(--border-radius); +max-width: 100%; +} +figure.m-figure.m-flat img, +figure.m-figure.m-flat svg, +figure.m-figure.m-flat video { border-bottom-left-radius: var(--border-radius); border-bottom-right-radius: var(--border-radius); } +figure.m-figure a img, +figure.m-figure a svg, +figure.m-figure a video { margin-left: -1rem; margin-right: -1rem; } +figure.m-figure.m-fullwidth, figure.m-figure.m-fullwidth > * { display: block; } +figure.m-figure.m-fullwidth > *:first-child { display: inline; } +figure.m-figure.m-fullwidth img, +figure.m-figure.m-fullwidth svg, +figure.m-figure.m-fullwidth video { width: 100%; } +figure.m-figure.m-fullwidth::after { content: ' '; display: block; margin-top: 1rem; height: 1px; } +.m-code-figure, .m-console-figure { margin-top: 0; margin-left: 0; margin-right: 0; position: relative; padding: 1rem; } +.m-code-figure::before, .m-console-figure::before { +position: absolute; +content: ' '; +top: 0; +bottom: 0; +left: 0; +right: 0; +z-index: -1; +border-style: solid; +border-width: 0.125rem; +border-radius: var(--border-radius); +} +.m-code-figure::before { border-color: var(--code-background-color); } +.m-console-figure::before { border-color: var(--console-background-color); } +.m-code-figure.m-flat::before, .m-console-figure.m-flat::before { border-color: transparent; } +.m-code-figure > pre:first-child, .m-console-figure > pre:first-child { +position: relative; +margin: -1rem -1rem 1rem -1rem; +border-bottom-left-radius: 0; +border-bottom-right-radius: 0; +} +.m-code-figure > pre.m-nopad, .m-console-figure > pre.m-nopad { +margin-left: -0.875rem; +margin-right: -0.875rem; +margin-top: -1rem; +margin-bottom: -0.875rem; +padding-left: 0.875rem; +} +figure.m-figure figcaption, .m-code-figure figcaption, .m-console-figure figcaption { +margin-top: 0.5rem; +margin-bottom: 0.5rem; +font-weight: var(--heading-font-weight); +font-size: 1.17rem; +} +figure.m-figure figcaption a, .m-code-figure figcaption a, .m-console-figure figcaption a { text-decoration: var(--link-decoration-heading); } +figure.m-figure figcaption .m-figure-description { margin-top: 0.5rem; font-weight: normal; font-size: 1rem; } +figure.m-figure figcaption .m-figure-description a { text-decoration: var(--link-decoration); } +.m-imagegrid > div { background-color: var(--background-color); } +.m-imagegrid > div > figure { display: block; float: left; position: relative; margin: 0; } +.m-imagegrid > div > figure > div, +.m-imagegrid > div > figure > figcaption, +.m-imagegrid > div > figure > a > div, +.m-imagegrid > div > figure > a > figcaption { +position: absolute; +top: 0; +left: 0; +width: 100%; +height: 100%; +border-color: var(--background-color); +border-style: solid; +border-width: 0.25rem; +padding: 0.5rem; +} +.m-imagegrid > div > figure:first-child > div, +.m-imagegrid > div > figure:first-child > figcaption, +.m-imagegrid > div > figure:first-child > a > div, +.m-imagegrid > div > figure:first-child > a > figcaption { border-left-width: 0; } +.m-imagegrid > div > figure:last-child > div, +.m-imagegrid > div > figure:last-child > figcaption, +.m-imagegrid > div > figure:last-child > a > div, +.m-imagegrid > div > figure:last-child > a > figcaption { border-right-width: 0; } +.m-imagegrid > div > figure > figcaption, +.m-imagegrid > div > figure > a > figcaption { +color: transparent; +overflow: hidden; +text-overflow: ellipsis; +white-space: nowrap; +font-size: 0.75rem; +} +.m-imagegrid > div > figure > div::before, +.m-imagegrid > div > figure > figcaption::before, +.m-imagegrid > div > figure > a > div::before, +.m-imagegrid > div > figure > a > figcaption::before { content: ''; display: inline-block; height: 100%; vertical-align: bottom; width: 0; } +.m-imagegrid > div > figure:hover > figcaption, +.m-imagegrid > div > figure:hover > a > figcaption { +background: linear-gradient(transparent 0%, transparent 75%, rgba(0, 0, 0, 0.85) 100%); +color: #ffffff; +} +.m-imagegrid > div > figure > img, +.m-imagegrid > div > figure > a > img { width: 100%; height: 100%; } +.m-imagegrid > div::after { display: block; content: ' '; clear: both; } +@media screen and (max-width: 767px) { +.m-imagegrid > div > figure { float: none; width: 100% !important; } +.m-imagegrid > div > figure > div, +.m-imagegrid > div > figure > figcaption, +.m-imagegrid > div > figure > a > div, +.m-imagegrid > div > figure > a > figcaption { border-left-width: 0; border-right-width: 0; } +} +.m-container-inflatable > .m-row > [class*='m-col-'] > .m-note, +.m-container-inflatable > .m-row > [class*='m-col-'] > .m-frame, +.m-container-inflatable > .m-row > [class*='m-col-'] > .m-block, +.m-container-inflatable > .m-row > [class*='m-col-'] > .m-imagegrid, +.m-container-inflatable > .m-row > [class*='m-col-'] > pre, +.m-container-inflatable > .m-row > [class*='m-col-'] > .m-code-figure, +.m-container-inflatable > .m-row > [class*='m-col-'] > .m-console-figure, +.m-container-inflatable > .m-row > [class*='m-col-'] section > .m-note, +.m-container-inflatable > .m-row > [class*='m-col-'] section > .m-frame, +.m-container-inflatable > .m-row > [class*='m-col-'] section > .m-block, +.m-container-inflatable > .m-row > [class*='m-col-'] section > .m-imagegrid, +.m-container-inflatable > .m-row > [class*='m-col-'] section > pre, +.m-container-inflatable > .m-row > [class*='m-col-'] section > .m-code-figure, +.m-container-inflatable > .m-row > [class*='m-col-'] section > .m-console-figure, +.m-container-inflatable [class*='m-center-'] > .m-note, +.m-container-inflatable [class*='m-center-'] > .m-frame, +.m-container-inflatable [class*='m-center-'] > .m-block, +.m-container-inflatable [class*='m-center-'] > .m-imagegrid, +.m-container-inflatable [class*='m-center-'] > pre, +.m-container-inflatable [class*='m-center-'] > .m-code-figure, +.m-container-inflatable [class*='m-center-'] > .m-console-figure, +.m-container-inflatable [class*='m-left-'] > .m-note, +.m-container-inflatable [class*='m-left-'] > .m-frame, +.m-container-inflatable [class*='m-left-'] > .m-block, +.m-container-inflatable [class*='m-left-'] > .m-imagegrid, +.m-container-inflatable [class*='m-left-'] > pre, +.m-container-inflatable [class*='m-left-'] > .m-code-figure, +.m-container-inflatable [class*='m-left-'] > .m-console-figure, +.m-container-inflatable [class*='m-right-'] > .m-note, +.m-container-inflatable [class*='m-right-'] > .m-frame, +.m-container-inflatable [class*='m-right-'] > .m-block, +.m-container-inflatable [class*='m-right-'] > .m-imagegrid, +.m-container-inflatable [class*='m-right-'] > pre, +.m-container-inflatable [class*='m-right-'] > .m-code-figure, +.m-container-inflatable [class*='m-right-'] > .m-console-figure, +.m-container-inflatable .m-container-inflate > .m-note, +.m-container-inflatable .m-container-inflate > .m-frame, +.m-container-inflatable .m-container-inflate > .m-block, +.m-container-inflatable .m-container-inflate > .m-imagegrid, +.m-container-inflatable .m-container-inflate > pre, +.m-container-inflatable .m-container-inflate > .m-code-figure, +.m-container-inflatable .m-container-inflate > .m-console-figure { margin-left: -1rem; margin-right: -1rem; } +@media screen and (min-width: 576px) { +.m-container-inflatable .m-center-s > .m-note, +.m-container-inflatable .m-center-s > .m-frame, +.m-container-inflatable .m-center-s > .m-block, +.m-container-inflatable .m-center-s > .m-imagegrid, +.m-container-inflatable .m-center-s > pre, +.m-container-inflatable .m-center-s > .m-code-figure, +.m-container-inflatable .m-center-s > .m-console-figure { margin-left: -1rem; margin-right: -1rem; } +.m-container-inflatable .m-left-s > .m-note, +.m-container-inflatable .m-left-s > .m-frame, +.m-container-inflatable .m-left-s > .m-block, +.m-container-inflatable .m-left-s > .m-imagegrid, +.m-container-inflatable .m-left-s > pre, +.m-container-inflatable .m-left-s > .m-code-figure, +.m-container-inflatable .m-left-s > .m-console-figure { margin-left: -1rem; margin-right: 0; } +.m-container-inflatable .m-right-s > .m-note, +.m-container-inflatable .m-right-s > .m-frame, +.m-container-inflatable .m-right-s > .m-block, +.m-container-inflatable .m-right-s > .m-imagegrid, +.m-container-inflatable .m-right-s > pre, +.m-container-inflatable .m-right-s > .m-code-figure, +.m-container-inflatable .m-right-s > .m-console-figure { margin-left: 0; margin-right: -1rem; } +.m-container-inflatable > .m-row > .m-col-s-10 > .m-imagegrid.m-container-inflate, +.m-container-inflatable > .m-row > .m-col-s-10 section > .m-imagegrid.m-container-inflate { margin-left: -10%; margin-right: -10%; } +} +@media screen and (min-width: 768px) { +.m-container-inflatable .m-center-m > .m-note, +.m-container-inflatable .m-center-m > .m-frame, +.m-container-inflatable .m-center-m > .m-block, +.m-container-inflatable .m-center-m > .m-imagegrid, +.m-container-inflatable .m-center-m > pre, +.m-container-inflatable .m-center-m > .m-code-figure, +.m-container-inflatable .m-center-m > .m-console-figure { margin-left: -1rem; margin-right: -1rem; } +.m-container-inflatable .m-left-m > .m-note, +.m-container-inflatable .m-left-m > .m-frame, +.m-container-inflatable .m-left-m > .m-block, +.m-container-inflatable .m-left-m > .m-imagegrid, +.m-container-inflatable .m-left-m > pre, +.m-container-inflatable .m-left-m > .m-code-figure, +.m-container-inflatable .m-left-m > .m-console-figure { margin-left: -1rem; margin-right: 0; } +.m-container-inflatable .m-right-m > .m-note, +.m-container-inflatable .m-right-m > .m-frame, +.m-container-inflatable .m-right-m > .m-block, +.m-container-inflatable .m-right-m > .m-imagegrid, +.m-container-inflatable .m-right-m > pre, +.m-container-inflatable .m-right-m > .m-code-figure, +.m-container-inflatable .m-right-m > .m-console-figure { margin-left: 0; margin-right: -1rem; } +.m-container-inflatable > .m-row > .m-col-m-10 > .m-imagegrid.m-container-inflate, +.m-container-inflatable > .m-row > .m-col-m-10 section > .m-imagegrid.m-container-inflate { margin-left: -10%; margin-right: -10%; } +} +@media screen and (min-width: 992px) { +.m-container-inflatable .m-center-l > .m-note, +.m-container-inflatable .m-center-l > .m-frame, +.m-container-inflatable .m-center-l > .m-block, +.m-container-inflatable .m-center-l > .m-imagegrid, +.m-container-inflatable .m-center-l > pre, +.m-container-inflatable .m-center-l > .m-code-figure, +.m-container-inflatable .m-center-l > .m-console-figure { margin-left: -1rem; margin-right: -1rem; } +.m-container-inflatable .m-left-l > .m-note, +.m-container-inflatable .m-left-l > .m-frame, +.m-container-inflatable .m-left-l > .m-block, +.m-container-inflatable .m-left-l > .m-imagegrid, +.m-container-inflatable .m-left-l > pre, +.m-container-inflatable .m-left-l > .m-code-figure, +.m-container-inflatable .m-left-l > .m-console-figure { margin-left: -1rem; margin-right: 0; } +.m-container-inflatable .m-right-l > .m-note, +.m-container-inflatable .m-right-l > .m-frame, +.m-container-inflatable .m-right-l > .m-block, +.m-container-inflatable .m-right-l > .m-imagegrid, +.m-container-inflatable .m-right-l > pre, +.m-container-inflatable .m-right-l > .m-code-figure, +.m-container-inflatable .m-right-l > .m-console-figure { margin-left: 0; margin-right: -1rem; } +.m-container-inflatable > .m-row > .m-col-l-10 > .m-imagegrid.m-container-inflate, +.m-container-inflatable > .m-row > .m-col-l-10 section > .m-imagegrid.m-container-inflate { margin-left: -10%; margin-right: -10%; } +} +pre.m-code span.hll { margin-left: -1.0rem; margin-right: -1.0rem; padding-left: 1.0rem; } +.m-code.m-inverted > span, .m-console.m-inverted > span { opacity: 0.3333; } +.m-code.m-inverted > span.hll, .m-console.m-inverted > span.hll { opacity: 1; background-color: transparent; border-color: transparent; } +.m-code.m-inverted { color: var(--code-inverted-color); } +.m-console.m-inverted { color: var(--console-inverted-color); } +.m-code.m-inverted > span.hll { color: var(--code-color); } +.m-cosole.m-inverted > span.hll { color: var(--console-color); } +.m-code-color { +display: inline-block; +width: 0.75rem; +height: 0.75rem; +vertical-align: -0.05rem; +margin-left: 0.2rem; +margin-right: 0.1rem; +border-radius: 0.1rem; +} +div.m-math { overflow-x: auto; overflow-y: hidden; } +div.m-math svg { margin-left: auto; margin-right: auto; display: block; } +div.m-button a svg.m-math { fill: var(--button-background-color); } +div.m-button.m-flat a svg.m-math { fill: var(--color); } +div.m-button.m-flat a:hover svg.m-math, div.m-button.m-default a:focus svg.m-math, +div.m-button.m-default a:active svg.m-math { fill: var(--link-active-color); } +.m-graph { font-size: var(--font-size); } +div.m-plot svg, div.m-graph svg { max-width: 100%; margin-left: auto; margin-right: auto; display: block; } +div.m-plot .m-background { fill: var(--plot-background-color); } +div.m-plot svg .m-label { font-size: 11px; } +div.m-plot svg .m-title { font-size: 13px; } +div.m-plot svg .m-label, div.m-plot svg .m-title { fill: var(--color); } +div.m-plot svg .m-line { stroke: var(--color); stroke-width: 0.8; } +div.m-plot svg .m-error { stroke: var(--plot-error-color); stroke-width: 1.5; } +div.m-plot svg .m-label.m-dim { fill: var(--dim-color); } +.m-graph g.m-edge path, .m-graph g.m-cluster polygon, +.m-graph g.m-node.m-flat ellipse, +.m-graph g.m-node.m-flat polygon { fill: none; } +.m-graph g.m-node:not(.m-flat) text { fill: var(--button-background-color); } +figure.m-figure > svg.m-math:first-child, +figure.m-figure > svg.m-graph:first-child { padding: 1rem; box-sizing: content-box; } +figure.m-figure:not(.m-flat) > svg.m-math:first-child, +figure.m-figure:not(.m-flat) > svg.m-graph:first-child { background-color: var(--line-color); } +.m-block.m-default { border-left-color: var(--line-color); } +.m-block.m-default h3, .m-block.m-default h4, .m-block.m-default h5, .m-block.m-default h6, +.m-text.m-default, .m-label.m-flat.m-default, +pre.m-math.m-default, code.m-math.m-default { color: var(--default-color); } +.m-block.m-default h3 a, .m-block.m-default h4 a, .m-block.m-default h5 a, .m-block.m-default h6 a { color: var(--link-color); } +.m-block.m-primary { border-left-color: var(--primary-color); } +.m-block.m-primary h3, .m-block.m-primary h4, .m-block.m-primary h5, .m-block.m-primary h6, +.m-block.m-primary h3 a, .m-block.m-primary h4 a, .m-block.m-primary h5 a, .m-block.m-primary h6 a, +.m-text.m-primary, .m-label.m-flat.m-primary, +pre.m-math.m-primary, code.m-math.m-primary { color: var(--primary-color); } +.m-block.m-success { border-left-color: var(--success-color); } +.m-block.m-success h3, .m-block.m-success h4, .m-block.m-success h5, .m-block.m-success h6, +.m-block.m-success h3 a, .m-block.m-success h4 a, .m-block.m-success h5 a, .m-block.m-success h6 a, +.m-text.m-success, .m-label.m-flat.m-success, +pre.m-math.m-success, code.m-math.m-success { color: var(--success-color); } +.m-block.m-warning { border-left-color: var(--warning-color); } +.m-block.m-warning h3, .m-block.m-warning h4, .m-block.m-warning h5, .m-block.m-warning h6, +.m-block.m-warning h3 a, .m-block.m-warning h4 a, .m-block.m-warning h5 a, .m-block.m-warning h6 a, +.m-text.m-warning, .m-label.m-flat.m-warning, +pre.m-math.m-warning, code.m-math.m-warning { color: var(--warning-color); } +.m-block.m-danger { border-left-color: var(--danger-color); } +.m-block.m-danger h3, .m-block.m-danger h4, .m-block.m-danger h5, .m-block.m-danger h6, +.m-block.m-danger h3 a, .m-block.m-danger h4 a, .m-block.m-danger h5 a, .m-block.m-danger h6 a, +.m-text.m-danger, .m-label.m-flat.m-danger, +pre.m-math.m-danger, code.m-math.m-danger { color: var(--danger-color); } +.m-block.m-info { border-left-color: var(--info-color); } +.m-block.m-info h3, .m-block.m-info h4, .m-block.m-info h5, .m-block.m-info h6, +.m-block.m-info h3 a, .m-block.m-info h4 a, .m-block.m-info h5 a, .m-block.m-info h6 a, +.m-text.m-info, .m-label.m-flat.m-info, +pre.m-math.m-info, code.m-math.m-info { color: var(--info-color); } +.m-block.m-dim { border-left-color: var(--dim-color); } +.m-block.m-dim, .m-text.m-dim, .m-label.m-flat.m-dim, +pre.m-math.m-dim, code.m-math.m-dim { color: var(--dim-color); } +.m-block.m-dim a, .m-text.m-dim a { color: var(--dim-link-color); } +.m-block.m-dim a:hover, .m-block.m-dim a:focus, .m-block.m-dim a:active, +.m-text.m-dim a:hover, .m-text.m-dim a:focus, .m-text.m-dim a:active { color: var(--dim-link-active-color); } +.m-block.m-flat { border-color: transparent; } +.m-block.m-flat h3, .m-block.m-flat h4, .m-block.m-flat h5, .m-block.m-flat h6 { color: var(--default-color); } +.m-block.m-default h3 a:hover, .m-block.m-default h3 a:focus, .m-block.m-default h3 a:active, +.m-block.m-default h4 a:hover, .m-block.m-default h4 a:focus, .m-block.m-default h4 a:active, +.m-block.m-default h5 a:hover, .m-block.m-default h5 a:focus, .m-block.m-default h5 a:active, +.m-block.m-default h6 a:hover, .m-block.m-default h6 a:focus, .m-block.m-default h6 a:active { color: var(--default-link-active-color); } +.m-block.m-primary h3 a:hover, .m-block.m-primary h3 a:focus, .m-block.m-primary h3 a:active, +.m-block.m-primary h4 a:hover, .m-block.m-primary h4 a:focus, .m-block.m-primary h4 a:active, +.m-block.m-primary h5 a:hover, .m-block.m-primary h5 a:focus, .m-block.m-primary h5 a:active, +.m-block.m-primary h6 a:hover, .m-block.m-primary h6 a:focus, .m-block.m-primary h6 a:active { color: var(--primary-link-active-color); } +.m-block.m-success h3 a:hover, .m-block.m-success h3 a:focus, .m-block.m-success h3 a:active, +.m-block.m-success h4 a:hover, .m-block.m-success h4 a:focus, .m-block.m-success h4 a:active, +.m-block.m-success h5 a:hover, .m-block.m-success h5 a:focus, .m-block.m-success h5 a:active, +.m-block.m-success h6 a:hover, .m-block.m-success h6 a:focus, .m-block.m-success h6 a:active { color: var(--success-link-active-color); } +.m-block.m-warning h3 a:hover, .m-block.m-warning h3 a:focus, .m-block.m-warning h3 a:active, +.m-block.m-warning h4 a:hover, .m-block.m-warning h4 a:focus, .m-block.m-warning h4 a:active, +.m-block.m-warning h5 a:hover, .m-block.m-warning h5 a:focus, .m-block.m-warning h5 a:active, +.m-block.m-warning h6 a:hover, .m-block.m-warning h6 a:focus, .m-block.m-warning h6 a:active { color: var(--warning-link-active-color); } +.m-block.m-danger h3 a:hover, .m-block.m-danger h3 a:focus, .m-block.m-danger h3 a:active, +.m-block.m-danger h4 a:hover, .m-block.m-danger h4 a:focus, .m-block.m-danger h4 a:active, +.m-block.m-danger h5 a:hover, .m-block.m-danger h5 a:focus, .m-block.m-danger h5 a:active, +.m-block.m-danger h6 a:hover, .m-block.m-danger h6 a:focus, .m-block.m-danger h6 a:active { color: var(--danger-link-active-color); } +.m-block.m-info h3 a:hover, .m-block.m-info h3 a:focus, .m-block.m-info h3 a:active, +.m-block.m-info h4 a:hover, .m-block.m-info h4 a:focus, .m-block.m-info h4 a:active, +.m-block.m-info h5 a:hover, .m-block.m-info h5 a:focus, .m-block.m-info h5 a:active, +.m-block.m-info h6 a:hover, .m-block.m-info h6 a:focus, .m-block.m-info h6 a:active { color: var(--info-link-active-color); } +div.m-button a, .m-label { color: var(--button-background-color); } +div.m-button.m-flat a { color: var(--color); } +div.m-button.m-flat a:hover, div.m-button.m-default a:focus, div.m-button.m-default a:active { color: var(--link-active-color); } +div.m-button.m-default a, .m-label:not(.m-flat).m-default { background-color: var(--default-color); } +div.m-button.m-primary a, .m-label:not(.m-flat).m-primary { background-color: var(--primary-color); } +div.m-button.m-success a, .m-label:not(.m-flat).m-success { background-color: var(--success-color); } +div.m-button.m-warning a, .m-label:not(.m-flat).m-warning { background-color: var(--warning-color); } +div.m-button.m-danger a, .m-label:not(.m-flat).m-danger { background-color: var(--danger-color); } +div.m-button.m-info a, .m-label:not(.m-flat).m-info { background-color: var(--info-color); } +div.m-button.m-dim a, .m-label:not(.m-flat).m-dim { background-color: var(--dim-color); } +div.m-button.m-default a:hover, div.m-button.m-default a:focus, div.m-button.m-default a:active { background-color: var(--default-link-active-color); } +div.m-button.m-primary a:hover, div.m-button.m-primary a:focus, div.m-button.m-primary a:active { background-color: var(--primary-link-active-color); } +div.m-button.m-success a:hover, div.m-button.m-success a:focus, div.m-button.m-success a:active { background-color: var(--success-link-active-color); } +div.m-button.m-warning a:hover, div.m-button.m-warning a:focus, div.m-button.m-warning a:active { background-color: var(--warning-link-active-color); } +div.m-button.m-danger a:hover, div.m-button.m-danger a:focus, div.m-button.m-danger a:active { background-color: var(--danger-link-active-color); } +div.m-button.m-info a:hover, div.m-button.m-info a:focus, div.m-button.m-info a:active { background-color: var(--info-link-active-color); } +div.m-button.m-dim a:hover, div.m-button.m-dim a:focus, div.m-button.m-dim a:active { background-color: var(--dim-button-active-color); } +.m-note.m-default { background-color: var(--default-filled-background-color); } +.m-note.m-default, +table.m-table tr.m-default td, table.m-table td.m-default, +table.m-table tr.m-default th, table.m-table th.m-default { color: var(--default-filled-color); } +.m-note.m-default a:hover, +table.m-table tr.m-default td a:hover, table.m-table td.m-default a:hover, +table.m-table tr.m-default th a:hover, table.m-table th.m-default a:hover, +.m-note.m-default a:focus, +table.m-table tr.m-default td a:focus, table.m-table td.m-default a:focus, +table.m-table tr.m-default th a:focus, table.m-table th.m-default a:focus, +.m-note.m-default a:active, +table.m-table tr.m-default td a:active, table.m-table td.m-default a:active, +table.m-table tr.m-default th a:active, table.m-table th.m-default a:active { color: var(--default-filled-link-active-color); } +.m-note.m-primary a, +table.m-table tr.m-primary td a, table.m-table td.m-primary a, +table.m-table tr.m-primary th a, table.m-table th.m-primary a { color: var(--default-filled-link-color); } +.m-note.m-primary, +table.m-table tr.m-primary td, table.m-table td.m-primary, +table.m-table tr.m-primary th, table.m-table th.m-primary { background-color: var(--primary-filled-background-color); color: var(--primary-filled-color); } +.m-note.m-primary a, +table.m-table tr.m-primary td a, table.m-table td.m-primary a, +table.m-table tr.m-primary th a, table.m-table th.m-primary a { color: var(--primary-filled-link-color); } +.m-note.m-primary a:hover, +table.m-table tr.m-primary td a:hover, table.m-table td.m-primary a:hover, +table.m-table tr.m-primary th a:hover, table.m-table th.m-primary a:hover, +.m-note.m-primary a:focus, +table.m-table tr.m-primary td a:focus, table.m-table td.m-primary a:focus, +table.m-table tr.m-primary th a:focus, table.m-table th.m-primary a:focus, +.m-note.m-primary a:active, +table.m-table tr.m-primary td a:active, table.m-table td.m-primary a:active, +table.m-table tr.m-primary th a:active, table.m-table th.m-primary a:active { color: var(--primary-filled-link-active-color); } +.m-note.m-success, +table.m-table tr.m-success td, table.m-table td.m-success, +table.m-table tr.m-success th, table.m-table th.m-success { background-color: var(--success-filled-background-color); color: var(--success-filled-color); } +.m-note.m-success a, +table.m-table tr.m-success td a, table.m-table td.m-success a, +table.m-table tr.m-success th a, table.m-table th.m-success a { color: var(--success-filled-link-color); } +.m-note.m-success a:hover, +table.m-table tr.m-success td a:hover, table.m-table td.m-success a:hover, +table.m-table tr.m-success th a:hover, table.m-table th.m-success a:hover, +.m-note.m-success a:focus, +table.m-table tr.m-success td a:focus, table.m-table td.m-success a:focus, +table.m-table tr.m-success th a:focus, table.m-table th.m-success a:focus, +.m-note.m-success a:active, +table.m-table tr.m-success td a:active, table.m-table td.m-success a:active, +table.m-table tr.m-success th a:active, table.m-table th.m-success a:active { color: var(--success-filled-link-active-color); } +.m-note.m-warning, table.m-table tr.m-warning td, table.m-table td.m-warning, +table.m-table tr.m-warning th, table.m-table th.m-warning { background-color: var(--warning-filled-background-color); color: var(--warning-filled-color); } +.m-note.m-warning a, table.m-table tr.m-warning td a, table.m-table td.m-warning a, +table.m-table tr.m-warning th a, table.m-table th.m-warning a { color: var(--warning-filled-link-color); } +.m-note.m-warning a:hover, +table.m-table tr.m-warning td a:hover, table.m-table td.m-warning a:hover, +table.m-table tr.m-warning th a:hover, table.m-table th.m-warning a:hover, +.m-note.m-warning a:focus, +table.m-table tr.m-warning td a:focus, table.m-table td.m-warning a:focus, +table.m-table tr.m-warning th a:focus, table.m-table th.m-warning a:focus, +.m-note.m-warning a:active, +table.m-table tr.m-warning td a:active, table.m-table td.m-warning a:active, +table.m-table tr.m-warning th a:active, table.m-table th.m-warning a:active { color: var(--warning-filled-link-active-color); } +.m-note.m-danger, +table.m-table tr.m-danger td, table.m-table td.m-danger, +table.m-table tr.m-danger th, table.m-table th.m-danger { background-color: var(--danger-filled-background-color); color: var(--danger-filled-color); } +.m-note.m-danger a, +table.m-table tr.m-danger td a, table.m-table td.m-danger a, +table.m-table tr.m-danger th a, table.m-table th.m-danger a { color: var(--danger-filled-link-color); } +.m-note.m-danger a:hover, +table.m-table tr.m-danger td a:hover, table.m-table td.m-danger a:hover, +table.m-table tr.m-danger th a:hover, table.m-table th.m-danger a:hover, +.m-note.m-danger a:focus, +table.m-table tr.m-danger td a:focus, table.m-table td.m-danger a:focus, +table.m-table tr.m-danger th a:focus, table.m-table th.m-danger a:focus, +.m-note.m-danger a:active, +table.m-table tr.m-danger td a:active, table.m-table td.m-danger a:active, +table.m-table tr.m-danger th a:active, table.m-table th.m-danger a:active { color: var(--danger-filled-link-active-color); } +.m-note.m-info, +table.m-table tr.m-info td, table.m-table td.m-info, +table.m-table tr.m-info th, table.m-table th.m-info { background-color: var(--info-filled-background-color); color: var(--info-filled-color); } +.m-note.m-info a, +table.m-table tr.m-info td a, table.m-table td.m-info a, +table.m-table tr.m-info th a, table.m-table th.m-info a { color: var(--info-filled-link-color); } +.m-note.m-info a:hover, +table.m-table tr.m-info td a:hover, table.m-table td.m-info a:hover, +table.m-table tr.m-info th a:hover, table.m-table th.m-info a:hover, +.m-note.m-info a:focus, +table.m-table tr.m-info td a:focus, table.m-table td.m-info a:focus, +table.m-table tr.m-info th a:focus, table.m-table th.m-info a:focus, +.m-note.m-info a:active, +table.m-table tr.m-info td a:active, table.m-table td.m-info a:active, +table.m-table tr.m-info th a:active, table.m-table th.m-info a:active { color: var(--info-filled-link-active-color); } +.m-note.m-dim, +table.m-table tr.m-dim td, table.m-table td.m-dim, +table.m-table tr.m-dim th, table.m-table th.m-dim { background-color: var(--dim-filled-background-color); color: var(--dim-filled-color); } +.m-note.m-dim a, +table.m-table tr.m-dim td a, table.m-table td.m-dim a, +table.m-table tr.m-dim th a, table.m-table th.m-dim a { color: var(--dim-filled-link-color); } +.m-note.m-dim a:hover, +table.m-table tr.m-dim td a:hover, table.m-table td.m-dim a:hover, +table.m-table tr.m-dim th a:hover, table.m-table th.m-dim a:hover, +.m-note.m-dim a:focus, +table.m-table tr.m-dim td a:focus, table.m-table td.m-dim a:focus, +table.m-table tr.m-dim th a:focus, table.m-table th.m-dim a:focus, +.m-note.m-dim a:active, +table.m-table tr.m-dim td a:active, table.m-table td.m-dim a:active, +table.m-table tr.m-dim th a:active, table.m-table th.m-dim a:active { color: var(--dim-filled-link-active-color); } +figure.m-figure.m-default::before { border-color: var(--default-filled-background-color); } +figure.m-figure.m-default figcaption { color: var(--default-color); } +figure.m-figure.m-primary::before { border-color: var(--primary-filled-background-color); } +figure.m-figure.m-primary figcaption { color: var(--primary-color); } +figure.m-figure.m-primary figcaption .m-figure-description { color: var(--default-color); } +figure.m-figure.m-success::before { border-color: var(--success-filled-background-color); } +figure.m-figure.m-success figcaption { color: var(--success-color); } +figure.m-figure.m-success figcaption .m-figure-description { color: var(--default-color); } +figure.m-figure.m-warning::before { border-color: var(--warning-filled-background-color); } +figure.m-figure.m-warning figcaption { color: var(--warning-color); } +figure.m-figure.m-warning figcaption .m-figure-description { color: var(--default-color); } +figure.m-figure.m-danger::before { border-color: var(--danger-filled-background-color); } +figure.m-figure.m-danger figcaption { color: var(--danger-color); } +figure.m-figure.m-danger figcaption .m-figure-description { color: var(--default-color); } +figure.m-figure.m-info::before { border-color: var(--info-filled-background-color); } +figure.m-figure.m-info figcaption { color: var(--info-color); } +figure.m-figure.m-info figcaption .m-figure-description { color: var(--default-color); } +figure.m-figure.m-dim::before { border-color: var(--dim-filled-background-color); } +figure.m-figure.m-dim { color: var(--dim-color); } +figure.m-figure.m-dim a { color: var(--dim-link-color); } +figure.m-figure.m-dim a:hover, figure.m-figure.m-dim a:focus, figure.m-figure.m-dim a:active { color: var(--dim-link-active-color); } +div.m-math svg, svg.m-math { fill: var(--color); } +div.m-math.m-default svg, div.m-math svg g.m-default, div.m-math svg rect.m-default, +svg.m-math.m-default, svg.m-math g.m-default, svg.m-math rect.m-default, +div.m-plot svg .m-bar.m-default, +.m-graph g.m-edge polygon, +.m-graph g.m-node:not(.m-flat) ellipse, +.m-graph g.m-node:not(.m-flat) polygon, +.m-graph g.m-edge text, +.m-graph g.m-node.m-flat text, +.m-graph g.m-cluster text, +.m-graph.m-default g.m-edge polygon, +.m-graph.m-default g.m-node:not(.m-flat) ellipse, +.m-graph.m-default g.m-node:not(.m-flat) polygon, +.m-graph.m-default g.m-edge text, +.m-graph.m-default g.m-node.m-flat text, +.m-graph.m-default g.m-cluster text { fill: var(--default-color); } +.m-graph g.m-edge polygon, +.m-graph g.m-edge path, +.m-graph g.m-node ellipse, +.m-graph g.m-node polygon, +.m-graph g.m-node polyline, +.m-graph g.m-cluster polygon, +.m-graph.m-default g.m-edge polygon, +.m-graph.m-default g.m-edge path, +.m-graph.m-default g.m-node ellipse, +.m-graph.m-default g.m-node polygon, +.m-graph.m-default g.m-node polyline, +.m-graph.m-default g.m-cluster polygon { stroke: var(--default-color); } +div.m-math.m-primary svg, div.m-math svg g.m-primary, div.m-math svg rect.m-primary, +svg.m-math.m-primary, svg.m-math g.m-primary, svg.m-math rect.m-primary, +div.m-plot svg .m-bar.m-primary, +.m-graph.m-primary g.m-edge polygon, +.m-graph.m-primary g.m-node:not(.m-flat) ellipse, +.m-graph.m-primary g.m-node:not(.m-flat) polygon, +.m-graph.m-primary g.m-edge text, +.m-graph.m-primary g.m-node.m-flat text, +.m-graph.m-primary g.m-cluster text { fill: var(--primary-color); } +.m-graph.m-primary g.m-edge polygon, +.m-graph.m-primary g.m-edge path, +.m-graph.m-primary g.m-node ellipse, +.m-graph.m-primary g.m-node polygon, +.m-graph.m-primary g.m-node polyline, +.m-graph.m-primary g.m-cluster polygon { stroke: var(--primary-color); } +div.m-math.m-success svg, div.m-math svg g.m-success, div.m-math svg rect.m-success, +svg.m-math.m-success, svg.m-math g.m-success, svg.m-math rect.m-success, +div.m-plot svg .m-bar.m-success, +.m-graph.m-success g.m-edge polygon, +.m-graph.m-success g.m-node:not(.m-flat) ellipse, +.m-graph.m-success g.m-node:not(.m-flat) polygon, +.m-graph.m-success g.m-edge text, +.m-graph.m-success g.m-node.m-flat text, +.m-graph.m-success g.m-cluster text { fill: var(--success-color); } +.m-graph.m-success g.m-edge polygon, +.m-graph.m-success g.m-edge path, +.m-graph.m-success g.m-node ellipse, +.m-graph.m-success g.m-node polygon, +.m-graph.m-success g.m-node polyline, +.m-graph.m-success g.m-cluster polygon { stroke: var(--success-color); } +div.m-math.m-warning svg, div.m-math svg g.m-warning, div.m-math svg rect.m-warning, +svg.m-math.m-warning, svg.m-math g.m-warning, svg.m-math rect.m-warning, +div.m-plot svg .m-bar.m-warning, +.m-graph.m-warning g.m-edge polygon, +.m-graph.m-warning g.m-node:not(.m-flat) ellipse, +.m-graph.m-warning g.m-node:not(.m-flat) polygon, +.m-graph.m-warning g.m-edge text, +.m-graph.m-warning g.m-node.m-flat text, +.m-graph.m-warning g.m-cluster text { fill: var(--warning-color); } +.m-graph.m-warning g.m-edge polygon, +.m-graph.m-warning g.m-edge path, +.m-graph.m-warning g.m-node ellipse, +.m-graph.m-warning g.m-node polygon, +.m-graph.m-warning g.m-node polyline, +.m-graph.m-warning g.m-cluster polygon { stroke: var(--warning-color); } +div.m-math.m-danger svg, div.m-math svg g.m-danger, div.m-math svg rect.m-danger, +svg.m-math.m-danger, svg.m-math g.m-danger, svg.m-math rect.m-danger, +div.m-plot svg .m-bar.m-danger, +.m-graph.m-danger g.m-edge polygon, +.m-graph.m-danger g.m-node:not(.m-flat) ellipse, +.m-graph.m-danger g.m-node:not(.m-flat) polygon, +.m-graph.m-danger g.m-edge text, +.m-graph.m-danger g.m-node.m-flat text, +.m-graph.m-danger g.m-cluster text { fill: var(--danger-color); } +.m-graph.m-danger g.m-edge polygon, +.m-graph.m-danger g.m-edge path, +.m-graph.m-danger g.m-node ellipse, +.m-graph.m-danger g.m-node polygon, +.m-graph.m-danger g.m-node polyline, +.m-graph.m-danger g.m-cluster polygon { stroke: var(--danger-color); } +div.m-math.m-info svg, div.m-math svg g.m-info, div.m-math svg rect.m-info, +svg.m-math.m-info, svg.m-math g.m-info, svg.m-math rect.m-info, +div.m-plot svg .m-bar.m-info, +.m-graph.m-info g.m-edge polygon, +.m-graph.m-info g.m-node:not(.m-flat) ellipse, +.m-graph.m-info g.m-node:not(.m-flat) polygon, +.m-graph.m-info g.m-edge text, +.m-graph.m-info g.m-node.m-flat text, +.m-graph.m-info g.m-cluster text { fill: var(--info-color); } +.m-graph.m-info g.m-edge polygon, +.m-graph.m-info g.m-edge path, +.m-graph.m-info g.m-node ellipse, +.m-graph.m-info g.m-node polygon, +.m-graph.m-info g.m-node polyline, +.m-graph.m-info g.m-cluster polygon { stroke: var(--info-color); } +div.m-math.m-dim svg, div.m-math svg g.m-dim, div.m-math svg rect.m-dim, +svg.m-math.m-dim, svg.m-math g.m-dim, svg.m-math rect.m-dim, +div.m-plot svg .m-bar.m-dim, +.m-graph.m-dim g.m-edge polygon, +.m-graph.m-dim g.m-node:not(.m-flat) ellipse, +.m-graph.m-dim g.m-node:not(.m-flat) polygon, +.m-graph.m-dim g.m-edge text, +.m-graph.m-dim g.m-node.m-flat text, +.m-graph.m-dim g.m-cluster text { fill: var(--dim-color); } +.m-graph.m-dim g.m-edge polygon, +.m-graph.m-dim g.m-edge path, +.m-graph.m-dim g.m-node ellipse, +.m-graph.m-dim g.m-node polygon, +.m-graph.m-dim g.m-node polyline, +.m-graph.m-dim g.m-cluster polygon { stroke: var(--dim-color); } +.m-graph g.m-edge.m-default polygon, +.m-graph g.m-node.m-default:not(.m-flat) ellipse, +.m-graph g.m-node.m-default:not(.m-flat) polygon, +.m-graph g.m-edge.m-default text, +.m-graph g.m-node.m-default.m-flat text, +.m-graph g.m-cluster.m-default text { fill: var(--default-color); } +.m-graph g.m-edge.m-default polygon, +.m-graph g.m-edge.m-default path, +.m-graph g.m-node.m-default ellipse, +.m-graph g.m-node.m-default polygon, +.m-graph g.m-node.m-default polyline, +.m-graph g.m-cluster.m-default polygon { stroke: var(--default-color); } +.m-graph g.m-edge.m-primary polygon, +.m-graph g.m-node.m-primary:not(.m-flat) ellipse, +.m-graph g.m-node.m-primary:not(.m-flat) polygon, +.m-graph g.m-edge.m-primary text, +.m-graph g.m-node.m-primary.m-flat text, +.m-graph g.m-cluster.m-primary text { fill: var(--primary-color); } +.m-graph g.m-edge.m-primary polygon, +.m-graph g.m-edge.m-primary path, +.m-graph g.m-node.m-primary ellipse, +.m-graph g.m-node.m-primary polygon, +.m-graph g.m-node.m-primary polyline, +.m-graph g.m-cluster.m-primary polygon { stroke: var(--primary-color); } +.m-graph g.m-edge.m-success polygon, +.m-graph g.m-node.m-success:not(.m-flat) ellipse, +.m-graph g.m-node.m-success:not(.m-flat) polygon, +.m-graph g.m-edge.m-success text, +.m-graph g.m-node.m-success.m-flat text, +.m-graph g.m-cluster.m-success text { fill: var(--success-color); } +.m-graph g.m-edge.m-success polygon, +.m-graph g.m-edge.m-success path, +.m-graph g.m-node.m-success ellipse, +.m-graph g.m-node.m-success polygon, +.m-graph g.m-node.m-success polyline, +.m-graph g.m-cluster.m-success polygon { stroke: var(--success-color); } +.m-graph g.m-edge.m-warning polygon, +.m-graph g.m-node.m-warning:not(.m-flat) ellipse, +.m-graph g.m-node.m-warning:not(.m-flat) polygon, +.m-graph g.m-edge.m-warning text, +.m-graph g.m-node.m-warning.m-flat text, +.m-graph g.m-cluster.m-warning text { fill: var(--warning-color); } +.m-graph g.m-edge.m-warning polygon, +.m-graph g.m-edge.m-warning path, +.m-graph g.m-node.m-warning ellipse, +.m-graph g.m-node.m-warning polygon, +.m-graph g.m-node.m-warning polyline, +.m-graph g.m-cluster.m-warning polygon { stroke: var(--warning-color); } +.m-graph g.m-edge.m-danger polygon, +.m-graph g.m-node.m-danger:not(.m-flat) ellipse, +.m-graph g.m-node.m-danger:not(.m-flat) polygon, +.m-graph g.m-edge.m-danger text, +.m-graph g.m-node.m-danger.m-flat text, +.m-graph g.m-cluster.m-danger text { fill: var(--danger-color); } +.m-graph g.m-edge.m-danger polygon, +.m-graph g.m-edge.m-danger path, +.m-graph g.m-node.m-danger ellipse, +.m-graph g.m-node.m-danger polygon, +.m-graph g.m-node.m-danger polyline, +.m-graph g.m-cluster.m-danger polygon { stroke: var(--danger-color); } +.m-graph g.m-edge.m-info polygon, +.m-graph g.m-node.m-info:not(.m-flat) ellipse, +.m-graph g.m-node.m-info:not(.m-flat) polygon, +.m-graph g.m-edge.m-info text, +.m-graph g.m-node.m-info.m-flat text, +.m-graph g.m-cluster.m-info text { fill: var(--info-color); } +.m-graph g.m-edge.m-info polygon, +.m-graph g.m-edge.m-info path, +.m-graph g.m-node.m-info ellipse, +.m-graph g.m-node.m-info polygon, +.m-graph g.m-node.m-info polyline, +.m-graph g.m-cluster.m-info polygon { stroke: var(--info-color); } +.m-graph g.m-edge.m-dim polygon, +.m-graph g.m-node.m-dim:not(.m-flat) ellipse, +.m-graph g.m-node.m-dim:not(.m-flat) polygon, +.m-graph g.m-edge.m-dim text, +.m-graph g.m-node.m-dim.m-flat text, +.m-graph g.m-cluster.m-dim text { fill: var(--dim-color); } +.m-graph g.m-edge.m-dim polygon, +.m-graph g.m-edge.m-dim path, +.m-graph g.m-node.m-dim ellipse, +.m-graph g.m-node.m-dim polygon, +.m-graph g.m-node.m-dim polyline, +.m-graph g.m-cluster.m-dim polygon { stroke: var(--dim-color); } +p, ul, ol, dl, blockquote, pre, .m-code-figure, .m-console-figure, hr, .m-note, +.m-frame, .m-block, div.m-button, div.m-scroll, table.m-table, div.m-image, +img.m-image, svg.m-image, figure.m-figure, .m-imagegrid, div.m-math, +div.m-graph, div.m-plot { margin-bottom: 1rem; } +p:last-child, p.m-nopadb, ul:last-child, ul.m-nopadb, +ol:last-child, ol.m-nopadb, dl:last-child, dl.m-nopadb, +blockquote:last-child, blockquote.m-nopadb, pre:last-child, pre.m-nopadb, +.m-code-figure:last-child, .m-code-figure.m-nopadb, +.m-console-figure:last-child, .m-console-figure.m-nopadb, +hr:last-child, hr.m-nopadb, .m-note:last-child, .m-note.m-nopadb, +.m-frame:last-child, .m-frame.m-nopadb, .m-block:last-child, .m-block.m-nopadb, +div.m-button:last-child, div.m-button.m-nopadb, +div.m-scroll:last-child, div.m-scroll.m-nopadb, +table.m-table:last-child, table.m-table.m-nopadb, +img.m-image:last-child, img.m-image.m-nopadb, +svg.m-image:last-child, svg.m-image.m-nopadb, +div.m-image:last-child, div.m-image.m-nopadb, +figure.m-figure:last-child, figure.m-figure.m-nopadb, +.m-imagegrid:last-child, .m-imagegrid.m-nopadb, +div.m-math:last-child, div.m-math.m-nopadb, +div.m-graph:last-child, div.m-graph.m-nopadb, +div.m-plot:last-child, div.m-plot.m-nopadb { margin-bottom: 0; } +li > p:last-child, li > blockquote:last-child, li > pre:last-child, +li > .m-code-figure:last-child, li > .m-console-figure:last-child, +li > .m-note:last-child, li > .m-frame:last-child, li > .m-block:last-child, +li > div.m-button:last-child, li > div.m-scroll:last-child, li > table.m-table:last-child, +li > img.m-image:last-child, li > svg.m-image:last-child, li > div.m-image:last-child, +li > figure.m-figure:last-child, li > div.m-math:last-child, +li > div.m-graph:last-child, li > div.m-plot:last-child { margin-bottom: 1rem; } +li:last-child > p:last-child, li:last-child > p.m-nopadb, +li:last-child > blockquote:last-child, li:last-child > blockquote.m-nopadb, +li:last-child > pre:last-child, li:last-child > pre.m-nopadb, +li:last-child > .m-code-figure:last-child, li:last-child > .m-code-figure.m-nopadb, +li:last-child > .m-console-figure:last-child, li:last-child > .m-console-figure.m-nopadb, +li:last-child > .m-note:last-child, li:last-child > .m-note.m-nopadb, +li:last-child > .m-frame:last-child, li:last-child > .m-frame.m-nopadb, +li:last-child > .m-block:last-child, li:last-child > .m-block.m-nopadb, +li:last-child > div.m-button:last-child, li:last-child > div.m-button.m-nopadb, +li:last-child > div.m-scroll:last-child, li:last-child > div.m-scroll.m-nopadb, +li:last-child > table.m-table:last-child, li:last-child > table.m-table.m-nopadb, +li:last-child > img.m-image:last-child, li:last-child > img.m-image.m-nopadb, +li:last-child > svg.m-image:last-child, li:last-child > svg.m-image.m-nopadb, +li:last-child > div.m-image:last-child, li:last-child > div.m-image.m-nopadb, +li:last-child > figure.m-figure:last-child, li:last-child > figure.m-figure.m-nopadb, +li:last-child > div.m-math:last-child, li:last-child > div.m-math.m-nopadb, +li:last-child > div.m-graph:last-child, li:last-child > div.m-graph.m-nopadb, +li:last-child > div.m-plot:last-child, li:last-child > div.m-plot.m-nopadb { margin-bottom: 0; } +/*==== m-special.css =================================================================================================*/ +.m-special:not(.m-note, .m-button) a { color: var(--special-color); } +.m-special:not(.m-note, .m-button) a:hover, +.m-special:not(.m-note, .m-button) a:focus, +.m-special:not(.m-note, .m-button) a:active { color: var(--special-link-active-color); } +table.m-table td.m-special, +table.m-table th.m-special { padding-left: 0.4375rem; padding-right: 0.4375rem; border-left-width: 0.0625rem; } +table.m-table.m-big td.m-special, +table.m-table.m-big th.m-special { padding-left: 0.9375rem; padding-right: 0.9375rem; border-left-width: 0.0625rem; } +table.m-table tr.m-special td, +table.m-table td.m-special, +table.m-table tr.m-special th, +table.m-table th.m-special { border-color: var(--background-color); } +table.m-table tr.m-special pre, +table.m-table tr.m-special code, +table.m-table td.m-special pre, +table.m-table td.m-special code, +table.m-table th.m-special pre, +table.m-table th.m-special code { background-color: var(--code-note-background-color); } +.m-block.m-special { border-left-color: var(--special-color); } +.m-block.m-special h3, +.m-block.m-special h4, +.m-block.m-special h5, +.m-block.m-special h6, +.m-block.m-special h3 a, +.m-block.m-special h4 a, +.m-block.m-special h5 a, +.m-block.m-special h6 a, +.m-text.m-special, +.m-label.m-flat.m-special { color: var(--special-color); } +.m-block.m-special h3 a:hover, +.m-block.m-special h3 a:focus, +.m-block.m-special h3 a:active, +.m-block.m-special h4 a:hover, +.m-block.m-special h4 a:focus, +.m-block.m-special h4 a:active, +.m-block.m-special h5 a:hover, +.m-block.m-special h5 a:focus, +.m-block.m-special h5 a:active, +.m-block.m-special h6 a:hover, +.m-block.m-special h6 a:focus, +.m-block.m-special h6 a:active { color: var(--special-link-active-color); } +div.m-button.m-special a, +.m-label:not(.m-flat).m-special { background-color: var(--special-color); } +div.m-button.m-special a:hover, +div.m-button.m-special a:focus, +div.m-button.m-special a:active { background-color: var(--special-link-active-color); } +.m-note.m-special, +table.m-table tr.m-special td, +table.m-table td.m-special, +table.m-table tr.m-special th, +table.m-table th.m-special { background-color: var(--special-filled-background-color); color: var(--special-filled-color); } +.m-note.m-special a, +table.m-table tr.m-special td a, +table.m-table td.m-special a, +table.m-table tr.m-special th a, +table.m-table th.m-special a { color: var(--special-filled-link-color); } +.m-note.m-special a:hover, +table.m-table tr.m-special td a:hover, +table.m-table td.m-special a:hover, +table.m-table tr.m-special th a:hover, +table.m-table th.m-special a:hover, +.m-note.m-special a:focus, +table.m-table tr.m-special td a:focus, +table.m-table td.m-special a:focus, +table.m-table tr.m-special th a:focus, +table.m-table th.m-special a:focus, +.m-note.m-special a:active, +table.m-table tr.m-special td a:active, +table.m-table td.m-special a:active, +table.m-table tr.m-special th a:active, +table.m-table th.m-special a:active { color: var(--special-filled-link-active-color); } +figure.m-figure.m-special::before { border-color: var(--special-filled-background-color); } +figure.m-figure.m-special figcaption { color: var(--special-color); } +figure.m-figure.m-special figcaption .m-figure-description { color: var(--default-color); } +.m-math.m-special, +.m-math g.m-special, +.m-math rect.m-special, +div.m-plot svg .m-bar.m-special, +.m-graph.m-special g.m-edge polygon, +.m-graph.m-special g.m-node:not(.m-flat) ellipse, +.m-graph.m-special g.m-node:not(.m-flat) polygon, +.m-graph.m-special g.m-edge text, +.m-graph.m-special g.m-node.m-flat text, +.m-graph.m-special g.m-cluster text { fill: var(--special-color); } +.m-graph.m-special g.m-edge polygon, +.m-graph.m-special g.m-edge path, +.m-graph.m-special g.m-node ellipse, +.m-graph.m-special g.m-node polygon, +.m-graph.m-special g.m-node polyline, +.m-graph.m-special g.m-cluster polygon { stroke: var(--special-color); } +.m-graph g.m-edge.m-special polygon, +.m-graph g.m-node.m-special:not(.m-flat) ellipse, +.m-graph g.m-node.m-special:not(.m-flat) polygon, +.m-graph g.m-edge.m-special text, +.m-graph g.m-node.m-special.m-flat text, +.m-graph g.m-cluster.m-special text { fill: var(--special-color); } +.m-graph g.m-edge.m-special polygon, +.m-graph g.m-edge.m-special path, +.m-graph g.m-node.m-special ellipse, +.m-graph g.m-node.m-special polygon, +.m-graph g.m-node.m-special polyline, +.m-graph g.m-cluster.m-special polygon { stroke: var(--special-color); } +.m-container-inflatable section:target .m-note.m-info { border-color: var(--info-color); } +/*==== ../mcss/css/m-layout.css ======================================================================================*/ +body > header > nav { width: 100%; background-color: var(--header-background-color); min-height: 3rem; } +body > header > nav.m-navbar-landing, +body > header > nav.m-navbar-cover { background-color: transparent; position: relative; } +body > header > nav.m-navbar-landing { opacity: 0.8; } +body > header > nav.m-navbar-cover { background-color: var(--header-background-color-jumbo); opacity: 1; } +body > header > nav.m-navbar-landing:hover, +body > header > nav.m-navbar-cover:hover { background-color: var(--header-background-color-landing); opacity: 1; } +body> header > nav.m-navbar-landing:target, +body> header > nav.m-navbar-cover:target { background-color: var(--header-background-color); opacity: 1; } +body > header > nav.m-navbar-landing #m-navbar-brand.m-navbar-brand-hidden { visibility: hidden; } +body > header > nav.m-navbar-landing:target #m-navbar-brand.m-navbar-brand-hidden { visibility: visible; } +body > header > nav { margin-left: auto; margin-right: auto; color: var(--header-color); } +body > header > nav a { +text-decoration: var(--link-decoration-nav); +text-transform: var(--nav-menu-case); +display: inline-block; +vertical-align: middle; +line-height: 2.75rem; +color: var(--header-link-color); +} +body > header > nav #m-navbar-brand, body > header > nav a#m-navbar-show, body > header > nav a#m-navbar-hide { +font-weight: var(--heading-font-weight); +font-size: 1.125rem; +padding-left: 1rem; +padding-right: 1rem; +} +body > header > nav a#m-navbar-brand, body > header > nav #m-navbar-brand a { text-transform: var(--nav-brand-case); } +body > header > nav a#m-navbar-brand img, body > header > nav #m-navbar-brand a img { width: 1.75rem; height: 1.75rem; vertical-align: -22.5%; margin-right: 0.5rem; } +body > header > nav #m-navbar-brand a { padding-left: 0; padding-right: 0; } +body > header > nav #m-navbar-brand .m-thin { font-weight: normal; } +body > header > nav #m-navbar-brand .m-breadcrumb { color: var(--header-breadcrumb-color); } +body > header > nav a#m-navbar-show::before, body > header > nav a#m-navbar-hide::before { content:'\2630'; } +body > header > nav #m-navbar-collapse { padding-bottom: 1rem; } +body > header > nav #m-navbar-collapse li { border-style: solid; border-color: transparent; border-width: 0 0 0 0.25rem; margin-left: -1rem; } +body > header > nav #m-navbar-collapse li a { +border-style: solid; +border-color: transparent; +line-height: 1.5rem; +margin-left: -0.25rem; +padding-left: 0.75rem; +border-width: 0 0 0 0.25rem; +width: 100%; +} +body > header > nav #m-navbar-collapse li a#m-navbar-current { color: var(--header-link-current-color); border-color: var(--header-link-current-color); } +body > header > nav ol { list-style-type: none; margin: 0; } +body > header > nav ol ol { padding-left: 1.5rem; } +body > header > nav .m-row > [class*='m-col-'] { padding-top: 0; padding-bottom: 0; } +body > header > nav a:hover, body > header > nav a:focus, body > header > nav a:active { color: var(--header-link-active-color); } +body > header > nav #m-navbar-collapse li:hover { border-color: var(--header-link-active-color); } +body > header > nav #m-navbar-collapse li a:hover, +body > header > nav #m-navbar-collapse li a:focus, +body > header > nav #m-navbar-collapse li a:active { +border-color: var(--header-link-active-color); +background-color: var(--header-link-active-background-color); +} +body > header > nav.m-navbar-landing #m-navbar-collapse li a:hover, +body > header > nav.m-navbar-cover #m-navbar-collapse li a:hover, +body > header > nav.m-navbar-landing #m-navbar-collapse li a:focus, +body > header > nav.m-navbar-cover #m-navbar-collapse li a:focus, +body > header > nav.m-navbar-landing #m-navbar-collapse li a:active, +body > header > nav.m-navbar-cover #m-navbar-collapse li a:active { background-color: var(--header-link-active-background-color-semi); } +body > header > nav #m-navbar-hide { display: none; } +body > header > nav:target #m-navbar-collapse { display: block; } +body > header > nav:target #m-navbar-show { display: none; } +body > header > nav:target #m-navbar-hide { display: inline-block; } +@media screen and (min-width: 768px) { +body > header > nav #m-navbar-show, body > header > nav #m-navbar-hide, +body > header > nav:target #m-navbar-show, body > header > nav:target #m-navbar-hide { display: none; } +body > header > nav #m-navbar-collapse li a { line-height: 2.75rem; } +body > header > nav a, body > header > nav #m-navbar-collapse li a { margin-left: 0; padding-left: 1rem; padding-right: 1rem; white-space: nowrap; } +body > header > nav #m-navbar-collapse { padding-bottom: 0; } +body > header > nav #m-navbar-collapse li ol { background-color: var(--header-background-color); } +body > header > nav #m-navbar-collapse ol ol li { margin-left: 0; padding-left: 0; border-left-width: 0; } +body > header > nav #m-navbar-collapse ol ol li a { padding-left: 0.75rem; } +body > header > nav #m-navbar-collapse > .m-row > ol > li { margin-left: 0; border-left-width: 0; } +body > header > nav #m-navbar-collapse > .m-row > ol > li > a { border-width: var(--header-border-width); } +body > header > nav #m-navbar-collapse ol { padding-left: 0; padding-right: 0; } +body > header > nav #m-navbar-collapse > .m-row > ol, body > header > nav #m-navbar-collapse > .m-row > ol > li { float: left; } +body > header > nav #m-navbar-collapse ol ol { z-index: 99999; position: absolute; visibility: hidden; } +body > header > nav #m-navbar-collapse li:hover ol { visibility: visible; } +} +body > footer { width: 100%; } +body > footer > nav { +padding-top: 1rem; +padding-bottom: 1rem; +font-size: var(--footer-font-size); +text-align: center; +color: var(--footer-color); +background-color: var(--footer-background-color); +} +body > footer > nav h3, body > footer > nav h3 a { text-transform: var(--nav-heading-case); font-weight: normal; } +body > footer > nav ul { list-style-type: none; padding: 0; margin: 0; } +body > footer > nav a { +text-decoration: var(--link-decoration-nav); +text-transform: var(--nav-menu-case); +color: var(--footer-link-color); +} +body > footer > nav a:hover, body > footer > nav a:focus, body > footer > nav a:active { color: var(--footer-link-active-color); } +body > main { padding-top: 1rem; padding-bottom: 1rem; } +article h1 { font-size: 1.75rem; } +article h1 .m-breadcrumb { color: var(--dim-color); font-weight: normal; } +article h1 .m-breadcrumb a { color: var(--article-heading-color); } +article h1 .m-breadcrumb a:hover, article h1 a:focus, article h1 a:active { color: var(--article-heading-active-color); } +article > header h1 { font-size: 2rem; margin-bottom: 0.5rem; } +article h1 a, article > header h1, article > header h1 a, +article section > h2, article section > h2 a, +article section > h3, article section > h3 a, +article section > h4, article section > h4 a, +article section > h5, article section > h5 a, +article section > h6, article section > h6 a { color: var(--article-heading-color); } +article h1 a:hover, article > header h1 a:hover, article > header h1 a:focus, article > header h1 a:active, +article section > h2 a:hover, article section > h2 a:focus, article section > h2 a:active, +article section > h3 a:hover, article section > h3 a:focus, article section > h3 a:active, +article section > h4 a:hover, article section > h4 a:focus, article section > h4 a:active, +article section > h5 a:hover, article section > h5 a:focus, article section > h5 a:active, +article section > h6 a:hover, article section > h6 a:focus, article section > h6 a:active { color: var(--article-heading-active-color); } +article > header .m-date { +display: block; +width: 2.5rem; +float: left; +text-align: center; +line-height: 95%; +font-size: 0.75rem; +font-weight: normal; +white-space: nowrap; +border-right-style: solid; +border-right-width: 0.125rem; +border-color: var(--article-heading-color); +padding-right: 0.75rem; +margin-top: -0.1rem; +margin-right: 0.75rem; +margin-bottom: 0.25rem; +} +article > header .m-date-day { display: block; font-weight: bold; padding-top: 0.2rem; padding-bottom: 0.15rem; font-size: 1.25rem; } +article > header p { color: var(--article-header-color); font-size: 1.125rem; } +article > header h1::after { content: " "; clear: both; display: table; } +article > footer { color: var(--article-footer-color); } +article > footer p { font-style: italic; font-size: 0.85rem; text-indent: 0; } +article section:target { +margin-left: -1.0rem; +border-left-style: solid; +border-left-width: 0.25rem; +padding-left: 0.75rem; +border-color: var(--article-heading-color); +} +article h1 a, article > header h1 a, article section > h2 a, article section > h3 a, +article section > h4 a, article section > h5 a, article section > h6 a { text-decoration: var(--link-decoration-heading); } +#m-landing-image, #m-cover-image, article#m-jumbo > header #m-jumbo-image { +background-size: cover; +background-color: var(--cover-image-background-color); +background-position: center center; +background-repeat: no-repeat; +margin-top: -4rem; +padding-top: 5rem; +} +#m-landing-image { color: #ffffff; } +#m-cover-image { height: 30rem; margin-bottom: -26rem; } +#m-landing-cover h1 { +font-size: 2.8rem; +margin-top: -0.5rem; +padding-left: var(--paragraph-indent); +padding-bottom: 1rem; +text-transform: var(--landing-header-case); +} +#m-landing-cover { padding-bottom: 10rem; margin-bottom: -6rem; } +article#m-jumbo { margin-top: -1rem; } +#m-landing-cover, #m-cover-image > div, article#m-jumbo > header #m-jumbo-cover { +background: linear-gradient(transparent 0%, transparent 50%, var(--background-color) 100%); +width: 100%; +height: 100%; +} +article#m-jumbo > header h1, article#m-jumbo > header h2 { text-align: center; font-weight: bold; } +article#m-jumbo > header a { text-decoration: none; } +article#m-jumbo > header #m-jumbo-cover { padding-bottom: 5rem; } +article#m-jumbo > header #m-jumbo-image { font-size: 2vmin; margin-bottom: -3rem; } +article#m-jumbo > header h1 { font-size: 8vmin; } +article#m-jumbo > header h2 { font-size: 3vmin; } +@media screen and (max-height: 640px) , screen and (max-width: 640px) { +article#m-jumbo > header h1 { font-size: 3rem; } +article#m-jumbo > header #m-jumbo-image, article#m-jumbo > header h2 { font-size: 1rem; } +} +article#m-jumbo > header, article#m-jumbo > header h1, article#m-jumbo > header a { color: #ffffff; } +article#m-jumbo > header a:hover, article#m-jumbo > header a:focus, article#m-jumbo > header a:active { color: #f0f0f0; } +article#m-jumbo.m-inverted > header, article#m-jumbo.m-inverted > header h1, article#m-jumbo.m-inverted > header a { color: #000000; } +article#m-jumbo.m-inverted > header a:hover, article#m-jumbo.m-inverted > header a:focus, article#m-jumbo.m-inverted > header a:active { color: #0f0f0f; } +.m-landing-news h3 a { color: var(--color); text-decoration: none; text-transform: var(--nav-heading-case); } +.m-landing-news h3 a:hover, .m-landing-news h3 a:hover, .m-landing-news h3 a:focus, .m-landing-news h3 a:active { color: var(--article-heading-color); } +.m-landing-news time { display: inline-block; margin-left: 1rem; float: right; } +.m-article-pagination { text-align: center; padding: 1rem; } +nav.m-navpanel { text-align: center; } +nav.m-navpanel h3 { text-transform: var(--nav-heading-case); font-weight: normal; } +nav.m-navpanel ol { text-transform: var(--nav-categories-case); } +nav.m-navpanel ol, nav.m-navpanel ul { list-style-type: none; padding: 0; } +nav.m-navpanel a { color: var(--navpanel-link-color); text-decoration: var(--link-decoration-nav); } +nav.m-navpanel a:hover, nav.m-navpanel a:focus, nav.m-navpanel a:active { color: var(--navpanel-link-active-color); } +ul.m-tagcloud li { display: inline; } +ul.m-tagcloud li.m-tag-1 { font-size: 0.75rem; } +ul.m-tagcloud li.m-tag-2 { font-size: 0.825rem; } +ul.m-tagcloud li.m-tag-3 { font-size: 1rem; } +ul.m-tagcloud li.m-tag-4 { font-size: 1.25rem; } +ul.m-tagcloud li.m-tag-5 { font-size: 1.5rem; } +article section:target figure.m-code-figure, article section:target figure.m-console-figure { z-index: 1; } +article, article > header, article section { margin-bottom: 1rem; } +article:last-child, article section:last-child { margin-bottom: 0; } +.m-container-inflatable section:target > .m-note, +.m-container-inflatable section:target > .m-frame, +.m-container-inflatable section:target > .m-block, +.m-container-inflatable section:target > pre, +.m-container-inflatable section:target > .m-code-figure > pre:first-child, +.m-container-inflatable section:target > .m-console-figure > pre:first-child, +.m-container-inflatable section:target section > .m-note, +.m-container-inflatable section:target section > .m-frame, +.m-container-inflatable section:target section > .m-block, +.m-container-inflatable section:target section > pre, +.m-container-inflatable section:target section > .m-code-figure > pre:first-child, +.m-container-inflatable section:target section > .m-console-figure > pre:first-child, +.m-container-inflatable section:target [class*='m-center-'] > .m-note, +.m-container-inflatable section:target [class*='m-center-'] > .m-frame, +.m-container-inflatable section:target [class*='m-center-'] > .m-block, +.m-container-inflatable section:target [class*='m-center-'] > pre, +.m-container-inflatable section:target [class*='m-center-'] > .m-code-figure > pre:first-child, +.m-container-inflatable section:target [class*='m-center-'] > .m-console-figure > pre:first-child, +.m-container-inflatable section:target [class*='m-left-'] > .m-note, +.m-container-inflatable section:target [class*='m-left-'] > .m-frame, +.m-container-inflatable section:target [class*='m-left-'] > .m-block, +.m-container-inflatable section:target [class*='m-left-'] > pre, +.m-container-inflatable section:target [class*='m-left-'] > .m-code-figure > pre:first-child, +.m-container-inflatable section:target [class*='m-left-'] > .m-console-figure > pre:first-child, +.m-container-inflatable section:target [class*='m-right-'] > .m-note, +.m-container-inflatable section:target [class*='m-right-'] > .m-frame, +.m-container-inflatable section:target [class*='m-right-'] > .m-block, +.m-container-inflatable section:target [class*='m-right-'] > pre, +.m-container-inflatable section:target [class*='m-right-'] > .m-code-figure > pre:first-child, +.m-container-inflatable section:target [class*='m-right-'] > .m-console-figure > pre:first-child, +.m-container-inflatable section:target .m-container-inflate > .m-note, +.m-container-inflatable section:target .m-container-inflate > .m-frame, +.m-container-inflatable section:target .m-container-inflate > .m-block, +.m-container-inflatable section:target .m-container-inflate > pre, +.m-container-inflatable section:target .m-container-inflate > .m-code-figure > pre:first-child, +.m-container-inflatable section:target .m-container-inflate > .m-console-figure > pre:first-child { +margin-left: -1.0rem; +border-left-style: solid; +border-left-width: 0.25rem; +border-top-left-radius: 0; +border-bottom-left-radius: 0; +padding-left: 0.75rem; +} +.m-container-inflatable section:target > .m-code-figure::before, +.m-container-inflatable section:target > .m-console-figure::before, +.m-container-inflatable section:target section > .m-code-figure::before, +.m-container-inflatable section:target section > .m-console-figure::before, +.m-container-inflatable section:target [class*='m-center-'] > .m-code-figure::before, +.m-container-inflatable section:target [class*='m-center-'] > .m-console-figure::before, +.m-container-inflatable section:target [class*='m-left-'] > .m-code-figure::before, +.m-container-inflatable section:target [class*='m-left-'] > .m-console-figure::before, +.m-container-inflatable section:target [class*='m-right-'] > .m-code-figure::before, +.m-container-inflatable section:target [class*='m-right-'] > .m-console-figure::before, +.m-container-inflatable section:target .m-container-inflate > .m-code-figure::before, +.m-container-inflatable section:target .m-container-inflate > .m-console-figure::before { border-top-left-radius: 0; border-bottom-left-radius: 0; border-left-width: 0.25rem; } +.m-container-inflatable section:target > .m-code-figure > pre.m-nopad, +.m-container-inflatable section:target > .m-console-figure > pre.m-nopad { margin-left: -0.75rem; padding-left: -0.75rem; } +@media screen and (min-width: 576px) { +.m-container-inflatable section:target .m-center-s > .m-note, +.m-container-inflatable section:target .m-center-s > pre, +.m-container-inflatable section:target .m-center-s > figure.m-code-figure > pre:first-child, +.m-container-inflatable section:target .m-center-s > figure.m-console-figure > pre:first-child, +.m-container-inflatable section:target .m-right-s > figure.m-code-figure > pre:first-child, +.m-container-inflatable section:target .m-right-s > figure.m-console-figure > pre:first-child { +border-left-width: 0; +border-top-left-radius: var(--border-radius); +border-bottom-left-radius: var(--border-radius); +padding-left: 1rem; +} +.m-container-inflatable section:target .m-center-s > .m-block, +.m-container-inflatable section:target .m-right-s > .m-block { border-top-left-radius: var(--border-radius); border-bottom-left-radius: var(--border-radius); } +.m-container-inflatable section:target .m-center-s > .m-frame, +.m-container-inflatable section:target .m-right-s > .m-frame { +border-top-left-radius: var(--border-radius); +border-bottom-left-radius: var(--border-radius); +border-left-width: 0.125rem; +padding-left: 0.875rem; +} +.m-container-inflatable section:target .m-right-s > .m-block, +.m-container-inflatable section:target .m-right-s > .m-frame { margin-left: 0; } +.m-container-inflatable section:target .m-right-s > .m-note, +.m-container-inflatable section:target .m-right-s > pre { +border-top-left-radius: var(--border-radius); +border-bottom-left-radius: var(--border-radius); +margin-left: 0; +border-left-width: 0; +padding-left: 1rem; +} +.m-container-inflatable section:target .m-center-s > figure.m-code-figure::before, +.m-container-inflatable section:target .m-center-s > figure.m-console-figure::before, +.m-container-inflatable section:target .m-right-s > figure.m-code-figure::before, +.m-container-inflatable section:target .m-right-s > figure.m-console-figure::before { +border-top-left-radius: var(--border-radius); +border-bottom-left-radius: var(--border-radius); +border-left-width: 0.125rem; +} +} +@media screen and (min-width: 768px) { +.m-container-inflatable section:target .m-center-m > .m-note, +.m-container-inflatable section:target .m-center-m > pre, +.m-container-inflatable section:target .m-center-m > figure.m-code-figure > pre:first-child, +.m-container-inflatable section:target .m-center-m > figure.m-console-figure > pre:first-child, +.m-container-inflatable section:target .m-right-m > figure.m-code-figure > pre:first-child, +.m-container-inflatable section:target .m-right-m > figure.m-console-figure > pre:first-child { +border-left-width: 0; +border-top-left-radius: var(--border-radius); +border-bottom-left-radius: var(--border-radius); +padding-left: 1rem; +} +.m-container-inflatable section:target .m-center-m > .m-block, +.m-container-inflatable section:target .m-right-m > .m-block { border-top-left-radius: var(--border-radius); border-bottom-left-radius: var(--border-radius); } +.m-container-inflatable section:target .m-center-m > .m-frame, +.m-container-inflatable section:target .m-right-m > .m-frame { +border-top-left-radius: var(--border-radius); +border-bottom-left-radius: var(--border-radius); +border-left-width: 0.125rem; +padding-left: 0.875rem; +} +.m-container-inflatable section:target .m-right-m > .m-block, +.m-container-inflatable section:target .m-right-m > .m-frame { margin-left: 0; } +.m-container-inflatable section:target .m-right-m > .m-note, +.m-container-inflatable section:target .m-right-m > pre { +border-top-left-radius: var(--border-radius); +border-bottom-left-radius: var(--border-radius); +margin-left: 0; +border-left-width: 0; +padding-left: 1rem; +} +.m-container-inflatable section:target .m-center-m > figure.m-code-figure::before, +.m-container-inflatable section:target .m-center-m > figure.m-console-figure::before, +.m-container-inflatable section:target .m-right-m > figure.m-code-figure::before, +.m-container-inflatable section:target .m-right-m > figure.m-console-figure::before { +border-top-left-radius: var(--border-radius); +border-bottom-left-radius: var(--border-radius); +border-left-width: 0.125rem; +} +} +@media screen and (min-width: 992px) { +.m-container-inflatable section:target .m-center-l > .m-note, +.m-container-inflatable section:target .m-center-l > pre, +.m-container-inflatable section:target .m-center-l > figure.m-code-figure > pre:first-child, +.m-container-inflatable section:target .m-center-l > figure.m-console-figure > pre:first-child, +.m-container-inflatable section:target .m-right-l > figure.m-code-figure > pre:first-child, +.m-container-inflatable section:target .m-right-l > figure.m-console-figure > pre:first-child { +border-left-width: 0; +border-top-left-radius: var(--border-radius); +border-bottom-left-radius: var(--border-radius); +padding-left: 1rem; +} +.m-container-inflatable section:target .m-center-l > .m-block, +.m-container-inflatable section:target .m-right-l > .m-block { border-top-left-radius: var(--border-radius); border-bottom-left-radius: var(--border-radius); } +.m-container-inflatable section:target .m-center-l > .m-frame, +.m-container-inflatable section:target .m-right-l > .m-frame { +border-top-left-radius: var(--border-radius); +border-bottom-left-radius: var(--border-radius); +border-left-width: 0.125rem; +padding-left: 0.875rem; +} +.m-container-inflatable section:target .m-right-l > .m-block, +.m-container-inflatable section:target .m-right-l > .m-frame { margin-left: 0; } +.m-container-inflatable section:target .m-right-l > .m-note, +.m-container-inflatable section:target .m-right-l > pre { +border-top-left-radius: var(--border-radius); +border-bottom-left-radius: var(--border-radius); +margin-left: 0; +border-left-width: 0; +padding-left: 1rem; +} +.m-container-inflatable section:target .m-center-l > figure.m-code-figure::before, +.m-container-inflatable section:target .m-center-l > figure.m-console-figure::before, +.m-container-inflatable section:target .m-right-l > figure.m-code-figure::before, +.m-container-inflatable section:target .m-right-l > figure.m-console-figure::before { +border-top-left-radius: var(--border-radius); +border-bottom-left-radius: var(--border-radius); +border-left-width: 0.125rem; +} +} +.m-container-inflatable section:target > figure.m-code-figure::before, +.m-container-inflatable section:target > figure.m-console-figure::before, +.m-container-inflatable section:target section > figure.m-code-figure::before, +.m-container-inflatable section:target section > figure.m-console-figure::before, +.m-container-inflatable section:target [class*='m-center-'] > figure.m-code-figure::before, +.m-container-inflatable section:target [class*='m-center-'] > figure.m-console-figure::before, +.m-container-inflatable section:target [class*='m-left-'] > figure.m-code-figure::before, +.m-container-inflatable section:target [class*='m-left-'] > figure.m-console-figure::before, +.m-container-inflatable section:target [class*='m-right-'] > figure.m-code-figure::before, +.m-container-inflatable section:target [class*='m-right-'] > figure.m-console-figure::before, +.m-container-inflatable section:target .m-container-inflatable > figure.m-code-figure::before, +.m-container-inflatable section:target .m-container-inflatable > figure.m-console-figure::before { border-left-color: var(--line-color); } +@media screen and (min-width: 576px) { +.m-container-inflatable section:target .m-center-s > figure.m-code-figure::before, +.m-container-inflatable section:target .m-right-s > figure.m-code-figure::before { border-color: var(--code-background-color); } +.m-container-inflatable section:target .m-center-s > figure.m-console-figure::before, +.m-container-inflatable section:target .m-right-s > figure.m-console-figure::before { border-color: var(--console-background-color); } +} +@media screen and (min-width: 768px) { +.m-container-inflatable section:target .m-center-m > figure.m-code-figure::before, +.m-container-inflatable section:target .m-right-m > figure.m-code-figure::before { border-color: var(--code-background-color); } +.m-container-inflatable section:target .m-center-m > figure.m-console-figure::before, +.m-container-inflatable section:target .m-right-m > figure.m-console-figure::before { border-color: var(--console-background-color); } +} +@media screen and (min-width: 992px) { +.m-container-inflatable section:target .m-center-l > figure.m-code-figure::before, +.m-container-inflatable section:target .m-right-l > figure.m-code-figure::before { border-color: var(--code-background-color); } +.m-container-inflatable section:target .m-center-l > figure.m-console-figure::before, +.m-container-inflatable section:target .m-right-l > figure.m-console-figure::before { border-color: var(--console-background-color); } +} +.m-container-inflatable section:target pre, +.m-container-inflatable section:target figure.m-code-figure > pre:first-child, +.m-container-inflatable section:target figure.m-console-figure > pre:first-child { border-color: var(--line-color); } +.m-container-inflatable section:target .m-note.m-default { border-color: var(--line-color); } +.m-container-inflatable section:target .m-note.m-primary { border-color: var(--primary-color); } +.m-container-inflatable section:target .m-note.m-success { border-color: var(--success-color); } +.m-container-inflatable section:target .m-note.m-warning { border-color: var(--warning-color); } +.m-container-inflatable section:target .m-note.m-danger { border-color: var(--danger-color); } +.m-container-inflatable section:target .m-note.m-info { border-color: var(--info-color); } +.m-container-inflatable section:target .m-note.m-dim { border-color: var(--dim-color); } +/*==== poxy-pygments.css =============================================================================================*/ +.m-code .hll { background-color: #34424d } +.m-code .c { color: var(--code-color-comments); } +.m-code .n { color: var(--code-color-identifiers); } +.m-code .o { color: var(--code-color-operators); } +.m-code .p { color: var(--code-color-punctuation); } +.m-code .ch { color: var(--code-color-comments); } +.m-code .cm { color: var(--code-color-comments); } +.m-code .cp { color: var(--code-color-preprocessor); } +.m-code .cpf { color: var(--code-color-strings); } +.m-code .c1 { color: var(--code-color-comments); } +.m-code .cs { color: var(--code-color-comments); } +.m-code .gd { color: #cd3431 } +.m-code .ge { color: #e6e6e6; font-style: italic } +.m-code .gh { color: #ffffff; font-weight: bold } +.m-code .gi { color: #3bd267 } +.m-code .gs { color: #e6e6e6; font-weight: bold } +.m-code .gu { color: #5b9dd9 } +.m-code .k { color: var(--code-color-keywords); } +.m-code .kc { color: var(--code-color-keywords); } +.m-code .kd { color: var(--code-color-keywords); } +.m-code .kn { color: var(--code-color-keywords); } +.m-code .kp { color: var(--code-color-keywords); } +.m-code .kr { color: var(--code-color-keywords); } +.m-code .kt { color: var(--code-color-keywords); } +.m-code .m { color: var(--code-color-numbers); } +.m-code .s { color: var(--code-color-strings); } +.m-code .na { color: var(--code-color-identifiers); } +.m-code .nb { color: var(--code-color-functions); } +.m-code .nc { color: var(--code-color-typenames); } +.m-code .no { color: var(--code-color-identifiers); } +.m-code .nd { color: var(--code-color-identifiers); } +.m-code .ni { color: var(--code-color-identifiers); } +.m-code .ne { color: var(--code-color-typenames); } +.m-code .nf { color: var(--code-color-functions); } +.m-code .nl { color: var(--code-color-identifiers); } +.m-code .nn { color: var(--code-color-namespaces); } +.m-code .nx { color: var(--code-color-identifiers); } +.m-code .py { color: var(--code-color-identifiers); } +.m-code .nt { color: var(--code-color-identifiers); } +.m-code .nv { color: var(--code-color-identifiers); } +.m-code .ow { color: var(--code-color-operators); } +.m-code .mb { color: var(--code-color-numbers); } +.m-code .mf { color: var(--code-color-numbers); } +.m-code .mh { color: var(--code-color-numbers); } +.m-code .mi { color: var(--code-color-numbers); } +.m-code .mo { color: var(--code-color-numbers); } +.m-code .sa { color: var(--code-color-strings); } +.m-code .sb { color: var(--code-color-strings); } +.m-code .sc { color: var(--code-color-strings); } +.m-code .dl { color: var(--code-color-strings); } +.m-code .sd { color: var(--code-color-strings); } +.m-code .s2 { color: var(--code-color-strings); } +.m-code .se { color: var(--code-color-escapes); } +.m-code .sh { color: var(--code-color-strings); } +.m-code .si { color: #a5c9ea } +.m-code .sx { color: var(--code-color-strings); } +.m-code .sr { color: var(--code-color-strings); } +.m-code .s1 { color: var(--code-color-strings); } +.m-code .ss { color: var(--code-color-strings); } +.m-code .bp { color: var(--code-color-functions); } +.m-code .fm { color: var(--code-color-macros); } +.m-code .vc { color: var(--code-color-identifiers); } +.m-code .vg { color: var(--code-color-identifiers); } +.m-code .vi { color: var(--code-color-identifiers); } +.m-code .vm { color: var(--code-color-identifiers); } +.m-code .il { color: var(--code-color-numbers); } +.m-console .hll { background-color: #ffffcc } +.m-console .g-AnsiBackgroundBlack { background-color: #232627 } +.m-console .g-AnsiBackgroundBlue { background-color: #1d99f3 } +.m-console .g-AnsiBackgroundBrightBlack { background-color: #7f8c8d } +.m-console .g-AnsiBackgroundBrightBlue { background-color: #3daee9 } +.m-console .g-AnsiBackgroundBrightCyan { background-color: #16a085 } +.m-console .g-AnsiBackgroundBrightGreen { background-color: #1cdc9a } +.m-console .g-AnsiBackgroundBrightMagenta { background-color: #8e44ad } +.m-console .g-AnsiBackgroundBrightRed { background-color: #c0392b } +.m-console .g-AnsiBackgroundBrightWhite { background-color: #ffffff } +.m-console .g-AnsiBackgroundBrightYellow { background-color: #fdbc4b } +.m-console .g-AnsiBackgroundCyan { background-color: #1abc9c } +.m-console .g-AnsiBackgroundGreen { background-color: #11d116 } +.m-console .g-AnsiBackgroundMagenta { background-color: #9b59b6 } +.m-console .g-AnsiBackgroundRed { background-color: #ed1515 } +.m-console .g-AnsiBackgroundWhite { background-color: #fcfcfc } +.m-console .g-AnsiBackgroundYellow { background-color: #f67400 } +.m-console .g-AnsiBlack { color: #232627 } +.m-console .g-AnsiBlue { color: #1d99f3 } +.m-console .g-AnsiBrightBlack { color: #7f8c8d; font-weight: bold } +.m-console .g-AnsiBrightBlue { color: #3daee9; font-weight: bold } +.m-console .g-AnsiBrightCyan { color: #16a085; font-weight: bold } +.m-console .g-AnsiBrightDefault { color: #ffffff; font-weight: bold } +.m-console .g-AnsiBrightGreen { color: #1cdc9a; font-weight: bold } +.m-console .g-AnsiBrightMagenta { color: #8e44ad; font-weight: bold } +.m-console .g-AnsiBrightRed { color: #c0392b; font-weight: bold } +.m-console .g-AnsiBrightWhite { color: #ffffff; font-weight: bold } +.m-console .g-AnsiBrightYellow { color: #fdbc4b; font-weight: bold } +.m-console .g-AnsiCyan { color: #1abc9c } +.m-console .g-AnsiGreen { color: #11d116 } +.m-console .g-AnsiMagenta { color: #9b59b6 } +.m-console .g-AnsiRed { color: #ed1515 } +.m-console .g-AnsiWhite { color: #fcfcfc } +.m-console .g-AnsiYellow { color: #f67400 } +.m-console .go { color: var(--console-color); } +.m-console .gp { color: #16a085; font-weight: bold } +.m-console .w { color: var(--console-color); } +/*==== ../mcss/css/m-documentation.css ===============================================================================*/ +a.m-doc, a.m-doc-self, a.m-doc-external, +ul.m-doc li.m-doc-expansible > a:first-child, ul.m-doc li.m-doc-collapsible > a:first-child, +.m-code.m-inverted.m-doc-include > a { text-decoration: none; } +a.m-doc, a.m-doc-self { font-weight: bold; } +.m-thin a.m-doc, .m-thin a.m-doc-self { font-weight: normal; } +ul.m-doc li.m-doc-expansible > a:first-child, +ul.m-doc li.m-doc-collapsible > a:first-child, +ul.m-doc li.m-doc-expansible > a:first-child:hover, +ul.m-doc li.m-doc-expansible > a:first-child:focus, +ul.m-doc li.m-doc-expansible > a:first-child:active, +ul.m-doc li.m-doc-collapsible > a:first-child:hover, +ul.m-doc li.m-doc-collapsible > a:first-child:focus, +ul.m-doc li.m-doc-collapsible > a:first-child:active { color: var(--color); } +a.m-doc-self, +ul.m-doc li.m-doc-expansible > a:first-child::before, +ul.m-doc li.m-doc-collapsible > a:first-child::before { color: var(--article-heading-color); } +a.m-doc-self:hover, a.m-doc-self:focus, a.m-doc-self:active, +ul.m-doc li.m-doc-expansible > a:first-child:hover::before, +ul.m-doc li.m-doc-expansible > a:first-child:focus::before, +ul.m-doc li.m-doc-expansible > a:first-child:active::before, +ul.m-doc li.m-doc-collapsible > a:first-child:hover::before, +ul.m-doc li.m-doc-collapsible > a:first-child:focus::before, +ul.m-doc li.m-doc-collapsible > a:first-child:active::before { color: var(--article-heading-active-color); } +h3 a.m-doc-external { font-weight: normal; } +span.m-doc-wrap-bumper { margin-right: -1rem; } +span.m-doc-wrap { +margin-left: 1rem; +display: inline-block; +vertical-align: text-top; +white-space: pre-line; +max-width: 100%; +} +dl.m-doc dd { margin-bottom: 0.5rem; } +dl.m-doc dd { margin-left: 0; padding-left: 2.5rem; } +dl.m-doc dt:target, dl.m-doc dt:target + dd { +margin-left: -1.0rem; +border-left-style: solid; +border-left-width: 0.25rem; +border-color: var(--article-heading-color); +} +dl.m-doc dt:target { padding-left: 0.75rem; } +dl.m-doc dt:target + dd { padding-left: 3.25rem; } +ul.m-doc { +list-style: none; +margin-left: 1.0375rem; +padding-left: 0.9rem; +border-left-color: var(--line-color); +border-left-width: 0.0625rem; +border-left-style: solid; +} +ul.m-doc li { text-indent: -1rem; padding-left: 1rem; } +ul.m-doc li.m-doc-expansible > ul { display: none; } +ul.m-doc li.m-doc-expansible, ul.m-doc li.m-doc-collapsible { padding-left: 0.6rem; } +ul.m-doc li.m-doc-expansible > ul.m-doc, ul.m-doc li.m-doc-collapsible > ul.m-doc { margin-left: 0.5rem; } +ul.m-doc li.m-doc-expansible > a:first-child::before, ul.m-doc li.m-doc-collapsible > a:first-child::before { background-color: var(--background-color); display: inline-block; width: 0.4rem; font-weight: bold; } +ul.m-doc li.m-doc-expansible > a:first-child::before { content: '⊕'; } +ul.m-doc li.m-doc-collapsible > a:first-child::before { content: '⊖'; } +h1 .m-doc-template, h1 .m-doc-include { font-size: 1.3rem; font-weight: normal; } +h1 .m-doc-include:last-child { margin-bottom: -0.5rem; } +h3 .m-doc-template, h3 .m-doc-include { font-size: 1rem; font-weight: normal; } +.m-doc-template, dl.m-doc dd, ul.m-doc li > span.m-doc { color: var(--dim-color); } +dl.m-doc dd svg.m-math, ul.m-doc li > span.m-doc svg.m-math { fill: var(--dim-color); } +.m-doc-template a, dl.m-doc dd a, ul.m-doc li > span.m-doc a { color: var(--dim-link-color); } +.m-doc-template a:hover, .m-doc-template a:focus, .m-doc-template a:active, +dl.m-doc dd a:hover, dl.m-doc dd a:focus, dl.m-doc dd a:active, +ul.m-doc li > span.m-doc a:hover, ul.m-doc li > span.m-doc a:focus, ul.m-doc li > span.m-doc a:active { color: var(--dim-link-active-color); } +.m-code.m-inverted.m-doc-include > a:link, +.m-code.m-inverted.m-doc-include > a:visited { opacity: 0.6666; } +.m-code.m-inverted.m-doc-include > a:hover, +.m-code.m-inverted.m-doc-include > a:focus, +.m-code.m-inverted.m-doc-include > a:active { opacity: 1; } +article section.m-doc-details > div { margin-top: 0; margin-left: 0; margin-right: 0; position: relative; padding: 1rem; } +article section.m-doc-details > div::before { +position: absolute; +content: ' '; +top: 0; +bottom: 0; +left: 0; +right: 0; +z-index: -1; +border-style: solid; +border-width: 0.125rem; +border-radius: var(--border-radius); +border-color: var(--code-background-color); +} +article section.m-doc-details > div > h3:first-child { +position: relative; +margin: -1rem -1rem 1rem -1rem; +padding: 0.5rem 1rem; +background-color: var(--code-background-color); +border-top-left-radius: var(--border-radius); +border-top-right-radius: var(--border-radius); +border-bottom-left-radius: 0; +border-bottom-right-radius: 0; +} +article section.m-doc-details:target { border-color: transparent; } +article section.m-doc-details:target > div { z-index: 1; } +.m-container-inflatable > .m-row > [class*='m-col-'] section.m-doc-details > div { margin-left: -1rem; margin-right: -1rem; } +.m-container-inflatable section.m-doc-details:target > div > h3:first-child, +.m-container-inflatable section.m-doc-details:target section > div > h3:first-child { +margin-left: -1.0rem; +border-left-style: solid; +border-left-color: var(--article-heading-active-color); +border-left-width: 0.25rem; +padding-left: 0.75rem; +} +.m-container-inflatable section.m-doc-details:target > div::before, +.m-container-inflatable section-dox-details:target section > div.m::before { border-left-width: 0.25rem; border-left-color: var(--article-heading-color); } +a.m-doc-search-icon { padding-left: 1rem; padding-right: 1rem; } +a.m-doc-search-icon svg { fill: var(--header-link-color); } +body > header > nav #m-navbar-collapse a.m-doc-search-icon svg { vertical-align: -5%; } +a.m-doc-search-icon:focus svg, a.m-doc-search-icon:hover svg, a.m-doc-search-icon:active svg { fill: var(--header-link-active-color); } +.m-doc-search { +display: none; +z-index: 10; +position: fixed; +left: 0; +right: 0; +top: 0; +bottom: 0; +background-color: var(--search-overlay-color); +} +.m-doc-search:target { display: block; } +.m-doc-search > a { display: block; position: absolute; left: 0; right: 0; top: 0; bottom: 0; } +.m-doc-search-header { margin-top: 2.5rem; padding: 0.5rem 1rem; height: 2rem; } +.m-doc-search-header > div:first-child { float: right; } +.m-doc-search-content { +background-color: var(--search-background-color); +border-radius: var(--border-radius); +padding: 1rem; +} +.m-doc-search input { +width: 100%; +height: 3rem; +font-size: 1.2rem; +border-width: 0; +color: var(--color); +background-color: var(--default-filled-background-color); +border-radius: var(--border-radius); +margin-bottom: 1rem; +padding: 0 1rem; +} +.m-doc-search #search-notfound { display: none; } +.m-doc-search ul#search-results { +list-style-type: none; +padding-left: 0; +max-height: calc(100vh - 12.5rem); +overflow-y: auto; +display: none; +} +.m-doc-search ul#search-results li a { +display: block; +padding-left: 1rem; +padding-right: 1rem; +text-decoration: none; +width: 100%; +line-height: 1.5rem; +color: var(--color); +} +.m-doc-search ul#search-results li a > div { white-space: nowrap; overflow: hidden; } +.m-doc-search ul#search-results li a > div:not(.m-doc-search-alias) { direction: rtl; } +.m-doc-search ul#search-results li a .m-label { float: right; line-height: 1rem; margin-top: 0.1rem; margin-left: 0.25rem; } +.m-doc-search ul#search-results li a .m-label.m-flat { margin-right: -0.75rem; } +.m-doc-search ul#search-results li#search-current a { background-color: var(--default-filled-background-color); } +.m-doc-search ul#search-results li#search-current.m-doc-search-copied a { background-color: var(--success-filled-background-color); } +.m-doc-search-typed { color: var(--link-color); } +.m-doc-search input[type="search"] { -webkit-appearance: textfield; } +.m-doc-search input[type="search"]::-webkit-search-decoration, +.m-doc-search input[type="search"]::-webkit-search-cancel-button, +.m-doc-search input[type="search"]::-webkit-search-results-button, +.m-doc-search input[type="search"]::-webkit-search-results-decoration { display: none; } +/*==== poxy-overrides.css ============================================================================================*/ +html { height: 100%; scroll-padding-top: 4em; } +body { min-height: 100%; } +body { display: flex; flex-direction: column; } +body > header { position: sticky; top: 0; left: 0; right: 0; z-index: 6; } +body > main { flex: 1 0 auto; } +body > footer { flex-shrink: 0; } +body > header, +body > header * { white-space: nowrap; } +a { text-decoration: none !important; } +a:hover { text-decoration: underline !important; } +article div > section { margin-top: 2.5rem; } +article div > section:first-of-type { margin-top: initial; } +article div > section > section { margin-top: 2.25rem; } +article div > section > section:first-of-type { margin-top: initial; } +a.poxy-external { font-weight: normal; } +pre.m-code a, +pre.m-console a { font-weight: inherit !important; color: inherit !important; } +body > header > nav .m-thin { margin-left: 0.5em; } +body > header > nav .poxy-icon img, +body > header > nav .poxy-icon svg { width: 1.5rem !important; height: 1.5rem !important; vertical-align: -18.5%; } +body > header > nav #m-navbar-collapse a.m-doc-search-icon svg { width: 1.25rem !important; height: 1.25rem !important; vertical-align: -12.5%; } +body > header > nav a#m-navbar-brand svg, +body > header > nav #m-navbar-brand a svg { width: 1.75rem; height: 1.75rem; vertical-align: -22.5%; margin-right: 0.5rem; } +body > header > nav a.poxy-icon.theme:hover, +body > header > nav #m-navbar-current:hover { +color: var(--header-link-active-color) !important; +border-color: var(--header-link-active-color) !important; +background-color: var(--header-link-active-background-color) !important; +} +@media screen and (max-width: 768px) { +body > header > nav .m-thin, +body > header > nav .repo { display: none; } +} +body > header > nav a:hover { text-decoration: none !important; } +.m-doc-details div > h4, +.m-doc-details div > h5, +.m-doc-details div > h6, +.m-doc-details div > table.m-table th, +.m-doc-details div > table.m-table td > h3, +.m-doc-details div > table.m-table td > h4, +.m-doc-details div > table.m-table td > h5, +.m-doc-details div > table.m-table td > h6, +.m-doc-details div > table.m-table td > strong > em, +.m-doc-details div > table.m-table td > p > strong > em { font-style: normal; color: var(--article-heading-color); } +.m-doc-details div > table.m-table td > strong > em, +.m-doc-details div > table.m-table td > p > strong > em { display: block; } +.m-doc-details div > table.m-table td > strong:not(:first-child) > em, +.m-doc-details div > table.m-table td > p:not(:first-child) > strong > em { margin-top: 1rem; } +#poxy-badges { +--extra-width: 2rem; +text-align: center; +line-height: 1.75rem; +padding-bottom: 1.25rem; +margin-left: calc(var(--extra-width) * -0.5); +margin-right: calc(var(--extra-width) * -0.5); +margin-top: -0.5rem; +} +#poxy-badges > span { display: inline-block; } +#poxy-badges > span > a, +#poxy-badges > span > svg, +#poxy-badges > span > img { margin-left: 0.2rem; margin-right: 0.2rem; } +h1 span.m-thin { color: var(--dim-color); } +#poxy-main-banner { +margin-left: -1rem !important; +margin-right: -1rem !important; +margin-top: -1.75rem !important; +max-width: calc(100% + 2rem) !important; +} +@media (min-width: 992px) { +svg#poxy-main-banner.poxy-injected-svg { padding: 1.5rem; } +} +@media (min-width: 300px) and (max-width: 992px) { +svg#poxy-main-banner.poxy-injected-svg { padding: 1rem; } +} +.m-doc-details div h3 { overflow: auto; } +h1 .m-doc-include, +h3 .m-doc-include { float: right; } +h1 .m-doc-include *, +h3 .m-doc-include * { opacity: 1 !important; } +h1 .m-doc-include .cp, +h3 .m-doc-include .cp { color: var(--dim-color); } +pre .poxy-godbolt, +code .poxy-godbolt { font-family: "Source Sans Pro", sans-serif; } +pre p.poxy-godbolt, +code p.poxy-godbolt { text-align: center; padding: 0rem; text-indent: 0rem; float: right; } +pre p.poxy-godbolt a.poxy-godbolt, +code p.poxy-godbolt a.poxy-godbolt { padding: 0.5rem; display: inline-block; } +@media screen and (max-width: 768px) { +pre p.poxy-godbolt, +code p.poxy-godbolt { display: none; } +} +h2:last-child, +h3:last-child, +h4:last-child, +h5:last-child, +h6:last-child { margin-bottom: 0rem; } +.m-doc-details table img.m-image { margin-left: inherit; } +@media screen and (min-width: 1300px) { +:root { --wide-page-left-offset: -160px; } +#poxy-toc { +position: fixed; +top: 5rem; +left: calc(50% + 470px + var(--wide-page-left-offset)); +min-width: 200px; +z-index: 5; +margin: 0px 20px 0px 0px !important; +background-color: var(--background-color); +overflow-y: auto; +max-height: calc(100% - 7rem); +} +header nav > .m-container, +footer nav > .m-container { width: 100%; } +main article > .m-container > .m-row { margin-left: var(--wide-page-left-offset); margin-right: calc(var(--wide-page-left-offset) * -1); } +} +.m-block.m-dim pre.m-code, +.m-note.m-dim pre.m-code { opacity: 0.85; } +.m-block li, +.m-note li, +section > ul li, +section > ol li { margin-bottom: 0.2rem; } +.m-block li:last-child, +.m-note li:last-child, +section > ul li:last-child, +section > ol li:last-child { margin-bottom: initial; } +.m-block li > ul > li:first-child, +.m-note li > ul > li:first-child, +.m-block li > ol > li:first-child, +.m-note li > ol > li:first-child { margin-top: 0.2rem; } +article section.m-doc-details > div > h3:first-child { background-color: var(--detail-section-header-color); } +article section.m-doc-details > div::before { +border-color: var(--detail-section-header-color); +background-color: var(--detail-section-background-color); +} +ul.m-doc > li.m-doc-collapsible, +ul.m-doc > li.m-doc-collapsible > a:first-child, +ul.m-doc > li.m-doc-collapsible li { color: var(--dim-link-color) !important; } +pre.m-code + pre.m-console { margin-top: -1rem; font-size: 0.8rem; } +.m-note pre.m-code + pre.m-console { color: var(--console-color); background-color: var(--console-background-color); } +pre.poxy-impl, +code.poxy-impl { +color: var(--code-color-comments) !important; +padding: 0rem !important; +margin: 0rem 0.2rem !important; +font-weight: normal; +} +article section:target > .m-code, +article section:target > .m-console, +article section:target > .m-note, +article section:target > .m-block, +article section:target > .m-container-inflate > .m-code, +article section:target > .m-container-inflate > .m-console, +article section:target > .m-container-inflate > .m-note, +article section:target > .m-container-inflate > .m-block, +article section:target section.m-doc-details > div > h3:first-child, +article section.m-doc-details:target > div > h3:first-child { border-color: var(--article-heading-color) !important; } +article section:target section.m-doc-details > div > h3:first-child { border-left-style: solid; border-left-width: 0.25rem; } +.m-label:not(.m-flat) { color: var(--background-color) !important; } +figure.m-figure > figcaption { +font-weight: initial !important; +font-size: 1rem !important; +text-align: center; +margin-top: initial; +} +.m-success:not(.m-note, .m-button) a { color: var(--success-color); } +.m-success:not(.m-note, .m-button) a:hover, +.m-success:not(.m-note, .m-button) a:focus, +.m-success:not(.m-note, .m-button) a:active { color: var(--success-link-active-color); } +.m-warning:not(.m-note, .m-button) a { color: var(--warning-color); } +.m-warning:not(.m-note, .m-button) a:hover, +.m-warning:not(.m-note, .m-button) a:focus, +.m-warning:not(.m-note, .m-button) a:active { color: var(--warning-link-active-color); } +.m-danger:not(.m-note, .m-button) a { color: var(--danger-color); } +.m-danger:not(.m-note, .m-button) a:hover, +.m-danger:not(.m-note, .m-button) a:focus, +.m-danger:not(.m-note, .m-button) a:active { color: var(--danger-link-active-color); } +.m-info:not(.m-note, .m-button) a { color: var(--info-color); } +.m-info:not(.m-note, .m-button) a:hover, +.m-info:not(.m-note, .m-button) a:focus, +.m-info:not(.m-note, .m-button) a:active { color: var(--info-link-active-color); } +.m-doc-template-params.m-doc-template-long { display: block; padding-left: 1rem; } +.m-doc-template-params.m-doc-template-long .m-doc-template-param::before { content: ""; display: block; } +.m-doc-details .m-doc-template .m-doc-template-parent, +.m-doc-details .m-doc-template .m-doc-template-parent + br { display: none; } +section.m-doc-details div .m-table.m-fullwidth.m-flat tbody td:first-of-type wbr { display: none; } +.poxy-about-the-author { margin-top: 4rem; } +.poxy-about-the-author .poxy-socials { display: block; padding-top: 0.5rem; } +.poxy-about-the-author img.poxy-icon, +.poxy-about-the-author svg.poxy-icon { max-width: 1.5rem; max-height: 1.5rem; margin-right: 0.5rem; } +header nav #m-navbar-collapse li a.sponsor:hover { border-color: var(--sponsor-color) !important; } +header nav a.sponsor:hover, +footer nav a.sponsor:hover, +a.poxy-icon.sponsor:hover { color: var(--sponsor-color) !important; } +main article a.poxy-named-requirement { font-style: italic; } + diff --git a/poxy/poxy.js b/poxy/poxy.js new file mode 100644 index 0000000000..40c2468938 --- /dev/null +++ b/poxy/poxy.js @@ -0,0 +1,62 @@ +function do_with_debounce(fn) +{ + fn(); + setTimeout(function() { fn(); }, 200); +} + +function set_theme(theme) +{ + localStorage.setItem('poxy-theme', theme); + document.documentElement.className = 'poxy-theme-' + theme; + console.log("poxy theme set to '" + theme + "'"); +} + +function initialize_theme(default_theme) +{ + current = localStorage.getItem('poxy-theme'); + if (!current) + current = default_theme + set_theme(current); +} + +function toggle_theme() +{ + current = localStorage.getItem('poxy-theme'); + if (!current || current === 'light') + set_theme('dark'); + else + set_theme('light'); +} + +function install_mcss_search_shim() +{ + let showSearch_impl = window.showSearch; + window.showSearch = function() + { + if (window.location.hash == '#search') + { + document.getElementById('search-input').focus(); + return false; + } + return showSearch_impl.apply(null); + }; +} + +/* +$(function() +{ + page_header = $('body > header')[0] + + fix_body_header_padding = function() + { + document.body.style.paddingTop = page_header.offsetHeight + 'px'; + }; + + $(page_header).resize(function() + { + do_with_debounce(fix_body_header_padding); + }); + + do_with_debounce(fix_body_header_padding); +}); +*/ diff --git a/poxy_changelog.html b/poxy_changelog.html new file mode 100644 index 0000000000..91d7fa1054 --- /dev/null +++ b/poxy_changelog.html @@ -0,0 +1,160 @@ + + + + Changelog | toml++ TOML for C++ + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Changelog +

+ +

Unreleased

Fixes
  • fixed is_homogeneous() overloads with first_nonmatch outparam being broken in optimized builds (#231) (@Forbinn)
  • fixed unclear error message when parsing integers that would overflow (#224) (@chrimbo)
  • fixed CMake install target installing meson.build files (#236) (@JWCS)
  • lowered TOML_MAX_NESTED_VALUES default from 256 to 128 to prevent stack overflow on deeply nested arrays/inline tables in sanitizer builds (@danielbodorin)

v3.4.0

Fixes
Additions
  • added support for using enums with value_or()
Changes
  • renamed header files to have .hpp extension (toml.h is still present for backwards-compatibility)
Build system
  • fixed meson builds with -Ddefault_library=static having hidden symbols on GNU compilers (#201) (@vlad0x00)

v3.3.0

Released 2023-01-29

Fixes
  • fixed null pointer dereference in parser when exceptions are disabled (#169) (@ncaklovic)
  • fixed spurious warnings in MSVC 19.34
  • fixed toml::parse_file() on windows for non-ASCII paths
  • fixed a spurious table redefinition error (#187) (@jorisvr)
  • fixed UB edge-case in integer parsing (#188) (@jorisvr)
  • fixed some build issues with Apple-flavoured Clang (#189) (@eddelbuettel)
Additions
Removals
Build system

v3.2.0

Released 2022-08-29

Fixes
Additions
Changes
  • relaxed cvref requirements of is_homogeneous(), emplace(), emplace_back(), emplace_hint()
  • relaxed mantissa and digits10 requirements of extended float support

v3.1.0

Released 2022-04-22

Fixes
  • fixed potential segfault when calling at_path() with an empty string
  • fixed UB in internal unicode machinery (#144) (@kchalmer)
  • fixed a number of spurious warnings with Clang 10 (#145, #146) (@chronoxor)
Additions
  • added toml::array::for_each()
  • added toml::table::for_each()
  • added config options TOML_EXPORTED_CLASS, TOML_EXPORTED_MEMBER_FUNCTION, TOML_EXPORTED_STATIC_FUNCTION & TOML_EXPORTED_FREE_FUNCTION
  • added support for escape sequence \e when using TOML_ENABLE_UNRELEASED_FEATURES (toml/790)
  • added support for more unicode in bare keys when using TOML_ENABLE_UNRELEASED_FEATURES (toml/891)
Removals/Deprecations
  • deprecated old TOML_API option in favour new TOML_EXPORTED_X options (it will continue to work as it did before if none of the new function export options are defined)
Build system
  • meson: added compile_library option (@Tachi107)
  • meson: added ubsan_tests and ubsan_examples options
  • meson: use system dependencies where available when building tests (@Tachi107)

v3.0.1

Released 2022-01-13

This is a single-bugfix release to fix an ODR issue for people using header-only mode in multiple translation units. If you aren't seeing linker errors because of toml::array::insert_at(), this release holds nothing of value over v3.0.0.

Fixes
  • fixed erroneous use of TOML_API causing ODR issue (#136) (@Azarael)

v3.0.0

Released 2022-01-11

This release will be a major version bump, so it's ABI breaks all around. Any changes that are likely to cause migration issues (API changes, build system breakage, etc.) are indicated with ⚠️.

Fixes
  • ⚠️ fixed toml::table init-list constructor requiring double-brackets
  • ⚠️ fixed TOML_API + extern templates causing linker errors in some circumstances
  • ⚠️ fixed incorrect noexcept specifications on many functions
  • ⚠️ fixed missing TOML_API on some interfaces
  • fixed toml::json_formatter not formatting inf and nan incorrectly
  • fixed a number of spec conformance issues (#127, #128, #129, #130, #131, #132, #135) (@moorereason)
  • fixed an illegal table redefinition edge case (#112) (@python36)
  • fixed documentation issues
  • fixed GCC bug causing memory leak during parse failures (#123, #124) (@rsmmr, @ronalabraham)
  • fixed incorrect handling of vertical whitespace in keys when printing TOML to streams
  • fixed incorrect source position in redefinition error messages
  • fixed missing includes <initializer_list>, <utility>
  • fixed parser not correctly round-tripping the format of binary and octal integers in some cases
  • fixed some incorrect unicode scalar sequence transformations (#125)
  • fixed strong exception guarantee edge-cases in toml::table and toml::array
Additions
Changes
  • ⚠️ toml::format_flags is now backed by uint64_t (was previously uint8_t)
  • ⚠️ toml::source_index is now an alias for uint32_t unconditionally (was previously dependent on TOML_LARGE_FILES)
  • ⚠️ toml::table now uses toml::key as the key type (was previously std::string)
  • ⚠️ toml::value_flags is now backed by uint16_t (was previously uint8_t)
  • ⚠️ made all overloaded operators 'hidden friends' where possible
  • ⚠️ renamed toml::default_formatter to toml::toml_formatter (toml::default_formatter is now an alias)
  • ⚠️ renamed TOML_PARSER option to TOML_ENABLE_PARSER (TOML_PARSER will continue to work but is deprecated)
  • ⚠️ renamed TOML_UNRELEASED_FEATURES to TOML_ENABLE_UNRELEASED_FEATURES (TOML_UNRELEASED_FEATURES will continue to work but is deprecated)
  • ⚠️ renamed TOML_WINDOWS_COMPAT to TOML_ENABLE_WINDOWS_COMPAT (TOML_WINDOWS_COMPAT will continue to work but is deprecated)
  • applied clang-format to all the things 🎉️
  • exposed TOML_NAMESPACE_START and TOML_NAMESPACE_END macros to help with ADL specialization scenarios
  • improved performance of parser
  • made date/time constructors accept any integral types
  • moved all implementation headers to /impl
  • renamed all implementation headers to .h and 'source' headers to .inl
  • updated conformance tests
Removals
  • ⚠️ removed toml::format_flags::allow_value_format_flags
  • ⚠️ removed TOML_LARGE_FILES (it is now default - explicitly setting TOML_LARGE_FILES to 0 will invoke an #error)
  • ⚠️ removed unnecessary template machinery (esp. where ostreams were involved)
  • removed unnecessary uses of final
Build system
  • ⚠️ increased minimum required meson version to 0.54.0
  • disabled 'install' path when being used as a meson subproject (#114) (@Tachi107)
  • fixed builds failing with meson 0.6.0 (#117) (@Tachi107)
  • general meson improvements and fixes (#115) (@Tachi107)
  • used override_dependency where supported (#116) (@Tachi107)

v2.5.0

Released 2021-07-11

Fixes
  • fixed linkage error with windows compat mode
  • fixed TOML_CONSTEVAL broken in MSVC (again)
  • fixed minor documentation bugs
  • fixed cmake project version being incorrect (#110) (@GiulioRomualdi)
Additions
  • added support for lowercase 't' and 'z' in datetimes (per spec)
  • added natvis file to cmake install (#106) (@Ryan-rsm-McKenzie)
  • added VS cpp.hint file to cmake install
  • added metafunctions is_container, is_chronological, is_value, is_node, inserted_type_of
Changes

v2.4.0

Released 2021-05-19

Fixes
  • fixed node::value() not retrieving inf and nan correctly
  • fixed dotted kvps being unable to add subtables (#61) (@Validark)
  • fixed linker error on linux ICC (#83) (@blackwer)
  • fixed segfault JSON-formatting a failed parse_result (#96) (@proydakov)
  • fixed spurious newline after JSON formatting a table
  • fixed VS intellisense not detecting TOML_COMPILER_EXCEPTIONS correctly
  • fixed crash with pathologically-nested inputs (#100) (@geeknik)
  • fixed parse_result natvis
  • fixed false-positive char8_t support detection on older compilers
  • fixed unnecessary #include <Windows.h> Windows builds (@BeastLe9enD)
  • fixed TOML_CONSTEVAL breaking on VS 16.10.0pre2
  • fixed spurious warnings with MSVC /Wall
  • fixed missing blank lines between consecutive empty tables/A-o-T
  • fixed unnecessary TOML_API declarations
  • fixed many small documentation issues
Additions
Removals
  • removed explicit #include <fstream> requirement for parse_file()

v2.3.0

Released 2020-12-29

Fixes
  • fixed compiler errors caused by <charconv> with Apple-flavoured clang
  • fixed array and table iterators missing iterator_category (#77) (@HazardyKnusperkeks)
  • fixed Wuseless-cast warnings on GCC 10 (#75) (@HazardyKnusperkeks)
  • fixed formatter not correctly line wrapping in some rare circumstances (#73) (@89z)
  • fixed an unnecessary global compiler flag breaking builds when used as a meson subproject (#72) (@jamabr)
  • fixed link error caused by <charconv> on emscripten (#71) (@suy)
  • fixed ambiguity with the toml::literals inline namespace (#69) (@std-any-emplace)
  • fixed formatter emitting superfluous newlines after printing tables (#68) (@std-any-emplace)
  • fixed array and table iterators not converting between const and non-const versions of themselves (#67) (@std-any-emplace)
  • fixed some parser crashes when given pathologically-malformed UTF-8 (#65) (@sneves)

v2.2.0

Released 2020-08-09

Fixes
  • fixed some issues building with VS2017 (#55) (@sobczyk)
  • fixed _Float16 erroneously detected as supported on g++ (#57) (@sobczyk)
  • fixed <Windows.h> causing compilation failure on mingw (#63) (@rezahousseini)
  • fixed CMake and pkg-config files not being installed into architecture-agnostic directories (#59) (@tambry)
  • fixed memory leak during parsing (#64) (@sneves)
  • fixed ambiguous operator== error on MSVC (#56) (@HellsingDarge)
Additions
  • added additional node_view constructors
  • added ability to specify serialization format of integer values
  • added integer value serialization format round trip (e.g. hex in, hex out)
Changes
  • updated conformance tests
  • TOML version bump to v1.0.0-rc.3
  • refactors and cleanups based on feedback given here
Build system
  • renamed build options to snake_case
  • tests, examples and cmake config now explicitly disabled when used as a subproject
  • removed small_binaries (it's now implicit when building as release)
  • bumped minimum meson version to 0.53

v2.1.0

Released 2020-07-11

Fixes
  • fixed inconsistent emission of leading/trailing newlines when writing a table to an ostream (#48) (@levicki)
  • fixed Wcast-align warning spam on ARM
  • fixed array::insert not working correctly in some cases
  • fixed node::value_or() not having the same semantics as node::value() (#50) (@whiterabbit963)
  • fixed 'misleading assignment' of rvalue node_views (#52) (@Reedbeta)
  • fixed some issues handling infinities and NaNs (#51) (@Reedbeta)
  • fixed some minor documentation issues
Additions
  • added support for __fp16, _Float16, __float128, __int128_t and __uint128_t
  • added copy construction/assignment for arrays, tables and values
  • added insert, emplace, push_back etc. compatibility with node_views
  • added node::is_homogenous
  • added table::is_homogenous
  • added value::is_homogenous (just for generic code's sake)
  • added is_homogenous overload for identifying failure-causing element
  • added implicit conversion operator from node to node_view (#52) (@Reedbeta)
Changes
  • renamed TOML_ALL_INLINE to TOML_HEADER_ONLY (the old name will still work, but is no longer documented)
  • general cleanup

v2.0.0

Released 2020-07-20

This release contains a fairly significant number of 'quality of life' improvements, yay! But also necessitates an ABI break (hence the version number bump). Changes that might block a migration are annotated with ⚠️.

Fixes
  • fixed infinity and NaN-related code breaking when using -ffast-math and friends
  • fixed narrowing conversion warnings when constructing int values from unsigned
  • fixed Visual Studio debugger native visualizations for date, time, time_offset, date_time
  • fixed some static assert messages being badly formatted on clang
  • fixed internal macro assert_or_assume leaking out of toml_parser.hpp
Additions
  • added additional types allowed in node::value() and node::value_or() (see value() dox for examples)
  • added additional types allowed in node_view::value() and node_view::value_or()
  • added node::value_exact() and node_view::value_exact()
  • added support for interop with wide strings on Windows:
    • added wide-string path arg overloads of parse() and parse_file()
    • added wide-string support to all relevant table and array ops
    • added wide-string support to node::value(), node::value_or()
    • added wide-string support to node_view::value(), node_view::value_or()
    • added wide-string support to value<string> constructor
    • added wide-string overloads of node_view::operator[]
    • added source_region::wide_path()
    • added TOML_WINDOWS_COMPAT switch for explicitly enabling/disabling this stuff
  • added emission of 'literal' strings to the TOML serializer
  • added lots of minor documentation fixes and improvements
  • added Visual Studio debugger native visualizations for table, array, parse_result, and parse_error (#46) (@Reedbeta)
  • added non-template version of array::is_homogeneous()
  • added explicit instantiations of more template types when !TOML_ALL_INLINE
Changes
  • ⚠️ deprecated parse_result::get() in favour of parse_result::table()
  • ⚠️ deprecated node_view::get() in favour of node_view::node()
  • ⚠️ simplified internal ABI namespaces
  • improved the quality of many static_assert error messages
Removals
  • ⚠️ renamed date_time::time_offset to just 'offset'
  • ⚠️ removed TOML_CHAR_8_STRINGS since it no longer makes sense

v1.3.3

Released 2020-06-29

Fixes
  • fixed some minor TOML spec conformance bugs
  • fixed BOM check causing EOF on very short iostream inputs
  • fixed std::numeric_limits::max() getting broken by macros in some environments
  • fixed 'unknown pragma' warning spam in older versions of GCC
  • fixed a few minor documentation issues
Additions
  • added rvalue overload of array::flatten
  • added conformance tests from BurntSushi/toml-test and iarna/toml-spec-tests
  • added toml::inserter as a workaround for nested construction of single-element toml::arrays performing move-construction instead
  • added license boilerplate to test files
Changes
  • refactored the parser to reduce binary size

v1.3.2

Released 2020-06-19

Fixes
  • fixed single-digit negative integers parsing as positive
  • fixed parse failure when parsing an empty file
  • fixed multi-line strings being allowed in keys
  • fixed overflow for very long binary integer literals
Changes
  • improved the performance of toml::parse_file
  • improved the performance of printing to streams for deepy-nested TOML data

v1.3.0

Released 2020-06-02

Fixes
  • fixed formatter::print_inline() causing compilation failures in DLL builds
  • fixed BOMs occasionally causing overflow/crash in char8 mode
  • fixed some spurious warnings in GCC 10
  • fixed clang static analyzer warning in BOM handling code
Additions
  • added table_iterator::operator ->
  • added array::resize() and array::truncate()
  • added array::capacity(), array::shrink_to_fit(), array::max_size()
  • added non-const -> const conversion for table and array iterators
Changes
  • renamed table iterator proxy pair members to first and second to match STL

v1.2.5

Released 2020-04-24

Fixes
  • fixed some multi-line string parsing issues
  • fixed pedantic warnings on gcc 10 and clang 11
  • fixed is_unicode_XXXXXX functions being wrong in some cases
  • fixed TOML_LIKELY not being correct on older versions of gcc and clang
  • fixed minor documentation issues (#26, #38) (@prince-chrismc)
Additions
  • added additional error message cases to the parser
  • added error_printer example
  • added toml_generator example
Changes
  • improved unicode-related codegen

v1.2.3

Released 2020-04-11

Fixes
  • fixed printing of inf and nan
  • fixed parser not handling floats with leading '.' characters
  • fixed pedantic vtable warnings on clang with -Weverything
  • fixed a number of documentation bugs
  • fixed TOML_UNRELEASED_FEATURES default being 1 (it should have been 0)
Additions
  • added TOML_PARSER configuration option
  • added TOML_LIB_SINGLE_HEADER indicator
  • added doxygen page for the configuration options
  • added SPDX-License-Identifiers around the place
Changes
  • split some header files up to make future maintenance easier
  • refactored and greatly simplified parser

v1.2.0

Released 2020-04-07

Fixes
  • fixed some parsing and printing ops being locale-dependent
  • fixed some parsing errors at EOF when TOML_EXCEPTIONS = 0
  • fixed some unreferenced variable warnings on older compilers
  • fixed some 'maybe-uninitialized' false-positives on GCC9
  • fixed pkgconfig subdir being wrong
Additions
  • added support for implementations without <charconv>
  • added cmake package config generator (#22) (@GiulioRomualdi)
  • added build config feature option GENERATE_CMAKE_CONFIG
  • added many new tests

v1.1.0

Released 2020-04-03

Fixes
  • fixed some parser error paths not returning early enough TOML_EXCEPTIONS=0
  • fixed a number of minor documentation issues
Additions
  • added support for TOML 1.0.0-rc.1 🎉
  • added operator[], begin(), end() to toml::parse_result for TOML_EXCEPTIONS=0
  • added additional compilation speed improvements for TOML_ALL_INLINE=0
  • added more specific error messages for parsing errors relating to prohibited codepoints
  • added a large number of additional tests
  • added support for installation with meson (#16) (@ximion)
  • added the array and table iterators to the toml namespace

v1.0.0

Released 2020-03-28

Fixes
  • fixed minor documentation issues
Changes
  • refactoring of ABI-based inline namespaces

v0.6.0

Released 2020-03-24

Fixes
  • fixed minor preprocessor/macro issues
  • fixed minor documentation issues
Additions
  • added <cassert> include directly in 'debug' builds when TOML_ASSERT isn't defined
  • added Clang's [[trivial_abi]] attribute to date, time, time_offset

v0.5.0

Released 2020-03-18

Fixes
  • fixed crash when reaching EOF while parsing a string when exceptions are disabled
  • fixed some attribute warnings in GCC
  • fixed build with GCC 8.2.0 (#15) (@shdnx)
  • fixed exception mode detection sometimes being incorrect on MSVC
  • fixed compilation on older implementations without std::launder
  • fixed json_formatter type deduction on older compilers
Additions
  • added support for Unicode 13.0
  • added support for \xHH escape sequences (toml/pull/796)
  • added short-form license preamble to all source files
  • added build configuration option for compiling examples

v0.4.3

Released 2020-03-10

Fixes
  • fixed ICE in VS2019 when using /std:c++17 instead of /std:c++latest
Additions
  • added #error when TOML_EXCEPTIONS is set to 1 but compiler exceptions were disabled
Changes
  • parsing performance improvements

v0.4.0

Released 2020-03-05

Fixes
  • fixed parse_file() failing to compile with plain string literals
  • fixed tests being built when used as a meson subproject (#14) (@shdnx)
Additions
  • added support for compiling into DLLs on windows (TOML_API)
  • added support for explicitly setting the TOML_EXCEPTION mode
  • added TOML_OPTIONAL_TYPE customization point
  • added node::ref() and node_view::ref()

v0.3.0

Released 2020-03-01

Fixes
  • fixed some pedantic clang warnings
  • fixed some minor documentation errors
Additions
  • added node::value() and node::value_or()
  • added node_view::value()
  • added relops for the date/time classes
  • added TOML_ALL_INLINE and TOML_IMPLEMENTATION options
  • added preliminary support for ICC
Removals
  • removed <cmath> dependency

v0.2.1

Released 2020-02-26

Fixes
  • fixed minor printing bug in operator<<(ostream, source_position)
  • fixed minor documentation issues
Additions
Changes
  • improved quality of error messages for boolean and inf/nan parsing

v0.2.0

Released 2020-02-23

Fixes
  • fixed truncation of floating-point values when using ostreams
  • fixed missing value deduction guides for dates and times
  • fixed potential ODR issues relating to exception mode handling etc.
  • fixed some documentation issues
Additions
  • added serialization round-trip tests
  • added node::is_number()
  • added node_view::is_number()
  • added node_view::value_or()
  • added hexfloat parsing support for all implementations (not just <charconv> ones)

v0.1.0

Released 2020-02-20

  • First public release, yay! 🎉️
+
+
+
+
+ + + + + + + \ No newline at end of file diff --git a/search-v2.js b/search-v2.js new file mode 100644 index 0000000000..2bb9a364d1 --- /dev/null +++ b/search-v2.js @@ -0,0 +1,898 @@ +/* + This file is part of m.css. + + Copyright © 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2025 + Vladimír Vondruš + Copyright © 2020 Sergei Izmailov + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. +*/ + +"use strict"; /* it summons the Cthulhu in a proper way, they say */ + +var Search = { + formatVersion: 2, /* the data filename contains this number too */ + + dataSize: 0, /* used mainly by tests, not here */ + symbolCount: '…', + trie: null, + map: null, + mapFlagsOffset: null, + typeMap: null, + maxResults: 0, + + /* Type sizes and masks. The data is always fetched as 16/32bit number and + then masked to 1, 2, 3 or 4 bytes. Fortunately on LE a mask is enough, + on BE we'd have to read N bytes before and then mask. */ + nameSizeBytes: null, + nameSizeMask: null, + resultIdBytes: null, + resultIdMask: null, + fileOffsetBytes: null, + fileOffsetMask: null, + lookaheadBarrierMask: null, + + /* Always contains at least the root node offset and then one node offset + per entered character */ + searchString: '', + searchStack: [], + + /* So items don't get selected right away when a cursor is over results but + only after mouse moves */ + mouseMovedSinceLastRender: false, + + /* Whether we can go back in history in order to hide the search box or + not. We can't do that if we arrived directly on #search from outside. */ + canGoBackToHideSearch: false, + + /* Autocompletion in the input field is whitelisted only for character + input (so not deletion, cut, or anything else). This is flipped in the + onkeypress event and reset after each oninput event. */ + autocompleteNextInputEvent: false, + + init: function(buffer, maxResults) { + let view = new DataView(buffer); + + /* The file is too short to contain at least the headers and empty + sections */ + if(view.byteLength < 31) { + console.error("Search data too short"); + return false; + } + + if(view.getUint8(0) != 'M'.charCodeAt(0) || + view.getUint8(1) != 'C'.charCodeAt(0) || + view.getUint8(2) != 'S'.charCodeAt(0)) { + console.error("Invalid search data signature"); + return false; + } + + if(view.getUint8(3) != this.formatVersion) { + console.error("Invalid search data version"); + return false; + } + + /* Fetch type sizes. The only value that can fail is result ID byte + count, where value of 3 has no assigned meaning. */ + let typeSizes = view.getUint8(4, true); + if((typeSizes & 0x01) >> 0 == 0) { + this.fileOffsetBytes = 3; + this.fileOffsetMask = 0x00ffffff; + this.lookaheadBarrierMask = 0x00800000; + } else /* (typeSizes & 0x01) >> 0 == 1 */ { + this.fileOffsetBytes = 4; + this.fileOffsetMask = 0xffffffff; + this.lookaheadBarrierMask = 0x80000000; + } + if((typeSizes & 0x06) >> 1 == 0) { + this.resultIdBytes = 2; + this.resultIdMask = 0x0000ffff; + } else if((typeSizes & 0x06) >> 1 == 1) { + this.resultIdBytes = 3; + this.resultIdMask = 0x00ffffff; + } else if((typeSizes & 0x06) >> 1 == 2) { + this.resultIdBytes = 4; + this.resultIdMask = 0xffffffff; + } else /* (typeSizes & 0x06) >> 1 == 3 */ { + console.error("Invalid search data result ID byte value"); + return false; + } + if((typeSizes & 0x08) >> 3 == 0) { + this.nameSizeBytes = 1; + this.nameSizeMask = 0x00ff; + } else /* (typeSizes & 0x08) >> 3 == 1 */ { + this.nameSizeBytes = 2; + this.nameSizeMask = 0xffff; + } + + /* Separate the data into the trie and the result / type map. Because + we're reading larger values than there might be and then masking out + the high bytes, keep extra 1/2 byte padding at the end to avoid + OOB errors. */ + let mapOffset = view.getUint32(12, true); + let typeMapOffset = view.getUint32(16, true); + /* There may be a 3-byte file offset at the end of the trie which we'll + read as 32-bit, add one safety byte in that case */ + this.trie = new DataView(buffer, 20, mapOffset - 20 + (4 - this.fileOffsetBytes)); + /* There may be a 3-byte file size (for zero results) which we'll read + as 32-bit, add one safety byte in that case */ + this.map = new DataView(buffer, mapOffset, typeMapOffset - mapOffset + (4 - this.fileOffsetBytes)); + /* No variable-size types in the type map at the moment */ + this.typeMap = new DataView(buffer, typeMapOffset); + + /* Offset of the first result map item is after N + 1 offsets and N + flags, calculate flag offset from that */ + this.mapFlagsOffset = this.fileOffsetBytes*(((this.map.getUint32(0, true) & this.fileOffsetMask) - this.fileOffsetBytes)/(this.fileOffsetBytes + 1) + 1); + + /* Set initial properties */ + this.dataSize = buffer.byteLength; + this.symbolCount = view.getUint32(8, true) + " symbols (" + Math.round(this.dataSize/102.4)/10 + " kB)"; + this.maxResults = maxResults ? maxResults : 100; + this.searchString = ''; + this.searchStack = [this.trie.getUint32(0, true)]; + + /* istanbul ignore if */ + if(typeof document !== 'undefined') { + document.getElementById('search-symbolcount').innerHTML = this.symbolCount; + document.getElementById('search-input').disabled = false; + document.getElementById('search-input').placeholder = "Type something here …"; + document.getElementById('search-input').focus(); + + /* Search for the input value (there might be something already, + for example when going back in the browser) */ + let value = document.getElementById('search-input').value; + + /* Otherwise check the GET parameters for `q` and fill the input + with that */ + if(!value.length) { + var args = decodeURIComponent(window.location.search.substr(1)).trim().split('&'); + for(var i = 0; i != args.length; ++i) { + if(args[i].substring(0, 2) != 'q=') continue; + + value = document.getElementById('search-input').value = args[i].substring(2); + break; + } + } + + if(value.length) Search.searchAndRender(value); + } + + return true; + }, + + download: /* istanbul ignore next */ function(url) { + var req = window.XDomainRequest ? new XDomainRequest() : new XMLHttpRequest(); + if(!req) return; + + req.open("GET", url, true); + req.responseType = 'arraybuffer'; + req.onreadystatechange = function() { + if(req.readyState != 4) return; + + Search.init(req.response); + } + req.send(); + }, + + base85decode: function(base85string) { + function charValue(char) { + if(char >= 48 && char < 58) /* 0-9 -> 0-9 */ + return char - 48 + 0; + if(char >= 65 && char < 91) /* A-Z -> 10-35 */ + return char - 65 + 10; + if(char >= 97 && char < 123) /* a-z -> 36-61 */ + return char - 97 + 36; + if(char == 33) /* ! -> 62 */ + return 62; + /* skipping 34 (') */ + if(char >= 35 && char < 39) /* #-& -> 63-66 */ + return char - 35 + 63; + /* skipping 39 (") */ + if(char >= 40 && char < 44) /* (-+ -> 67-70 */ + return char - 40 + 67; + /* skipping 44 (,) */ + if(char == 45) /* - -> 71 */ + return 71; + if(char >= 59 && char < 65) /* ;-@ -> 72-77 */ + return char - 59 + 72; + if(char >= 94 && char < 97) /* ^-` -> 78-80 */ + return char - 94 + 78; + if(char >= 123 && char < 127) /* {-~ -> 81-84 */ + return char - 123 + 81; + + return 0; /* Interpret padding values as zeros */ + } + + /* Pad the string for easier decode later. We don't read past the file + end, so it doesn't matter what garbage is there. */ + if(base85string.length % 5) { + console.log("Expected properly padded base85 data"); + return; + } + + let buffer = new ArrayBuffer(base85string.length*4/5); + let data8 = new DataView(buffer); + for(let i = 0; i < base85string.length; i += 5) { + let char1 = charValue(base85string.charCodeAt(i + 0)); + let char2 = charValue(base85string.charCodeAt(i + 1)); + let char3 = charValue(base85string.charCodeAt(i + 2)); + let char4 = charValue(base85string.charCodeAt(i + 3)); + let char5 = charValue(base85string.charCodeAt(i + 4)); + + data8.setUint32(i*4/5, char5 + + char4*85 + + char3*85*85 + + char2*85*85*85 + + char1*85*85*85*85, false); /* BE, yes */ + } + + return buffer; + }, + + load: function(base85string) { + return this.init(this.base85decode(base85string)); + }, + + /* http://ecmanaut.blogspot.com/2006/07/encoding-decoding-utf8-in-javascript.html */ + toUtf8: function(string) { return unescape(encodeURIComponent(string)); }, + fromUtf8: function(string) { return decodeURIComponent(escape(string)); }, + + autocompletedCharsToUtf8: function(chars) { + /* Strip incomplete UTF-8 chars from the autocompletion end */ + for(let i = chars.length - 1; i >= 0; --i) { + let c = chars[i]; + + /* We're safe, finish */ + if( + /* ASCII value at the end */ + (c < 128 && i + 1 == chars.length) || + + /* Full two-byte character at the end */ + ((c & 0xe0) == 0xc0 && i + 2 == chars.length) || + + /* Full three-byte character at the end */ + ((c & 0xf0) == 0xe0 && i + 3 == chars.length) || + + /* Full four-byte character at the end */ + ((c & 0xf8) == 0xf0 && i + 4 == chars.length) + ) break; + + /* Continuing UTF-8 character, go further back */ + if((c & 0xc0) == 0x80) continue; + + /* Otherwise the character is not complete, drop it from the end */ + chars.length = i; + break; + } + + /* Convert the autocompleted UTF-8 sequence to a string */ + let suggestedTabAutocompletionString = ''; + for(let i = 0; i != chars.length; ++i) + suggestedTabAutocompletionString += String.fromCharCode(chars[i]); + return suggestedTabAutocompletionString; + }, + + /* Returns the values in UTF-8, but input is in whatever shitty 16bit + encoding JS has */ + search: function(searchString) { + /* Normalize the search string first, convert to UTF-8 and trim spaces + from the left. From the right they're trimmed only if nothing is + found, see below. */ + searchString = this.toUtf8(searchString.toLowerCase().replace(/^\s+/,'')); + + /* TODO: maybe i could make use of InputEvent.data and others here */ + + /* Find longest common prefix of previous and current value so we don't + need to needlessly search again */ + let max = Math.min(searchString.length, this.searchString.length); + let commonPrefix = 0; + for(; commonPrefix != max; ++commonPrefix) + if(searchString[commonPrefix] != this.searchString[commonPrefix]) break; + + /* Drop items off the stack if it has has more than is needed for the + common prefix (it needs to have at least one item, though) */ + if(commonPrefix + 1 < this.searchStack.length) + this.searchStack.splice(commonPrefix + 1, this.searchStack.length - commonPrefix - 1); + + /* Add new characters from the search string */ + let foundPrefix = commonPrefix; + for(; foundPrefix != searchString.length; ++foundPrefix) { + /* Calculate offset and count of children */ + let offset = this.searchStack[this.searchStack.length - 1]; + + /* If there's a lot of results, the result count is a 16bit BE value + instead */ + let resultCount = this.trie.getUint8(offset); + let resultCountSize = 1; + if(resultCount & 0x80) { + resultCount = this.trie.getUint16(offset, false) & ~0x8000; + ++resultCountSize; + } + + let childCount = this.trie.getUint8(offset + resultCountSize); + + /* Go through all children and find the next offset */ + let childOffset = offset + resultCountSize + 1 + resultCount*this.resultIdBytes; + let found = false; + for(let j = 0; j != childCount; ++j) { + if(String.fromCharCode(this.trie.getUint8(childOffset + j)) != searchString[foundPrefix]) + continue; + + this.searchStack.push(this.trie.getUint32(childOffset + childCount + j*this.fileOffsetBytes, true) & this.fileOffsetMask & ~this.lookaheadBarrierMask); + found = true; + break; + } + + /* Character not found */ + if(!found) { + /* If we found everything except spaces at the end, pretend the + spaces aren't there. On the other hand, we *do* want to + try searching with the spaces first -- it can narrow down + the result list for page names or show subpages (which are + after a lookahead barrier that's a space). */ + if(!searchString.substr(foundPrefix).trim().length) + searchString = searchString.substr(0, foundPrefix); + + break; + } + } + + /* Save the whole found prefix for next time */ + this.searchString = searchString.substr(0, foundPrefix); + + /* If the whole thing was not found, return an empty result and offer + external search */ + if(foundPrefix != searchString.length) { + /* istanbul ignore if */ + if(typeof document !== 'undefined') { + let link = document.getElementById('search-external'); + if(link) + link.href = link.dataset.searchEngine.replace('{query}', encodeURIComponent(searchString)); + } + return [[], '']; + } + + /* Otherwise gather the results */ + let suggestedTabAutocompletionChars = []; + let results = []; + let leaves = [[this.searchStack[this.searchStack.length - 1], 0]]; + while(leaves.length) { + /* Pop offset from the queue */ + let current = leaves.shift(); + let offset = current[0]; + let suffixLength = current[1]; + + /* Calculate child count. If there's a lot of results, the count + "leaks over" to the child count storage. */ + /* TODO: hmmm. this is helluvalot duplicated code. hmm. */ + let resultCount = this.trie.getUint8(offset); + let resultCountSize = 1; + if(resultCount & 0x80) { + resultCount = this.trie.getUint16(offset, false) & ~0x8000; + ++resultCountSize; + } + + let childCount = this.trie.getUint8(offset + resultCountSize); + + /* Populate the results with all values associated with this node */ + for(let i = 0; i != resultCount; ++i) { + let index = this.trie.getUint32(offset + resultCountSize + 1 + i*this.resultIdBytes, true) & this.resultIdMask; + results.push(this.gatherResult(index, suffixLength, 0xffffff)); /* should be enough haha */ + + /* 'nuff said. */ + if(results.length >= this.maxResults) + return [results, this.autocompletedCharsToUtf8(suggestedTabAutocompletionChars)]; + } + + /* Dig deeper */ + let childOffset = offset + resultCountSize + 1 + resultCount*this.resultIdBytes; + for(let j = 0; j != childCount; ++j) { + let offsetBarrier = this.trie.getUint32(childOffset + childCount + j*this.fileOffsetBytes, true) & this.fileOffsetMask; + + /* Lookahead barrier, don't dig deeper */ + if(offsetBarrier & this.lookaheadBarrierMask) continue; + + /* Append to the queue */ + leaves.push([offsetBarrier & ~this.lookaheadBarrierMask, suffixLength + 1]); + + /* We don't have anything yet and this is the only path + forward, add the char to suggested Tab autocompletion. Can't + extract it from the leftmost 8 bits of offsetBarrier because + that would make it negative, have to load as Uint8 instead. + Also can't use String.fromCharCode(), because later doing + str.charCodeAt() would give me back UTF-16 values, which is + absolutely unwanted when all I want is check for truncated + UTF-8. */ + if(!results.length && leaves.length == 1 && childCount == 1) + suggestedTabAutocompletionChars.push(this.trie.getUint8(childOffset + j)); + } + } + + return [results, this.autocompletedCharsToUtf8(suggestedTabAutocompletionChars)]; + }, + + gatherResult: function(index, suffixLength, maxUrlPrefix) { + let flags = this.map.getUint8(this.mapFlagsOffset + index); + let resultOffset = this.map.getUint32(index*this.fileOffsetBytes, true) & this.fileOffsetMask; + + /* The result is an alias, parse the aliased prefix */ + let aliasedIndex = null; + if((flags & 0xf0) == 0x00) { + aliasedIndex = this.map.getUint32(resultOffset, true) & this.resultIdMask; + resultOffset += this.resultIdBytes; + } + + /* The result has a prefix, parse that first, recursively */ + let name = ''; + let url = ''; + if(flags & (1 << 3)) { + let prefixIndex = this.map.getUint32(resultOffset, true) & this.resultIdMask; + let prefixUrlPrefixLength = Math.min(this.map.getUint16(resultOffset + this.resultIdBytes, true) & this.nameSizeMask, maxUrlPrefix); + + let prefix = this.gatherResult(prefixIndex, 0 /*ignored*/, prefixUrlPrefixLength); + name = prefix.name; + url = prefix.url; + + resultOffset += this.resultIdBytes + this.nameSizeBytes; + } + + /* The result has a suffix, extract its length */ + let resultSuffixLength = 0; + if(flags & (1 << 0)) { + resultSuffixLength = this.map.getUint16(resultOffset, true) & this.nameSizeMask; + resultOffset += this.nameSizeBytes; + } + + let nextResultOffset = this.map.getUint32((index + 1)*this.fileOffsetBytes, true) & this.fileOffsetMask; + + /* Extract name */ + let j = resultOffset; + for(; j != nextResultOffset; ++j) { + let c = this.map.getUint8(j); + + /* End of null-delimited name */ + if(!c) { + ++j; + break; /* null-delimited */ + } + + name += String.fromCharCode(c); /* eheh. IS THIS FAST?! */ + } + + /* The result is an alias and we're not deep inside resolving a prefix, + extract the aliased name and URL */ + /* TODO: this abuses 0xffffff to guess how the call stack is deep and + that's just wrong, fix! */ + if(aliasedIndex != null && maxUrlPrefix == 0xffffff) { + let alias = this.gatherResult(aliasedIndex, 0 /* ignored */, 0xffffff); /* should be enough haha */ + + /* Keeping in UTF-8, as we need that for proper slicing (and concatenating) */ + return {name: name, + alias: alias.name, + url: alias.url, + flags: alias.flags, + cssClass: alias.cssClass, + typeName: alias.typeName, + suffixLength: suffixLength + resultSuffixLength}; + } + + /* Otherwise extract URL from here */ + let max = Math.min(j + maxUrlPrefix - url.length, nextResultOffset); + for(; j != max; ++j) { + url += String.fromCharCode(this.map.getUint8(j)); + } + + /* This is an alias, return what we have, without parsed CSS class and + type name as those are retrieved from the final target type */ + if(!(flags >> 4)) + return {name: name, + url: url, + flags: flags & 0x0f, + suffixLength: suffixLength + resultSuffixLength}; + + /* Otherwise, get CSS class and type name for the result label */ + let typeMapIndex = (flags >> 4) - 1; + let cssClass = [ + /* Keep in sync with _search.py */ + 'm-default', + 'm-primary', + 'm-success', + 'm-warning', + 'm-danger', + 'm-info', + 'm-dim' + ][this.typeMap.getUint8(typeMapIndex*2)]; + let typeNameOffset = this.typeMap.getUint8(typeMapIndex*2 + 1); + let nextTypeNameOffset = this.typeMap.getUint8((typeMapIndex + 1)*2 + 1); + let typeName = ''; + for(let j = typeNameOffset; j != nextTypeNameOffset; ++j) + typeName += String.fromCharCode(this.typeMap.getUint8(j)); + + /* Keeping in UTF-8, as we need that for proper slicing (and + concatenating). Strip the type from the flags, as it's now expressed + directly. */ + return {name: name, + url: url, + flags: flags & 0x0f, + cssClass: cssClass, + typeName: typeName, + suffixLength: suffixLength + resultSuffixLength}; + }, + + escape: function(name) { + return name.replace(/[\"&<>]/g, function (a) { + return { '"': '"', '&': '&', '<': '<', '>': '>' }[a]; + }); + }, + escapeForRtl: function(name) { + /* Besides the obvious escaping of HTML entities we also need + to escape punctuation, because due to the RTL hack to cut + text off on left side the punctuation characters get + reordered (of course). Prepending ‎ works for most + characters, parentheses we need to *soak* in it. But only + the right ones. And that for some reason needs to be also for &. + Huh. https://en.wikipedia.org/wiki/Right-to-left_mark */ + return this.escape(name).replace(/[:=]/g, '‎$&').replace(/(\)|>|&|\/)/g, '‎$&‎'); + }, + + renderResults: /* istanbul ignore next */ function(resultsSuggestedTabAutocompletion) { + if(!this.searchString.length) { + document.getElementById('search-help').style.display = 'block'; + document.getElementById('search-results').style.display = 'none'; + document.getElementById('search-notfound').style.display = 'none'; + return; + } + + document.getElementById('search-help').style.display = 'none'; + + /* Results found */ + if(resultsSuggestedTabAutocompletion[0].length) { + let results = resultsSuggestedTabAutocompletion[0]; + + document.getElementById('search-results').style.display = 'block'; + document.getElementById('search-notfound').style.display = 'none'; + + let list = ''; + for(let i = 0; i != results.length; ++i) { + /* Labels + */ + list += '
' + results[i].typeName + '
' + (results[i].flags & 2 ? '
deprecated
' : '') + (results[i].flags & 4 ? '
deleted
' : ''); + + /* Render the alias (cut off from the right) */ + if(results[i].alias) { + list += '
' + this.escape(results[i].name.substr(0, results[i].name.length - this.searchString.length - results[i].suffixLength)) + '' + this.escape(results[i].name.substr(results[i].name.length - this.searchString.length - results[i].suffixLength, this.searchString.length)) + '' + this.escapeForRtl(results[i].name.substr(results[i].name.length - results[i].suffixLength)) + ': ' + this.escape(results[i].alias) + ''; + + /* Render the normal thing (cut off from the left, have to + escape for RTL) */ + } else { + list += '
' + this.escapeForRtl(results[i].name.substr(0, results[i].name.length - this.searchString.length - results[i].suffixLength)) + '' + this.escapeForRtl(results[i].name.substr(results[i].name.length - this.searchString.length - results[i].suffixLength, this.searchString.length)) + '' + this.escapeForRtl(results[i].name.substr(results[i].name.length - results[i].suffixLength)); + } + + /* The closing */ + list += '
'; + } + document.getElementById('search-results').innerHTML = this.fromUtf8(list); + document.getElementById('search-current').scrollIntoView(true); + + /* Append the suggested tab autocompletion, if any, and if the user + didn't just delete it */ + let searchInput = document.getElementById('search-input'); + if(this.autocompleteNextInputEvent && resultsSuggestedTabAutocompletion[1].length && searchInput.selectionEnd == searchInput.value.length) { + let suggestedTabAutocompletion = this.fromUtf8(resultsSuggestedTabAutocompletion[1]); + + let lengthBefore = searchInput.value.length; + searchInput.value += suggestedTabAutocompletion; + searchInput.setSelectionRange(lengthBefore, searchInput.value.length); + } + + /* Nothing found */ + } else { + document.getElementById('search-results').innerHTML = ''; + document.getElementById('search-results').style.display = 'none'; + document.getElementById('search-notfound').style.display = 'block'; + } + + /* Don't allow things to be selected just by motionless mouse cursor + suddenly appearing over a search result */ + this.mouseMovedSinceLastRender = false; + + /* Reset autocompletion, if it was allowed. It'll get whitelisted next + time a character gets inserted. */ + this.autocompleteNextInputEvent = false; + }, + + searchAndRender: /* istanbul ignore next */ function(value) { + let prev = performance.now(); + let results = this.search(value); + let after = performance.now(); + this.renderResults(results); + if(this.searchString.length) { + document.getElementById('search-symbolcount').innerHTML = + results[0].length + (results[0].length >= this.maxResults ? '+' : '') + " results (" + Math.round((after - prev)*10)/10 + " ms)"; + } else + document.getElementById('search-symbolcount').innerHTML = this.symbolCount; + }, +}; + +/* istanbul ignore next */ +function selectResult(event) { + if(!Search.mouseMovedSinceLastRender) return; + + if(event.currentTarget.parentNode.id == 'search-current') return; + + let current = document.getElementById('search-current'); + current.removeAttribute('id'); + event.currentTarget.parentNode.id = 'search-current'; +} + +/* This is separated from showSearch() because we need non-destructive behavior + when appearing directly on a URL with #search */ /* istanbul ignore next */ +function updateForSearchVisible() { + /* Prevent accidental scrolling of the body, prevent page layout jumps */ + let scrolledBodyWidth = document.body.offsetWidth; + document.body.style.overflow = 'hidden'; + document.body.style.paddingRight = (document.body.offsetWidth - scrolledBodyWidth) + 'px'; + + document.getElementById('search-input').value = ''; + document.getElementById('search-input').focus(); + document.getElementById('search-results').style.display = 'none'; + document.getElementById('search-notfound').style.display = 'none'; + document.getElementById('search-help').style.display = 'block'; +} + +/* istanbul ignore next */ +function showSearch() { + window.location.hash = '#search'; + Search.canGoBackToHideSearch = true; + + updateForSearchVisible(); + document.getElementById('search-symbolcount').innerHTML = Search.symbolCount; + return false; +} + +/* istanbul ignore next */ +function hideSearch() { + /* If the search box was opened using showSearch(), we can go back in the + history. Otherwise (for example when we landed to #search from a + bookmark or another server), going back would not do the right thing and + in that case we simply replace the current history state. */ + if(Search.canGoBackToHideSearch) { + Search.canGoBackToHideSearch = false; + window.history.back(); + } else { + window.location.hash = '#!'; + window.history.replaceState('', '', window.location.pathname); + } + + /* Restore scrollbar, prevent page layout jumps */ + document.body.style.overflow = 'auto'; + document.body.style.paddingRight = '0'; + + return false; +} + +/* istanbul ignore next */ +function copyToKeyboard(text) { + /* Append to the popup, appending to document.body would cause it to + scroll when focused */ + let searchPopup = document.getElementsByClassName('m-doc-search')[0]; + let textarea = document.createElement("textarea"); + textarea.value = text; + searchPopup.appendChild(textarea); + textarea.focus(); + textarea.select(); + + document.execCommand('copy'); + + searchPopup.removeChild(textarea); + document.getElementById('search-input').focus(); +} + +/* Only in case we're running in a browser. Why a simple if(document) doesn't + work is beyond me. */ /* istanbul ignore if */ +if(typeof document !== 'undefined') { + document.getElementById('search-input').oninput = function(event) { + Search.searchAndRender(document.getElementById('search-input').value); + }; + + document.onkeydown = function(event) { + /* Search shown */ + if(window.location.hash == '#search') { + /* Close the search */ + if(event.key == 'Escape') { + hideSearch(); + + /* Focus the search input, if not already, using T or Tab */ + } else if((!document.activeElement || document.activeElement.id != 'search-input') && (event.key.toLowerCase() == 't' || event.key == 'Tab') && !event.shiftKey && !event.ctrlKey && !event.altKey && !event.metaKey) { + document.getElementById('search-input').focus(); + return false; /* so T doesn't get entered into the box */ + + /* Fill in the autocompleted selection */ + } else if(event.key == 'Tab' && !event.shiftKey && !event.ctrlKey && !event.altKey && !event.metaKey) { + /* But only if the input has selection at the end */ + let input = document.getElementById('search-input'); + if(input.selectionEnd == input.value.length && input.selectionStart != input.selectionEnd) { + input.setSelectionRange(input.value.length, input.value.length); + return false; /* so input won't lose focus */ + } + + /* Select next item */ + } else if(event.key == 'ArrowDown') { + let current = document.getElementById('search-current'); + if(current) { + let next = current.nextSibling; + if(next) { + current.id = ''; + next.id = 'search-current'; + next.scrollIntoView(false); + } + } + return false; /* so the keypress doesn't affect input cursor */ + + /* Select prev item */ + } else if(event.key == 'ArrowUp') { + let current = document.getElementById('search-current'); + if(current) { + let prev = current.previousSibling; + if(prev) { + current.id = ''; + prev.id = 'search-current'; + prev.scrollIntoView(false); + } + } + return false; /* so the keypress doesn't affect input cursor */ + + /* Go to result (if any) */ + } else if(event.key == 'Enter') { + let result = document.getElementById('search-current'); + if(result) { + result.firstElementChild.click(); + + /* We might be staying on the same page, so restore scrollbar, + and prevent page layout jumps */ + document.body.style.overflow = 'auto'; + document.body.style.paddingRight = '0'; + } + return false; /* so the form doesn't get sent */ + + /* Copy (Markdown) link to keyboard */ + } else if((event.key.toLowerCase() == 'l' || event.key.toLowerCase() == 'm') && event.metaKey) { + let result = document.getElementById('search-current'); + if(result) { + let plain = event.key.toLowerCase() == 'l'; + let link = plain ? result.firstElementChild.href : + '[' + result.firstElementChild.dataset.mdLinkTitle + '](' + result.firstElementChild.href + ')'; + + copyToKeyboard(link); + + /* Add CSS class to the element for visual feedback (this + will get removed on keyup), but only if it's not already + there (in case of key repeat, e.g.) */ + if(result.className.indexOf('m-doc-search-copied') == -1) + result.className += ' m-doc-search-copied'; + console.log("Copied " + (plain ? "link" : "Markdown link") + " to " + result.firstElementChild.dataset.mdLinkTitle); + } + + return false; /* so L doesn't get entered into the box */ + + /* Looks like the user is inserting some text (and not cutting, + copying or whatever), allow autocompletion for the new + character. The oninput event resets this back to false, so this + basically whitelists only keyboard input, including Shift-key + and special chars using right Alt (or equivalent on Mac), but + excluding Ctrl-key, which is usually not for text input. In the + worst case the autocompletion won't be allowed ever, which is + much more acceptable behavior than having no ability to disable + it and annoying the users. */ + } else if(event.key != 'Backspace' && event.key != 'Delete' && !event.metaKey && (!event.ctrlKey || event.altKey) + /* Don't ever attempt autocompletion with Android virtual + keyboards, as those report all `event.key`s as + `Unidentified` (on Chrome) or `Process` (on Firefox) with + `event.code` 229 and thus we have no way to tell if a text + is entered or deleted. See this WONTFIX bug for details: + https://bugs.chromium.org/p/chromium/issues/detail?id=118639 + Couldn't find any similar bugreport for Firefox, but I + assume the virtual keyboard is to blame. + + An alternative is to hook into inputEvent, which has the + data, but ... there's more cursed issues right after that: + + - setSelectionRange() in Chrome on Android only renders + stuff, but doesn't actually act as such. Pressing + Backspace will only remove the highlight, but the text + stays here. Only delay-calling it through a timeout will + work as intended. Possibly related SO suggestion (back + then not even the rendering worked properly): + https://stackoverflow.com/a/13235951 + Possibly related Chrome bug: + https://bugs.chromium.org/p/chromium/issues/detail?id=32865 + + - On Firefox Mobile, programmatically changing an input + value (for the autocompletion highlight) will trigger an + input event, leading to search *and* autocompletion being + triggered again. Ultimately that results in newly typed + characters not replacing the autocompletion but rather + inserting before it, corrupting the searched string. This + event has to be explicitly ignored. + + - On Firefox Mobile, deleting a highlight with the + backspace key will result in *three* input events instead + of one: + 1. `deleteContentBackward` removing the selection (same + as Chrome or desktop Firefox) + 2. `deleteContentBackward` removing *the whole word* + that contained the selection (or the whole text if + it's just one word) + 3. `insertCompositionText`, adding the word back in, + resulting in the same state as (1). + I have no idea WHY it has to do this (possibly some + REALLY NASTY workaround to trigger correct font shaping?) + but ultimately it results in the autocompletion being + added again right after it got deleted, making this whole + thing VERY annoying to use. + + I attempted to work around the above, but it resulted in a + huge amount of browser-specific code that achieves only 90% + of the goal, with certain corner cases still being rather + broken (such as autocompletion randomly triggering when + erasing the text, even though it shouldn't). So disabling + autocompletion on this HELLISH BROKEN PLATFORM is the best + option at the moment. */ + && event.key != 'Unidentified' && event.key != 'Process' + ) { + Search.autocompleteNextInputEvent = true; + /* Otherwise reset the flag, because when the user would press e.g. + the 'a' key and then e.g. ArrowRight (which doesn't trigger + oninput), a Backspace after would still result in + autocompleteNextInputEvent, because nothing reset it back. */ + } else { + Search.autocompleteNextInputEvent = false; + } + + /* Search hidden */ + } else { + /* Open the search on the T or Tab key */ + if((event.key.toLowerCase() == 't' || event.key == 'Tab') && !event.shiftKey && !event.ctrlKey && !event.altKey && !event.metaKey) { + showSearch(); + return false; /* so T doesn't get entered into the box */ + } + } + }; + + document.onkeyup = function(event) { + /* Remove highlight after key is released after a link copy */ + if((event.key.toLowerCase() == 'l' || event.key.toLowerCase() == 'm') && event.metaKey) { + let result = document.getElementById('search-current'); + if(result) result.className = result.className.replace(' m-doc-search-copied', ''); + } + }; + + /* Allow selecting items by mouse hover only after it moves once the + results are populated. This prevents a random item getting selected if + the cursor is left motionless over the result area. */ + document.getElementById('search-results').onmousemove = function() { + Search.mouseMovedSinceLastRender = true; + }; + + /* If #search is already present in the URL, hide the scrollbar etc. for a + consistent experience */ + if(window.location.hash == '#search') updateForSearchVisible(); +} + +/* For Node.js testing */ /* istanbul ignore else */ +if(typeof module !== 'undefined') { module.exports = { Search: Search }; } diff --git a/searchdata-v2.js b/searchdata-v2.js new file mode 100644 index 0000000000..0609880aa0 --- /dev/null +++ b/searchdata-v2.js @@ -0,0 +1,2 @@ +/* Generated by https://mcss.mosra.cz/documentation/doxygen/. Do not edit. */ +Search.load('O+!-x00000`2qj{Jb?fJ|5gD2#()3-0RR9100C|U00001X$SxS00CzX00001WfTAa0RRC200Cqm00001ZX^Hz0RRF300C$)00001bTj|}00Ch-000311ONa5DMkPQ0RaO5C`tf;00C%F00001bXWiY00CiM00001aAW`g00CcW00001WpDrh00Crn00001X?y?x0RRR700Ak8000321pp|F0Du4iJdywa00BIj00001a-aYJ00D2N00001bgTdX00CjL00001a<~8h00Cvb00001aKr!r00m-YaCdJS001fg06+i$f&c)@00001I?w0e}Gm#{eiiJ&*x_paB4~0RRC2&Hw-bDaru=0RhbbD9!0-j00DGz0ssI3X?Owv00DD;0ssL3wgCVEa*6@~00DH40ssI3aFhZ700Cc`0ssI3XrKZB00DHS0ssI4Z()Q20IUK40RXiD00DTs0ssI3WxxUe00Csi0ssI3Zp;Dz00VMxX$%1XvH}3o0ssI3U)TZw00Cv@0ssI3W9$L|00DCH0ssI3b@&1R00D3Q0ssU62>=ZM3jhxQ00Aiq0{{d82mlNK3IGlOC=>&L00DU#0{{R4VJHIt00D9?0{{X5WdLUY00AjF0{{X6WB_IWC_n>%00DVM0{{R4VNe4A00DAV0{{R4a$Exd0sv_MYXATNDQE)#0s&|MY5*v11AqVlZgc|x00Cis0{{R4WrPC&00C@@0{{R4Z;%5300D270{{X5Z2)fo00AkY0{{X5aR74w00Akk0{{X6Z~$@uD6|8B00CvX0{{R4ZNvir00C*r0{{R4bkG9;0s?FRZU87>r~`o30{{R4W!wV*00DIB0{{R4VekV00swUYcK`qZDf|Nf0s(XYb^s^>1b_embO;0h00C|i1ONa5X&3|m00D0v1ONa5a3ll(00Cbr1ONa5XD|c+00C|`1ONa5X*>h~00DGD1ONa5VMqi300D1K1ONa5Y*YjQ0swgcdjJ3dDPRNu0s(jcdH^V91b_ema%=D00AlX1ONg7gaC#BDEtI~00CtJ1poj6Z43nf00LoY@B{!71pojCVPa%vX>)X90|1-@0QLg_S_A-;1OUhc02l=T00Cbj1pop7sQ{}000AjR1pop8r~s+}C`<)_00VM!bTk71Km`C&1pop7695qa00Aj#1pos882}vs8vpsD1HTi0s;~M5CAAWa0P&b1pom66#xJMDV_xY0Ra>MD53>`00BIx1pom67XSbODYgXw0Ra{OD7poJ00BL~1pop7y#T)e00Ak^1pop8ya2ucDAWaj00CXv1poj9Jv<>>kOcs+1pvqe0OSP#00DC91poj6Z~O%S00DFY1^@s7VF(5Q00D9i1^@s7WfTSg00D3s1^@v79{>OWDJBL00RbKWC@Kbk00D9^1^@s7VK@c=00Ct_1^@v7J^%m#a!LjO00D1K1^@s7bW{ca00CiI1^@s7a$p7k00CuY1^@s7bZiCy00C)o1^@s7Uw8%p00DG<1^@s7bA$!}00C}_1^@v7MF0Q+DV7ER0Rcn+D4GU<00C~G1^@s7X{ZJO00C#N1^@s7WwZtW0RTq;00Ak$1^@v8MgS(pYi0)k00Coe2LJ#8VRQ!o00Clp2LJ&AE&wQBRtJE92LJ#8Wrha;00Co?2LJ#8VVDO10RUG300Aka2LJ&9Rsbld2Y>(pd9DWl00L}uo(BN72LJ#8aJ&Zq0su(>O8@`?Da;1|0s%+>N&qO*2Y>(pWY`A)00VMuZcGON#s>i62LJ*9B>*P?00AlX2LJ*ABmgD=DEtS200C|S2mk;9Wef-a00DFo2mk;9bQlN#00Chh2mk~CO#n{-Q29DF6TgDWV7f0RbogD5eO200C>P2mk;9W3&hW00CjT2mk;9V!#Lh00Cdd2mk;9aLfn*0st!jEdT%kDcA@A0s$%jEC49p2!H?qW#k9|00D092mk;9b@T`T0RTGy00Aig2><~BIshmH34j0rYYGVf00CnX2><{AVHgPj00Cki2><{AUnB_t00C$!2><{Ab1(@200VDwb=8DGXOULH2^sP00AjV2>=8EG5|IJGypgNC{zi600DGb2><{Aa%c$v00Cug2><{Ab94y+0RTS$00DA<2><{AZ-fZ|00DH02><{AVUP&`00DBA2><{AWt<5B0RV{r00Ake2><~AivR!tDY6Lw0Rf5tD7FcJ00DEn2><{AWyA>p00C^u2><{AV$cZy00Cjv2><{AbleF500Cd(2><{AX6Ok300D3A2><~ChyW;GtO<{AdHM+e00ChJ3IG5BatsOp00D9m3IG8BjQ{`vDIN*{0RfBvC?X1g00C|&3IG5BVK52+00Ct-3IG5BY&;4800D183IG5BZ%7IN0RWEx00Ajf3IG8BkpKVzDP9Ty0RfNzC}IkL00Cua3IG5BZEy+z00C)s3IG5BbbJZ`0RoNyC|_6#fPxAD00Cu)3IG5Bbd(AJ00Ci|3IG8BlK=n#DW(bl0RfT#D5?s800DHc3IG5BZnz2n00C*f3IG5BZ^Q}!00D5y3IG5BU(gBw00C##3IG5BZrln000C*@3IG5Bbm$5I00Cj{3IG5BZ}bWP00C_J3IGEDl>nCjnE(I*DFzDw0|Ar(mH?OlC=LsN00DCp3jhECbs!4>00D0%3jhECWh@H-00C|?3jhECWjG4}00Cz{3jhECZ$t|K00C`E3jhECZ%_*W0RWo-00Ajn3jhHDngA$Z3xEIta%Kwv00Cug3jhECXLJhy00Cus3jhECbbt#000C}>3jhHCod5sDZ&c?0Rf%>D8>tb00C#r3jhECZqy3^00C**3jhECa^MR900DI73jhHCp#T5@De?;d0Rf-@DE14000CwE3jhECYy=Dd00CkO3;+QDqW}N_DHaR>0Rf@_C>jia00Ctn3;+NDZ72)?00LoY5DWk=3;+QDr2qf{DLxDU0Rf}{C_)T?00Cu43;+NDbx;fd00C@P3;+NDVO$IV019DZWM*h-ZgX^Y7zzMR3IL!A000XBRto@(3jn+e0PG6@GzmH?)d2tjDQph_1_8T^%mL5=)Bz}Z4}bsxXn+p@00DH84*&oGVVDm900D5G4*&oGU!)HJ00MG!W)A?W4*&rG)c^niDY_2;0RhwiD83JX00DW#4*&oGbj%L`00D5)4*&uHGXXUL00Al94*&uIG66IJDC7@-00Cs`4*&oHZEn~P0Q3(40RYzk00Aik5C8!I)&M975P$#yYz`0r00D0n5C8xHZyXQ+0RTS%00Ai|5C8!IJ^?5!5P$#yXEG1~00C|~5C8xHX+RJF00DAF5C8xHbW9Kc0RTY(00Ajj5C8!IKmjOR5P$#yXJQZl00C}l5C8xHX>bq#00DA#5C8xHbbJs100DD?5C8xIb9Yh@0EiF(00BCV5C8xHI+zdu00Cs45C8xHbfgdf00LrjA`k$o5C8%I*#O%B00Akw5C8%J*Z|r9D8LYa00CXb5C8-K^#Jn#_W=0-00Al15C8-L^Z@bz_5k<*DBuu)1po^H4FL}U5djkc00AlV5C8=N3IPlO4gnAW5&=CZ<`4h?5r6~$1pxyA2LTBI00Ai)5dZ}M9|0i&BLO7=CjkHfDJl^F1pyubAORu)BmpJ?C^iv*1OfyB0s#gA2mvTPBoTl-5dZ}M6#*9k837vs9RUCVDP9o(1pyQR76BLm8UY*uC~6Ua00BL45dZ-IM*#oeLDDDw}00C(95dZ-IO#uJ_DGCw*0Rc<_C=L>U00DFq5&!@JZX6N-00Ctp5&!@KbaDg|04Ndw1OPb!Hvu~VJplj#DL4`U1OYe!HUT;TJOL;|5`X{!WJnSK00C}R5&!@JWn2;f00D4f5&!@JWoQxr00LohE)oE45&!`J=Kuf!DSi?F0RiR!D1s7z00Cu)5&!@JdXN$T0RTe*00AkS5&!`KLIEhC5`X{!a;6dh0sv6~PXPb{DYOy*0s&9~P5~&o5`X{!XuuKx00DH$5&!@JVbBr)00D5;5&!@JV%!n{00U`sb(RtUt`Y#^5&!`J=>Px$DfSWo0RiX$DEbnB00C$K6951KbO;jw00ChR6951Ka1;{&1OV*->j3Wn@c;k;DIgO71Oe;->HzKl@Bk<(6Mz5#WH1u|00C}36951KWkeGI00D4H695DN{Q&y_{{R6200Ajh695DO`~dm@{r~_0C}0zS00C}h6951KXLJ()00C)w6951KbAS^700MAxP!j-#6954KC;DJm2I0Rcz>C@vI$00D9|6aWALVLTK700Ct}6aWAOZ(?O^+!Fu>6aXX?07w)70RSlh00DAf6aWALZ)6kz00DGr6aWALVQ>@x00DA#6aWALWqcF>00DG@6aWGMD*-J500AkE6aWGNDgi73D3la{00C~A6aWALX`~bY00C#J6aWALWv~f(@00DH)6aWALbJP?700Cdx6aWALW#AM500Cs?6aWALY3vjL0RT$@00AlZ6aWDMN&zVR6o3E$WhN6#xJMWe^nr0RU4000Ai+6#xMMRRI72DJB&F0RdD2C@K|z0RmD1C}bcNfG`yR00Ct<6#xJMbVL;Z00Ci26#xJMV^9?U00C}R6#xJMbzBty00DAh6#xJXWp8kEeqm#2Vs~tG`VRoy5dd@&0O%3`8WRAF697&W0EiR-wiE#J6aW?#0B98e00BB~6#xMMsQ~~1Wu_GX00D5S6#xJMd9W1#00DHi6#xYQM+HR%Nd-#F#NCip-LIo&2&J}>(6#xMMUj+aGDf$%v0RdhGDE<|I00DFa761SNUknxi00CtZ761SNdKeY}00C(p761VNX9WNODJm8K0Rd(OC@vO&00Aa6761SNXFL`F00C}7761SNX-F0T00DAN761SNbW|1q00DDa761SNI$#z600BB?761SNWNa1y00DGz761SNb9fd200AI=761SNbc7ZF00DD~761SNZjcrL00D27761SOb7LeH0Gt*80RUkI00Aki761VOUAA00TWBA?6hTq80$Y761SNa>Nz@00D2(761SNbl4UE00Cj%761SNa^w~O00Cv{761SNaPSrY1^`V3PX$p0R|QiARRsV6Df|`y1_4Y3P6bc}Rs~W8R0Svs7k~f(bPyK+00C|y7XSbOWhfT_00C|;7XSbOZ!{MG00D417XSbOZ9o?Q00D1C7XSbOV@wwS00Cc87XSbOXjm5j00DGf7XSbOVPqEo0RUMA00Aj*7XSePSOq9_7k~f(WqKC?00D4<7XSbOd59MP0RUSC00AkK7XSePS_LSW7k~f(be00Cdt7XSbOXxtY700DI37XSbOVdxhC00D6B7XSeOT?GIEDf$-x0RdbEDE=3K00DRe7ytkPWegYq00CqY7ytkPZWtH<0RUwM00Ai^7ytnQWCbWF7=Qo)c`g_L00Ct-7ytkUZ*X*eX>0Zt0BRQiju!y*7XTg@06Z7~00BBe7ytnRXa!$7ycGak7=Qo)bYd6)00C}p7ytkPWpo$-00C}#7ytkPZ-5v800D4@7ytkPZHyQI00D237ytkPW0)8K0RmP5I$xj_fSwot00C&E7ytjB*X=>g>d;Q`wL;{o3R=K%l#DYh5@0|4y-@d57v00Ak`7yttS>;dor?g1#+7=Qo)W!@M700C_37ytkPY48{T0RXE400Ald7ytnQssbng8Grx*ZUz|u00D0f82|tQX%ra%00DFw82|tQa3C1~00C(x82|tQax57D00Cn%82|tQb2u3Q00Ct_82|wQtpWf6DM}dt0RgN6C{7uG00CuG82|tQV_X>k00DAh82|tQb!Zs?00D1q82|wQuL1x8DS8J8Grx*a@H9D00D2_82|tQa^x8R00DC982|wQ^aKC_DfSrv0Ri&_DEb+I0Ra3200Aio8UO(S`vfQq8h`)+JQ5lJ0RRLA00Ai=8UO(S0|h7~8h`)+CMp^L00D9`8UO$RZ#WtN00DA78UO$Razq*c00Cu68UO$RUr-tV00CuI8UO$Rb6gq#00DAh8UO$RVQ3lv0RT1y00Aj<8UO(SH3cYm8h`)+CVmXNJ00Cl>8UO$RVVD{K00DHK8UO$RI;0u^00BCx8UO$RY_J*t00C{b8UO$RZ@d}+00MAyZW;i>8UO$RAjld300DH;8UO$RbJ!XH00C~^8UO$RZ{!*P0RRRC00AlR8UO(R2n7HEDf$`!0RaaEDE=CN0RjaDC?@n8fCL)=00AZp8vpZ|Q00BD68vpOI00d)jVsz>n08|?QcpCuX8vq6XCC}8~^|TW$+vT00DFM8~^|Ta{L?s00ChF9RL6Ua0nd$0|5R600jaC00Ai!9RLFX{RIC60R<==9e@A00D1m9RL6UbZ{L200Cik9RL6Ua(o>C00Cu!9RL6Ubch`Q00C)^9RL6UUz8mH00DHG9RL6UbD$jn00C~M9RL9U5Cs4MDY6{^0RayMD7GDd00C~i9RL6UX~Z1>00C#p9RL6UWzZb}0RR#O00Al79RL9V5d|pV9e@A0Rb-sD6$@a00CsU9smFVWxyT)00C^q9smFVY0Mq~00Cjr9smIVGz9P~00Cs^9smFVW$+#V00Ct79smFVW&9oh00CtJ9{>OWV+bDr00CnT9{>OWbrc@}0{}b)J_SGp00Ai=9{>XZI|V%jKLsc#AAkS>WiB5800C?|9{>OWVn81N00Ch}9{>OgZ*YEPV`*YxW^;60900T&01h1hTpa-V9RM&M0A3yds2%{=9sn9208AeM00BBu9{>RXK?OR1AAkS>bcP=Q00C@{9{>OWb(9|f00DEF9{>OWWuPAb00U-aa`qSi@EHK69{>pg>H*vV=mF#b-~rkJ;sM?P<^d>Q${2vG9{>OWWx5{#00DE>9{>OXbaJp50Nft{0RYJX00DFC9{>OWXYd~Y00Ck49{>OWZ2TVp00CwKAOHXXUkD%o00CtVAOHXXbrc`~00C?oAOHXXVIUv?00DL;AOHXXUo0R100Ct(AOHXXV>loH00DA7AOHXXbwnTl00D1GAOHXXb5I}v00CcCAOHXXWn3Tt00DMlAOHXXa%dm`00CugAOHXXb95j800CusAOHXYVRGUh0DvF>0RUG400DB4AOHXXb(A0g00D2BAOHaXSOEY5Wu_ni00DHWAOHXXb+8}+00C~cAOHXXX}ll+0RUM600CskAOHXXZp&U6A%Fk@WiTNC00C_}ApigYX+R+W0RUhD00AjXApijZUjZmkA%Fk@JyszA0RUnF00AjvApijYWB~vHDQ+PE0RdwHC~_fy0RUzJ00Ak0ApijZWdSIJA%Fn`VF4&SJ!m0-cp(6aApijYXaN8LDWV|&0Rd+LD5fER00BL$ApijYY5@QNDY_v50RU_P00Ak)ApijZYXK<8A%Fn_X#prbz9E3lApigbAv`@kULgRIApo=?0M;P@00DC1ApigYZ}cGm00DIRApigYVE`fk00D9aA^-pZWeg$!00D3kA^-peXl-+DbZ?*_0Ky;uA^-pZZyVsDkFe8BLDydAv`@k$|3;%A^;#G074@G00DANBLDyaZ(t(;00DGnBLDyaVQeD+00DAxBLDyaWq2b100D4*BLDycZFFy7A^@@?0E8m|00BCRBLD#b(E~b|BY*$_bex8I3j?=BLDyaWy&J}00C{*BLD#aw*deFa^fQZ00D32BLDyabnGJl00Ck0BLDyaa`+c)dSN500Ai$Bme;b;{yNzDIz2Q0RiFzC?+I;0s_>G$a62BmitA0FWdA00DBABme*bZ>S^y00DHaBme*bVYDOw00DBkBme*bWxyl=00D5uBme{e*8|%F*#q4J00Ak|Bme{f)&trD*aO@HDBL7~00Cv(^ca1({c(^cVLT-O00Ct}B>({c{sRC3a!w@x00D1OB>(^cbXX+-00CiMB>(^ca%3d{00CucB>(^cbZ{jA00C)sB>(^cUwkD100DG@B>(~dAp|1?00AkEB>(~eAOs==D3m3D00DEFB>(^cZlomu00C*LB>(^cVX!3t00MJ#h$R5FB>(^cZoDM`0RROA00Ak?B>({d1OzD1C4c|{Zq_9L00C*(^cXXGUS00Cv{B>({c2Lu2CDfT4*0RaXCDEcLU00CqGCIA2dZU`m-00eArVr57r0LCQ%@Ff5aCIAHh=L6{j?E~)v>jMA*DJCWW1p(#*=mYEn?gQ!rC^9C100Ct(00C~gDF6TgWxy!_00C#lDF6TgZ_FtG00C{%DF6TgZ`dgS0RV9X00AlFDF6Wha0DpmDS!Y0a_%Vr00Cw8DF6TgV*Dup00C_RDgXchbqFc|0RVFZ00Ai!DgXfias((CDu4h1XC5j500C|$DgXchX)G!L00D9`DgXchbT}#i0RVLb00AjPDgXfibOb0!Du4h1Wlkyp00C@PDgXchVq7W!0RVRd00AjzDgXfib_6JFDu4h1WpXM200C`!DgXciVQFG20Dvk00RVXf00AkGDgXficmybvDu4h1Wtu7g00DKPDgXchY^W*#00CjHDgXcqX<=eyW@v76bapBz0H7!U)+hidDFBEm0NyD84k`dXDgcHm0JJIq00CdRDgXcjZgg{?CjiJN0OTqF0ssL70|Wp8DflV?0s#O70t6`jDu4h1ZUid;00C(ZD*yliXA~;{00CthD*yxl4FnGa5d;$i00Ai`D*yxm3s00CcCD*ylia$G9_1OO!jDFi13D+B-mDQGJI1OX%jCD*yljZ)svH0E{aD1OP1rF$6CJGXwwuDV!?+1OY4rFa$0HG6X25D}Vq2WUMOy00C~gD*ylib-*hC00D2tD*yliV$3T500CdpD*ylia@Z>X00Cv*D*ylicjPMo00D36D*yoiHv|9yDfTM>0Rc7yDEcda00CtHEC2ujdI&5400C(ZEC2!kIRrZd00Ai)EC2!lI0QNbC?G6=00DU>EC2ujVK6KJ00D9~EC2ujay%>m0suV(KLh{)DM%~;0s%Y(J_IOEEPwz3Zd5D)00CiMEC2ujWn?S>00C@jEC2ujZ*VLC00D1yEC2!kK?Fkt00Ak2EC2!kMFd9#00AkEEC2!lL)W!EC75g0M;x3IxPTnEdZ!30QfBc00CbDE&v1oeFT97e*}XB00Ai`E&v1pd<1|5eguL9C@?O700MJ#AT9tlE&v1og#?KNhXjiR00AjZE&v1ojRcVdj|7th00AjpE&v1pj0BJbjs%hfC}=K#00DDuE&u=lVSFwC1OkKvhy;cNiUcTMST2BqE&u=lbcikh00Cv1E&u=wZ**g2aA{&@Y;$2}%p?FHB>)sA0PrRNCMN*uDgYoW0Fo;J@GAfmEC56<0H7`a00BCtE&u@nlmuTo5F`NDE`R_5W!^3T00C_3E&u=lV(=~i0RW%^00DFSE&u=lX8F8}}mVK6TM00Cw;F8}}mWjrqc0sx`{qyhi|DM&8>0s)}{qXH;SFMt36a#Sw>00CuQF8}}mbYw3800DGrF8}}mVQ?=100C`wF8}}ma(piU00D1;F8}}mW{58U00Cc)F8}}mY?Lnm00C{9F8}}mZ=f##0sy80r~&{1DXcF50s*B0rvfOlFMt36Jh(3a00BJ0F8}}ma>y?L00D2#F8}}mbkr{Z00CjzF8}}ma^Noj00Cv@F8}}maO^Jt00U%nZ$d8srY`{UF8}}mI`}UD0RgE3ItDO+00D9gFaQ7nWfU*~00DFwFaQ7nbRaMQ00ChpFaQ7nZ7eVV00D9`FaQ7nZ#Xaj00Cw`FaQ7nUqmnf00C@DFaQ7nZBQ@(00U`ZZ`>mQ_AUTcFaQMra{+e&c>#3+djS9eDQYkP1p#sab^&++bOCw+D0VP_00CuuFaQ7nZHzDg00C)|FaQ7nbeJ#z0Re9TU!E`k00CvBFaQ7nbgVD{00CjLFaQAnZ~*`TWxg-~00C{nFaQ7nX~-}D0RV9U00DH=FaQ7nW!NwP00DE}FaQ7nX5=sc0RVpi00AlRFaQAoegP=-Fn|C7J^C;J0RVvk00AioF#rJog8={mDH1UN0Re&mC>Ak*0RV*o00Ai^F#rJpgaIfhF@OOBfB`5xJq$5`95DbcF#rJohXDWqDMm2>0Re^qC`vJa00BKvF#rJoi2(osDPA!E0RW2u00AjzF#rJpiUBBWF@OOAhyf@)VljYnF#rGrAv`@k0x-00L%k>M#JdF#rJoeE|RgDaJ7X0RemgD9SN_00C^!F#rGoVc0PM00Cp(F#rGoZ{#rm00C_3F#rGoU+^&i00DFMF#rGrWOQ$7xG(_DFaW$U0Q@lk00BAzG5`Sqi~%|nGJpU9Wg0R700C_xG5`PpX(%!P00DF^G5`SpDgyukayl{q00Ch>G5`PpWkfOn0RSrl00C%FG5`PpbW}0`00C}VG5`PpZ(uS20RSum0st-pFarPqDR43X0s$=pF9RrcGJpU9WqdLK00Mb*Y%&0bG5`PpVT>{W0RS=s00AkSG5`SqF#{-|GJpU9J*F}M0RS`u00AkqG5`SpHUj_wDZVlQ0Rc4wD8e#;0RT7y00Ak`G5`SqHv=ftGJpXCGXp3*J-9M}$T9%hG5`SpIs*U!De^J^0RcG!DE2ad00BMxG5`SpJOcm$DGD^4l{rrGXMYtAv`@kt}+1PG5`cK046g400D9`GXMYqZ$vWy00DGLGXMYqVNf#w00DAVGXMYqWn41=00D4fGXMYtd2M8GN-_XuG60q`0BAD+00BB~GXMbsKLcMnG%^5yGk^dAWri~V00DH8GXMbqvH<`Aa-K5)00Cv9GXMYqbf_}`00DHaGXMYqVYD*<00C{fGXMYqa=uSu00Cj@GXMYqX7Dor00LoUm@@$OGXMbqjR61wWd<|=00C|aGynhrZxA#90RWBx00DCxGynhrWgs*F00C_#GynhrX)H7V00DF|GynhrUpO=X00Cq^GynhrZbUQy00Ci2GynhrUr;mv00DDWGynhrWn44>00DGjGynhrVQ4e}0RWEy00DD!GynhrZg?~R00CisGynhrZiF-d00Cc$GynhrWRNrf00C~6GynhrVVpDo00Cd3GynhrbEq@`00CvLGynhrX|yx|00DHmGynhrX}~l900C~sGynhrY0NYL00CywGynhrZrC&c00LxbZZrViGynhrU*t3Z00Cw0Gynhrbo4X;00D3MGynhrbpSO00RWHz00DChH2?qsXAm_200C|mH2?qsX&f~G00D9$H2?qsbSO0d00DC@H2?qsUo>IJ00DA(H2?qsbbvJg00DD`H2?qsUyL;X00Cu^H2?qsZkROy00C*9H2?qsY@{^+00CdBH2?qsX|Oc_00DHiH2?qsY`ir900DKvH2?tsk^uk#bIvsY00C#xH2?qsZrC*d00C*00C(NHUIztUkEk;00DCjHUIztViYz200ChdHUIztbRaeW00CbnHUIztY%Dea00Ch#HUIztWjHnf0RWQ$00DDEHUIztXGk^x00C}JHUIztX;d}<00DAZHUIztbYM0B00DDmHUIztUu-r200CukHUIztWOz0J00D1)HUIztV}v#U00C)=HUIztZjd$r0RWT%00DEHHUIzta-cQ<00CvDHUIztXRI~=00CvPHUIztbhtJE00C~kHUIztX~Z@F00CdhHUIztdC)ch00DB=HUIztVca$V00C~|HUIztY3Mcp0RWW&00DFKHUIzta`-j?00CwGHUIztX9PC@00CtRHvj+ubPzWH00C|mHvj+uX&g5I00CbjHvj+uY$!JX00ChxHvj+ubTl^r00Cnu00Ct}H~;_vZAdr(00CuAH~;_vY*aV^00CuMH~;_vUtl-@00DVsH~;_vVQe@600DAxH~;_va(FlZ00MJiEI0suH~;|vnE?O+ZjLwr00D23H~;_vX_z~00CbHIRF3wbPPEF00ChVIRF3wZx}fM00C?sIRF3wW+XWP00CbrIRF3wWH31Z00Ct-IRF3wcsw}(00Ch_IRF3wY)Cl(00CuAIRF6wn*jg;b6Pn700DAdIRF3wX=FJ700CiYIRF3waBw*Q00CciIRF3wWqdgR00DJ^IRF3wY=}7k00Ci+IRF3wc9b~)00Cc`IRF3wd7wD}00CvDIRF3wYpgi{00CdJIRF3wWw<#200DEpIRF3wa>O|R00CvnIRF6woB;pIsgCxV?a6p00DAFIsgCxZ%jG>00(YyVQF%7W)?I61~mZkHvr5y08}{u&^Z87IsgCxI#@aY0Rf!>I(9mM00DD+IsgCxXM{Qc00Ci&IsgCxY>+wt00Cx}IsgCxUz|Ds00DHOIsgCxVW>I)00C{TIsgCxaWyU%H00C~wIsgCxZ_qjb0RW!?00Cv(IsgCxY~VTo00Cm=IsgFxrU3u}W%4=z00C|GIsgCyVQK6-0Q@=t0RW%@00DUnI{*LyVGuh200D9qI{*LyavVDV0RW)^00CzxI{*LyZY(I{*LyZ{Rxs0RX1~00Cv}I{*LyZSXq)00C+CI{*Lybo@I20Rg1}UjjS;00CtPJOBUzbPzlM00ChZJOBU)ZggRDX=Y+%);a(JI{+d(07N?gY&!tHI{@Z80319300BB8JOBX!r~x`eJb(ZJWlB5%00D4PJOBUzd00FE0RTV)00CuWJOBUzaA-UL00DV!JOBUzbaXrb00CcmJOBUzWPm&X00Cu&JOBUzcZ@s$0RXZC00AkOJOBX!u>&ZaJb(ZJbfP=}00C*LJOBU!Wpk1|0I)m&0RXH600Ak$JOBXzt^)u8Dat$m0RgQ8D9${900DH=JOBUzW86Fd00Cj*JOBUzc<4L;0RXTA00AlVJOBX!uLCIfJb(ZJa{fF300L!i?mPenJpcg$s{<%s#5{luJpcd!WfnaE00DI(Jpcd!Y$!bd00L=YwmbkXJpcg!LIVH+DLy>_0Rce+C_+7e00BHmJpcg!Py+w~DONoI0Rc|~C|W&$00C@ZJpcd!Z)iOL00D1qJpcd!Vst$K0svG4QUd@1DS$ly2LNCLS_51ISOZ=IWCLOY00AkCJpcy*UjtbKTLV`ET?1nSVFM_fJ%9oNQv*>0C_RQffTBGB0RUD500Ak)Jpcg#RRbu*Ndrp*C{{jz00DPgJ^%m#Wo$kG00C)oJ^%m#c6dGj0RlqygY6AcPDWX0A0|8|NX9H;iD5^ey00C&QJ^%m#bi6(Q00CjbJ^%m#aL7IY00CdlJ^%p#bOQhZDcU{&0RVOb00AlFJ^%p$bpt5qK7arLdG0;{00Ck4J^%m#a{N9300D9WKL7y$cmn_dDGomX0ReXdC=x$_00C|oKL7v$VIV&M00CttKL7v$Y%D(j00D0@KL7v$Z#X{y0RVaf00AjPKL7y$d;A00C#lKL7v$Zp=Rb00C*zKL7v$bl5)t00Cj%KL7v$Z{$A!00C_3KL7y$fCB&lDfT}A0RevlDEdEu00D9UKmY&%We7k300CzXKmY&%WfVXF00DFwKmY&%ZXiGa0RVyn00Aj1KmY*&fdeQoK!5-NXEs0p00C}3KmY&%X+%H(00DAJKmY&%bWlJ50RV&p00AjnKmY*&g99jFK!5-NWoAGC00C@nKmY&%Vstz>&YzRRB00CkSK>z>&VH80C00DFwK>z>&Um!sM00CwuK>z>&Z!AFo0Ro8wC|~M8fHFY<00DV8K>z>&VMIXy00DAJK>z>&a!^440RWBz00AjnK>z^(jRPoPL4W`OZe~FM00CicK>z>&WpqIR00C@zK>z>&Z-7An00D1?K>z^&kOKe#DUv||0RWN%00AkSK>z^(kpn28L4W`OWu`#@00C{TK>z>&X|zEA00DHmK>z^)j{_)QmO+5PK>z>&WyV1O00DH;K>z>&Vc0z^(lLIK|L4W`ObnZa_00D0HK>z>&Y5YL|00D0TLI3~(a0o&G00CbPLI3~(XB0vJ00C|qLI3~(X&^!X00DF+LI3~(VJt!b00D0@LI3~(Y&b#y0|1%>m;;sr00AjPLI48+nFE&tl>;bDLVy4Pb5cS800DJgLI3~(Z)8FM00CucLI3~(Zg4^X00CuoLI3~(XM92c00D1;LI3~(ZHPhu00D1~LI42(oC5#>DVjn60Rfu>D4s%q00DBOLI3~(WvoH~00C#RLI3~(Ww=5B00DHqLI3~(Zp10RXZB00Aj%L;wK+u>vS?M1TMRWp+dW00CouL;wH*a)d+x00DK1L;wH*Z;(U)1^~1IxB|QawgS2Wz5)ONDV#(A1_84Iw*tEYwF0>Uy#gqzM1TMRXs|>800DHuL;wH*VaP-P00D5$L;wH*U(`eZ0szPY$^rlZDd0o^0szbc&H?}dDeOc50s+ec%>pR$M1TMRdH6&C00ChFMF0Q+atK8L00D9iMF0W-&;rr|00Ai)MF0W;&jQf`C?G|E00C|$MF0Q+VK7Ai00Ct-MF0Q+Y&=B(00D18MF0Q+Z%9P|0szzk)&c+lDO5!O0szMF0Q+ZsTb700D9yMgRZ-Whh1f00Cz%MgRZ-Wi&H+`(DS$=*0s-d&=>jN*Mt}eTWsF7u00C^4MgRZ-Vw^?*0s!m+?g9V-DX2yO0s-p+?E)ySMt}eTWwb^B00C{jMgRZ;VQHd90K`TB00&`WWM*k|bQDDZPDKEyMF0#&07gatdPV@sMgRf=#{$U$C|~A8fYe3+00MM#+C%{IMgRc-zybgPDGEmb0Rg`PC=N$}00BM}M*si;WgJHU00CqoM*si;Zzx9q00C|;M*si;AT&n+00DG5M*si;b3jJ`00C}BM*si;Z%ju30RX}R00AjjM*sl00Cu^M*si;X_!X<00DNMM*si;U!+F>00CvHM*si;WUxm700D2dM*si;ZoEeT0szDU#sUBVDac0v0s+GU#R4eKM}PnUUDQVa00JOe!bbq!M*si;a^yz<00D3AM*si;bo56600Ck8M*si;asWsG00CtNNB{rDI!P!0RZ#@00Aj1NB{u=^8zR^NPqwVb2dl-00Ct_NB{rfNn?t00DV)NB{rg00DA_NB{r_W~$i(nx^(NB{r`vNE=Nq_(WbSg;z00C|?NdN!=X*fv$00D14NdN!=a70M}00Cc0NdN!=XHZE100C}RNdN!=XxJ00CvTNdN!=XS_)O00D2pNdN!=ZOBOg00D2#NdN%=1_J;ADcVT@0RaUADBekc00DC3NdN!=W$Z}+00C$6NdN!=W%x+|00DIVNdN!=ZUjmI0RRXC00AiwN&o=?2LmV+N`L?XavDki00CtpN&o->Vkk-g00C_-N&o->bu>x<0RRdE00AjLN&o=?2?HoZN`L?XXG%%{00C}NN&o->X;?}C00DAdN&o->bYw~Z0RRjG00Aj*N&o=?3j-*0N`L?XWqL{g00C@*N&o->Vu(rr0RRpI00AkKN&o=?4Ff2cN`L?XWu8g^00C{LN&o-?VQG#^0IW&?0RRvK00AkyN&o=?4+AK`N`L?XWyVSX00DK*N&o->Y}85s00CjzN&o-~VPa%vXlZV9bas+R0LVxH8c6_pNdVMI018R~I!XX)N&vD-0N_dh0Rry=C|?{%faXd700DClO8@}?5(5AMDI!Y%0Ra&MC?-pQ00CtzO8@`?a5PH*00DVAO8^7_6ay9m7y}vu00AjRO8^7`69W|k7XujsC{Rm)00CxJO8@`?Wn@bL0RS8W00Aj*O8@}?9s>XYDSAr)0RbHYD1J+T00DG_O8@`?V~k4x00Ci=O8@`?c$iB70RSKa00AkaO8@}@9|I_;OMn0Ya;{4N00L!io=X6>O8@}^8v`g`bW4D|O8@`?WyVVY00DKOaK4@X^cz&0RXH400C^6OaK4@VVq0=00DHOOaK4@W2j630RXK500C^YOaK4@VYo~H00C{jOaK4@X~awb00CplOaK4@Wzb9j00CsyOaK4@Vcbjr00DU7OaK4@W#~)*00UxgXp&3-u1o;#OaK4@U-V1>00DCXO#lD^VF*nC00CbPO#lD^bQDbh00ChdO#lD^Z6Hkm00D9)O#lD^Z!Ap!00M4ia7+L)O#lD^Iyg-L0RgT7Izml=00DDIO#lD^XHZQ500CiEO#lD^Y+OwM00CxVO#lG^2?78CXKqaZ00DAxO#lG^3IYHDWqwTn00D4(OnnF1)TPk;gdoC2N#00Ak&PXGb|n*yBzD9BHM00BPEPXGW1Jv<>kASx{YP5??y0B}wKo=yOoPXM$}0N76e00DB|PXGV`Z~RXH00DFYPyhe{VF*wF00D9iPyhe{WfV{V00D3sPyhk|JOVxf00Ai`Pyhk}I|4ldC@fHb00DC{Pyhe{XFN~<00Ch_Pyhe{Y)DW50sue)LIMB*DO6AZ0s%h)K>{dRP=Ejdd0C00D2RPyhe{Z?I4R0su$?N&)}@DZEes0su?`P67Y{DacR&0s%_`O#&#+P=EjdWzL#C||-*fbdWN00Cw8Pyhe{bOccV00ChNQ2+t}Py$i{00Ai$Q2+t~PXbW_C>&9M00DF&Q2+n|ZY)s%00C(-Q2+n|Z#Yo^00D45Q2+n|Uqn#=00C!8Q2+n|ZctGG00C)MQ2+n|bX-vY00CiQQ2+n|Z)i~f00C@nQ2+t}R038400Aj_Q2+t~Qvy{2D1cFb00DA_Q2+n|Wsp$-00C!~Q2+n|Wt>p}00DHOQ2+n|Zm3ZJ0svS7S^@w8DYQ`l0s&V7Spq1!QGfseXTVVa00C~wQ2+n|Y0yys00DB=Q2+n|blgz@0sveBUIG9CDd>cXQGfseW%N-100C_NQ2+n|VgynE0svqFVgdjGDG*Ws0s&tFVFD-?Qh)#fWgJof00C_#QUCw~VQC6d04!1f00&`WWM*k|bbL?%wom{NQ2=yN0IpF0;!yxHQUCw}Up!I(00DDaQUCz}WC8#IDP~dt0RUzK00Aj*QUCz~WdbO4Qh)#fb9zz$00Cu!QUCw}Y=}|-00Cl-QUCw}VU$t;00DHGQUCw}U!YO|00CyEQUCw}Z>&-P0Rm$JC|_z)fU;5m00DWpQUCw}VZ>4Z00DB!QUCw}a?nx$0RU(M00Al7QUCz~X96hTQh)#fZst+|00Cj{QUCw}W%N=200C_JQUCw}ZvayO00D0XQvd+~Y61WODH2lv0RU_Q00Ai+Qvd-0YXT@BQ-A;gWhPSq00C_-Qvd(~X*5#+00DG5Qvd-1X#yx;7E^#gQvd(~Wkyo~00DGTQvd(~VOUcD0RV0S00AjvQvd-0Z2~B0Q-A;gbZ%1s00C}xQvd(~X?#-v00D1;Qvd(~aEMa?00Cc)Qvd(~XOvR_00C~AQvd(~X`oX800DHSQvd(~VXRXC00D2ZQvd(~Y`9YZ0|0OWasqS$00Ak)Qvd@2Zvt@wa{?&LQ-A;gbJ9})00DL0Qvd(~Z{$+|00Cv{Qvd(~Ztzn800Cw8Qvd(~XZ%wD00D0TQ~&@0Z3t8V00D0fQ~&`0b^-taDH>D&0ReRaC>~UR00D9&Q~&@0Wh_(x00Cz*Q~&@0WjIs-00DG9Q~&@0ZbVc70RVUc00AjbQ~&`1cLFF>RDb{ha#~aX00CuUQ~&@0VrWzV00C`oQ~&@0b#zn!0RVae00Ak0Q~&`1c>*YeRDb{hXNpt+00C~2Q~&@0X_!<100DBIQ~&@0bfi=O0RVgg00AkmQ~&`1djcr5RDb{hWx7-V00C^mQ~&@0V#rhg0RVmi00Ak~Q~&`1eF7-hRDb{hW!_W(00C|0Q~&@1VQJ1(0PIu%0RVsk00AldQ~&`1e*!1~Re%5iWd>CM00DIlRR911Y!p=h00ChdRR91AVPa%vXlZV9bavKK01Q(AUQ+f+03cNW00CbnRR911b5K@1SO#mQJ08UTRsaA2VJubv00D9`RsaA2ayV810RXW900DADRsaA2Z%9@E00DGPRsaA2VN_NC00DAZRsaA2WnfkS00DGnRsaA2X>3*i00CceRsaA2Wq4Kq00C@%RsaA2VuV%z00Ci&RsaA3VRSxL0FYJy00Cc?RsaA2bf8uM00DERRsaA2Zmd=S00D2ZRsaD2vjG4BX1-Pc00D2pRsaA2U&vMf00CvrRsaA2aMV@+00DX0RsaA2bl_G100Cd-RsaD2mIMF-WOD3Q0PR{#J3Wkgp100C@DR{#J3Z%|hN00D1SR{#M3x&Z(IY+_dc00CiUR{#J3V{BId00C)oR{#J3XLwft00D1)R{#J3Y=l<;00D1`R{#J3Zje_100D27R{#J3a-3HH0RX!J00DBSR{#J3Wvo{K00C~YR{#J3X}DJa00CjXR{#J3bi`Kx00C~wR{#J4Xm6rd0MJ(e0RX)L00Cv-R{#J3ZRA$~00C+0R{#J3bnsUI0Rg-LU-nl300CwER{#J3bOcxc00ChNSO5V4z5xIMbQV|u00C|qSO5S4X&_ht00D0%SO5S4a4c8=00CbzSO5S4XE;~@00C}3SO5S4X+&5600DGLSO5S4VNh5A00D1SSO5S4Y+P6X0RX=N00DAnSO5S4Wo%dg00C!mSO5S4Wq4Qs00DG0RX`P00Cu?SO5S4Y?N3400Cl}SO5S4X`omD00DHSSO5S4a;#VY00CvPSO5S4cDPso00C~kSO5S4Z^T#t00CplSO5S4U(i?p00DB=SO5S4Z`@b_0Rg}PU*cE*00DXESO5S4W$;)40RY1R00DRWSO5S4WdKlSO7>_0B%_Tnppt4SpWb5U%*)a00M4v7*_!9SpWe5v;hDCZ2nmQ00ChFS^xk6ZU|Zc00D0fS^xk6X%t!j0RY(n00Ai=S^xn7*a0XcT7UonJStiM00BHQS^xk6ayVK500D14S^xk6bVOPJ00Ci2S^xk6a!^_T00MMn8d?BWS^xk6a9mmd0RYzl00Aj%S^xn7)&VGRT7UonWp-Ks00C}(S^xk6X@pt;00C@@S^xk6Uyxb=00DHCS^xk6Wt>_70RXfE00DETS^xk6XRKNP00CjLS^xk6Y`9tg00CycS^xk6U&LAf00DH$S^xk6Y|vT&00DK@S^xk6Vcc2(00Cy=S^xk6W$0P}0syuHxB~zIDfC(Z0s*xHw*x5pT7UonasXQZ00CtRTL1t7bP!tr00DFsTL1t7VH{fk00C_xTL1t7awuB>00D000Cb*TL1t7Y(QH800C`ATL1t7VN6>90sy)LyaNCMDOg(o0s*-Ly8|d*TYvxoJY-t{00BI1TL1t7a&%h&00D1$TL1t7bbwm`00Ci!TL1t7a*SI500Cu^TL1t7aF|;F00U%sZ|+(EQdo00DG%TmS$8bbMR@00CiwTmS$8ZHQa|00DB2TmS$8Z(GZ00DEdTmS+9odll*00Ak!TmS+AoCKZ(D8yWV00BJ8TmS$8Jk(qO00DB^TmS$8Z{S=200DI7TmS$8VeDK000DCHTmS$8W%yhG00D6RTmS$AWNL3zTmZOS00dnC00BA*T>t?ApaeP?U4Q@qavog(00CttT>t<9bSzx}00DF|T>t<9VK`j?00C`2T>t<9aztGK00D1GT>t<9W>8%K00CcCT>t<9Zd_de00D1eT>t<9b7)-v2>_x5tOTe8qy(-6umq|ErUbGC00AjuFIp#-Z0rv#$}tpu+GsRX42u>>fHU4Q@qd5&EG00CvDT>t?9v;+VFDY9Jv0RgiFD7IaI0|2}Pz68Jo00Ak)T>t|B!UV(w#smNXDbig40|CJV!vw_yDB4|s0|UDRy#&7mJSaW9T>#8ofZ$yK0|2%JxCFWc00AigUH}6DwFI{WxdbQ(UVs1rJq}&~0|3Yb$^^^=00Ai=UH}6D#{|g)%LFJWUVs1rJuY4V0|3qh&;-&100AjLUH}6C)CAT9*aQFpDNbGh0|Ct300DNEUH||AUz}b500C#BUH||AZm3=W00C*PUH||Aan^0Ri6xC>~&d00CtrU;qFCV=Q0*00D9`U;qFCbvR%E0RZX*00AjPU;qID=>#Z9V1NJta!z0X00M7xK41V=U;qIC;sgKzDP~{*0RiCzC~9DU00CieU;qFCba-F@00CisU;qIC<^%u%DT-hK0RiO%D2`x&00C%}U;qFCbev!S00C#BU;qFCZm3`Y00CvLU;qFKYj0y|Vr6q=Y^+@XBwqk_UjU?E0M1_k5MTgYU;u<*0JLBL00BC>U;qID>jXOBV1NJtdFEgM00Cw0U;qLD?F8=x00AlbU;qLE>;&!vC;(xA00C?UVE_ODZ4hAq0RZs?00Ai+VE_RE@B}CzVSoSuXeMC*00DF^VE_ODVKiX?00M7t7GVH7VE_ODbU$i80K{Pc00BD6VE_RDZUF!RD-vP=0RZ#?00Ai+VgLaF^8qLzVt@bvbS7c|00D9?VgLXEWi(;{00DD4VgLXEb3kGM0RZ&@00DMPVgLXEZct(X00D1SVgLXEV_aeY00C@bVgLXEY-nNt0RZ*^00DAzVgLXEWq4u$00CrvVgLXEVT57;00Cu+VgLXEXpmw600Cc?VgLXEXPjaH00C*DVgLXEW~gES00C~UVgLXFVQ+3?0JLHN0RZ;_00CjdVgLXEWXNIw00CmoVgLXEZPa1_00CjzVgLXEY~W%500Cd-VgLXEbnIdP00D6FVgLXEW%yzM00CqEVgLXEcm!hr00CtRV*mgFZxCYu00C|mV*mgFUmRlq00C?wV*mgFVJKq&00C|;V*mgFZ!}{700C(_V*mgFbU`00DGlV*mgFaA;!y00CugV*mgFV{~Hx00DSpGVGLvd00D0jWB>sG`T+m|a~@;>00D9$WB>pGWhi6-00DF^WB>pGbTniD00Ch-WB>pGZ9rrI00DAFWB>pHY;PE308C^60RZ~}00DAbWB>pGWng3g00DDmWB>pGa%^M(00CigWB>sG`~d&~bADt100Cu!WB>pGa)@LA00DK5WB>pGbd+QO00Ci|WB>pGWuRmL00CyEWB>pGU#w&R00CsOWB>pGWw>Mj00DEpWB>pGVZ>wr00CvnWB>pGY|vx?00CvzWB>pGa@=G900C~|WB>sG{Q&?0bnavT00Ck0WB>pGaQI{Z00C|OWB>pGZvU_00DA3W&i*IWk6;C00Ck~W&i*IZA@kW00CuEW&i;I0s;U5ZeC^p00D1eW&i*IX=r8u00DGvW&i*IV{~Q!00C}#W&i*Ib%16700Cx(W&i*IUyNn|00Co?W&i*IX_#gJ00DHKW&i*IVWegN00DHWW&i*LV`go0v}FJQW&l`b0I+5N00CdNW&i*IWXNU!00CvrW&i*Ibkt@500DB^W&i*IZ{TJC00Luhm}LOwW&i*JZg^^C0PJP}0RRI600DUbX8-^JYy@Wj00C|aX8-^JZxCky00CbXX8-^JavWy>00CtpX8-^JWGH6<00ChxX8-^JWi)310RRL700C}5X8-^JZ$xJR00C)AX8-^JbWmpi00CiEX8-^JbX;cu00C}dX8-^JWoTyr00C`oX8-^JWprl%00C@zX8-^JaDZn300C`=X8-{J1p)v8Ws+wA00D58X8-^Jd7Nhe00DHOX8-^JU#MpQ00C^SX8-^JVYFue00C~gX8-^JZ@^~&00C*nX8-^Jbj)V}00D5)X8-{J1_A&9W!`5100D5~X8-^JdFW>V00DIFX8-^JU-V}H00DIRX8-^JVE||V00D0XXaE2KYz$}s0RRUA00CtfXaE2Ka2#j=00DU-XaE2KbSP*500CbvXaE2KbTnuH00C|~XaE2LW@!>=06=H}00Cb{XaE2KY*1(b00C@PXaE2KVO(ec00C`cXaEBOsRE$_qXIf81~7n5FMt36a&Bk<00CuwXaE2KbcARC00DH0XaE2KVUTD500C{5XaE2Ka-3)Y00D2JXaE2SVPj-vXlZYAW=3KFx?%wKV*vJM06J#?jAsDYX8>qu0H|mH0R!>@IxAlcVt^K60Ip~N00C^&XaE2KZRBVG0svD1V*mgFDe!0j0s>M2VgM*)_Go}G6#xJMW&CIW00DFgX#fBLVGwBm00CnbX#fBLZX9U<00DI(X#fTQ5(B3If&zO4r~_FA00Aj3X#fTR5d)?GfdYC2rvq38C_HI^00Ct}X#fBLa8zjk0|LSzEcX#iSj0J3QS$~ge~X#fKN-~_S)tpWf6DH>`30|MU!u>!0DUntlD03vFD00CtvY5)KMV>oI600DA7Y5)KMbwp|a0|4g$VE{J-00AjbY5)TP<^W&-HUubGYJdO%WnO9k00DYxY5)QN>I6dp00Aj>Y5)QP=>$RnC~16ZfHFG(00DA>Y5)KNVq@GA01h7j00wVpX>@gEN@@TK4ghd!0FY_`mTCarAOHyfD*-_O0R#*M+ypHFLjVH=4g~-KDY|L^3IQqsKmY&)3kBN*ECE6Q0t5{O001b?YJdO%Zq#Z300C+4Y5)KMXY^_S00U)VZ~AHga18+9I{*m)GXY5e2?P`c-UKxPO8^T576kwSDGqA@3IQ?!NB{@~69wG_GyzHg3Ir7e0RSi>Yk&X&WGHI@2LR^-Apq$E?E~)vBLM3I00AjTYXAoU<^v!A=mYEn?gJtK>H{cPYk&X&WnOCl00DDyYXATOVRCqD05lx{0st=n^#cF_DTr$T00LrYdItc4CIA8gE&%icC|{0ifRt+h00Cv5YXATNW2|cc00CjLYXAfQ6QUz26Upgqf6#!fqfC?9Y00DFWYybcOZX9d?00CtpYybcOZYXR300D0eL0suNFU!WC$?h$}YYybcOXi{td0|G$>^#u0>Iw*i2fM^_m00DG#YybcOY=mq800DK1YybcObC7HR00Cu|YybcQW@U2r7y$4Y0Gw<92?FW?+yUqT<{BaC2k;0Mrx!00Cb%Z2$lPWk78J00Cr1Z2$lPX-sVZ6#%pZM*(C3HUkv^90K11rUJSHodkmcLIbD*yaS&EuL8&e`~(I7*#XJ`00AjjZ2%Pkvjj!~V*xb-6aX6n-UFoqxdWU8f&oDTrvkeJo&>G}#{>HW1pwFq$p9#XZGZ~^yaXTuA_8IoGy}#1z68JoBm#i}$N&HVDY|U{3jo3dCITn|W&t<@$^*m%#sn$?g#pX}00Al3Z2$`a!2~4&Cjw;wHv`E7!vw_yDFTE6%K#|wZGZ~{y96HsAp&6mGXuo~y#&7mBLaW{#{fJiJ&J7r(rtkDZ2%Jh1p!9|695hZ)dLU$0|5~L3wR0H$`2LVL|Nd*Z3O9fH`Lj?c5Z8vw`zECL?^XaPC{%mWz!;{#v=$^^^=Aps)+E&?S1CjnXmTmy#z9ROGZUISzUV+9)k&H!Qq00AjvZU7qr#{??^9sy?oIRncB7y#k}UjxYm%LE_+A^|M|BmpJ?Sp!=Gh5;M^R|8!GV*_FZ8UW1zVFM_fZh#X41OY|`5&#VX)B_I!0s#;J3j)#uQv>q^1_49`NCgN1N(E5^LIo&2UT%P*ZU7PhwgeRcU;#1%!~+)q;RCn?x&#*i837&w8vz{we*snlVFktj00AiuZvYYjwFDFaUjZ=#!vhuo-~+b=xdavg7y%su8UY*uegRbjU00D1uZ~y=YVsm45Zg6z?ZvaGa0C;c!lurP>M*vhC0OA_}3jodpFak0HY5_b0&I8Z{(gZXDi2=|600AkSZ~zMc)C4vHI09?|J_FDL)&$rDIs%IU(f|MfDY|d~3jxyvH3ByRYXLn2&jZy2*918NiUH98DAI6%3j)mqF9I&N_(F8LBhyl+4C_S`rfY@*V017-kAzL6mD=IA_5^ezAZUAI&0LX6uesBQvZ~z7o0JKj4*iQgfVE_ODaujg@00D14aR2}TbVP9g00Ci2aR2}Ta!_#q00L!nR&f9tS^xk7aAsU_0O~LR1_QtV2mlNK3IGlOpaD84Ulb336a#=r4*&oGd2n$600Ci&aR2}Ta*%NV2>{FjWdJ||IRwrEX8=M1I|OzE00AkSaR3Pc%K~HoKLR)e%>rfsK>|7ibpt4{aex2;dA4x?00CjnaR2}Ta@27E00DB^aR3Pb&;n@yL;^ho(gJG$Mgl(scmn_dDduqi2?5UnXaGY3JOt4KY5+w7J_L6IDEe`L00C|QasU7UVHk1%00CtlasU7UY$S3300D0*asU7UZ!mHI2>{drZ2(9DK?K$UZvaXHLj-yQ00AjHasUYc*aC3?Oaes&+5&R`P69^+d;|2*eE?VjQ3U1!e*jtnQv`wo00Akaa{vhe;{tpDR{~H3HSprf7fdeSGbASK=XTEa)00C~+a{vGVY20%F00DC1a{vGVbm(&c2>|EmcPT>@4Fg99iCbbtT>We#)z00C?!bN~PWVk~q32>|Q@g#cgzSp@C^hX7&%TLgv!00AjDbN~qf>jH!TUjkSJ?E;1XVFFqNg##!|bbtT>Wm0qi00C`kbN~PXVQDgS0C02w00&`WWM*k|bl`CSHgW*SasWtk0G@LI?sEWkbN~YY$O6g&bOQhZDV}ry0|Unb$pUi&UvnscbO3-80H$<+1^}r5s{nljfdqd9g9HEpDZq396#%pX7zMZjyaF5rAO*GpW&;`p%K^Fqz5-|iY6BhxA_dO@(*ex^(E-%~00Ak~bO03rvjP_dw*tEY8wDQ)wE|@W83oD#xdOccX9H;i9R(o;&H>T^%mL5=)Bz{}b$|c?Xa;ov00DG1bpQYXVLWvJ00D49bpQqer~s+}d<1|5eguL9C|}NWfJk)!00nY$bZ~5zaR97z08VuPP!j;`Hvj_wNdX@K00DA{bpQYXVU%?M00Cv1bpQnb*#sy7J^=m$2?YQFa;9|v00D2ZbpQYXbhvc@00CjXbpQYXa>R8200CvnbpQYXbkKDG00U`Zbk=nMK2`vbRsaA2U)*&700DIBbpQYYb9C@^0JbFn00M4o_H_U_0RRL5F9AgW1q2WU00Aiqb^rtcE&)UU1OyKSC=_;p00C|qb^rhYX()C800Cz%b^rhYWi)mG1OPDsM*s%|5(NMODL{4r1OYGsMgRr`5d|npc7Ol@WKebh00C}Zb^rkYl>`6*XKHo;00D1qb^rhYY;<-200Cusb^rhYXMlD900C}>b^rhYVT^VF00wMtVr5}ypmhKMb^tnd0AzLm4hH~|b^rhZbY~a{06b6t00LoevUUKnI{*j(O#lr9PXG@DQ2-GHQveeL00Ak+b^r(gOaKf7P5=%BPyi4FQUDSJDA;y@00C&;b^rhYWAt_a00Ck8b^rhYWdL^o00L%VmO20kO#lD^UkrBu00DFscK`qZVH|e=00UobV+MBsB6k2lIsgCxawvBI00nGsa%o|_b^tba0FDR%j4J@r9smXa`vds{GXOULH2^sP00AjdcK`+h`UCg_G5|IJGypgNC}m$@cYyX*0D30?00DGncK`qZa)5UL00Cu&cK`qaZg{jf00bBS00Cu^cK`qbb7XXkcL1Ds0AM=+1pwLvDFHtK{{spI00DBacK`qZZ@hN^00DHucK`qZVaRs?00DB&cK`qZWz=^71px8_i2!5*T?C2)00AlBcK`(d^a6_jW&&RXi~|4xDe`v!1p)H{iU4H-UIdE+DE@bV00DCZcmMzaWfXV-00C?ocmMzaVjy?`00ChpcmMzabS!uP00CbzcmMzaW;l2N00D14cmM_h@dAhdV**?Ri37L+C|~S%fJArz00DVQcmMzaVPJRw00DAlcmMzaa%^}21pxK}jR0r@VFZo?00Aj@cmM_g^#Y6lX98dZjRUy>D1>-`00C}_cmMzaVVrmX00Cv9cmMzaY^Znu00D2VcmMzaZ?t#-1pxR0j{s@{V+4=`00Ak$cmM?e`T~&vYyxEjk^=w%DbjcV1_Aj3kN|4}WCW1|y#XlRcz^%_W#o7O00C|GcmMzaY5aHq00DFYc>o3i_X3UpX#!#dj|02`C|}HYfCza200CtVc>n+bbR>BI00Chtc>o0f`~s5zZUScnlmh?(DK>ck1_Ap5k^pT2W(1Q1z5ysgd4K=`bVzvs00C}Vc>n+bX<&H(00D1ic>n+baBO)100Ccec>n+bXLxx400C}(c>n+bX@q$I00DH0c>n+bVUT$M00D27c>n+bY@B%j5C8-Nngap@l>l%8X#|)9{sNZ(asq1v00Wr-bOLPzmID9*DX4h>5CH=NnF9d>lmKr6Xatu7{Q{N%aRO=t{{ol*a{_Dxl>;csd4K=`bI^GJ00DLOc>n+bZ~S=x00CtJdH?_cZU}k+00CtVdH?_cXB2t>00D0rdH?_cZ6JC800D0%dH@9g1_PS_b^>n%oC5#>DKdHh1_1>FngDeIZUmbHzX2#ddVl}{azuIn00CuIdH?_cXIy#!00CuUdH?_dbZlsP0PrUO00C}pdH@9g2m_q}cmi<*o&x{@DSmnY1_1{HoB($Ma0HzL!~rOZdVl}{a*%oe00Cv9dH?_cVyJom00C{TdH?_db#JtK047-g1po>Ip8$FSa|ECR00Ak)dH@Ci2?L%0c>;0-p994KDA0O<00C##dH?_cZs>Xd00C+4dH?_ca`but00DIRdH@9g37|Wf*$^00C?&djJ3dVlaCE1pp2MqX2#acLbyZ00AjHdjJLj4FjS8eFAm_qXWkQC`fyN00CuAdjJ3dZD4x<00LoYHhTbOdjJIh5Cf$EfC700rUL*0DRz4R1_2KPqyT>ccm$;b$N?yVdw>7|Wr%wK00DKHdjJ3dY@mAp00Cj9djJ3pVPa%vXlZV9barfGYjSu1x_AIEc>tn$04#a{czOW3dH?`>0Bm~zta||JF#y(A0QOh_0s!y=hywrtDd>9u0s`*>hXY?IvU>pTdw>7~Zgg{^cL3UV0Q7qR1ppKS76YmS7y}vu00Aiwd;kRj69W|ksRI`S83QOBe1HH1aC2;C$_xM!4FE_v03v(<00Ct(d;kFfSOIfBA^-pZWlDSi00DGTd;kCeby$1=00C}Zd;kCgVQFu$4FF_(0AMlz3IK!xh61$!hyscNw*Z9%i3EoPiv$1xDR_JU1^~GLy8w*@kpzzflLP<(DU^Hw1_8JLx&Vv>kOYndk_0HCe1HG}bEtd(00Lobx_khNS^x?Hg93#Dv;c00ChNeES100C(teEy00CiAeEsUVQ+#VE_OEVQvZ)0H|O900U`dZ)AM{a(w{mD*yok=m02R`VxTF7XSbOXo`IR00MM!mVE&H8~^|TVVr#c00D5OeEjR61wWwLz$1_HAKMFUL(M*~R%O9MJ6LPUU8K7arLcffrB00CvzeEX6fJ8ok00Cw4eEuq2m_x28w0BY7XlFi69O3m6#`#6C?J0T$W?$we}Di1WlVnn00DJse*gdhY;b=71pp!gBm=SoCIct~00Aj{e*gsmAp;`=u>&OoCj%&me}Di1bdG-j00C*9e*gdib7iD|0Fpca00LoYc7Fh>e*gmly#uuaw*xvTvRi=qT7Uona=w2600Cvre*gdhbku(U00DH`e*gdhVc>rN00C|0e*gdha_oNq00D3Ee*gdhX83;q00CeAe*gdhYy^M+00C_ZfB*mjWnn}z01$ux0|KA~m;{;xIw%-jfM8sJ00D9!fB*miWiWsM00DG1fB*mibUc6n00Ch_fB*miZAgFs00DANfB*miZ&ZK)00CxNfB*miUtoX$00C}hfB*miZ)|`700DDyfB*^rq6B3HtOTe8qy(-6umq|ErUbGC00Aj}fB*{u>ja?$WCg1Prv#$}tpu+GsRX42u>?9O;9!81fPer2d76L#00CvXfB*m(baP^5aCdKEV`gb`ZD(wLXl`V2c6n-R0BQiBY5)Lh0P<@9By9jvZ2)F*0AzIln05d>cK`x>07QHMYJ33hd;olX0IYogpdbJgegMpV00uPxw0{5=fB<-a0Kk9%rxgIy6#)Mg04o*%WflNw768E(0L2yn`4#{v7XU050B9EgY!?8d7XYUh0P`0B_ZI*+7yvsM0CpGvdKdu87y!-~038_sAsGO0831${0M;1*+8F>c8UQvL0A?BhX&L~h8UU*r0QnjK{Tcu<8vr#M09zXXUmF0D8vvCX0LvQy&l>>s8vywm07e`DN*n-;8~~6U0O%Y5>>L109RN@r0H_@RtQ`Ol9sm>`0AC&eV;%s!9ss}|0QMdLCLaJ+9{^b&0E8a^h#vsI9{|H20QesO{2u@+AOI~O09YUZTp$3KAOM>n0Kp&t#UKC%Api;?05Bl{G$8-q80FxyEmn8tpB>>JP0Qn^V{Urb}CIB-g0A3~lVkQ8TCIFWv0Kz5!#wGy&CIAB`07fSON+$q?Cjf~j0Kq2!#U}s)C;$d107xhROeg@9C;*r!0OBYB<|qI>DF8qz0DCC_e<=XDDFD4G0QV^X`zZi4DgZbt0B|Y*bSeO?Dgd!60Ol$H>M8&oD*z!Y08A?YP%8j`D*%Ek0Ie$ku`2-KD*)sx01qqx6D$BnEC5R^0Cp?@dMp63EC97E0N^YDVWcHvq^t02DX?7&riFH~?)p0KPZ?!Z-jFIRF?r0BSh^ZaDzEIRL*o01-L>6*>TCIsj`r0KPf^!a4vII{+Cw0A@P?YC8bDI{?5t01`X^7CZoHJOFJx0Khx|#5@4{JOC;^09ri&T|EGZJphb70K+{1$2|c2Jpcec04_cNF+KoXJ^)}o0G&Pnp*{fFJ^FUKLBb!0Ixp)vp)d&KLGtd05L!SH9!DvKmc+;0Kq^2#Xtb{Kmhna05d@VH$ebyK>%_=0LVcA%s~JWLI4&*08c^yQ$hffLI9US0JlN_<3a!tLjXTR0C7VAphEzoLjc`F0O3ObE<^w_L;!w70D?pS(L?~%L;xa1047BMb437mMF7J^0LMiD6h;6TMgTcR07*swbw&W8MgY%70Q*J&{zd>zM*vYr0FFlhl1Bi~M*!1D05V7bHb?+(NC0z40Ln-J&PV_xNdPEG0DMURfJp$?NdVhP05VDdHc9}DN&t{b0Ov{o>q-FsN&qTL0A@=7rb__gO8_BE0Afr4o=gDROaK*409H)^j!gi{O#u8&06Ir>tRsiHy02EgMLstNER{*wG0RLA216Tl3SO8X70H9a^q*ws-SOEA~076*+Mp*!sSpb?@0P9%*?^ysyS^!L10G?U^qFMm)S^)K007+W_Oz3@0NGst-CY19UH~Uv06ty-ja~qeUI5!(04iSqk6!@lUjRB_0F7V(++YAWVE~U|0NY^zD`EhHVgTJ@05@X*gku2IV*n#$0Ci*l#bf~VWB?^)09R!Imt_E(WdPP?0NP~$7iIt(W&l=Z09s}MmSzB&W&q=60Ow`^9%ld|X8>kr0BUCdx@Q2sX8;gr02F8dUuXbhXaKHg0J3NR18D#UX#i7c09R=MqiF!AX#n|Y0R3qINooL1Y5<>V0HbOE?rH$?Y5+ZJ06}X2l4}5#YXIVF0Oo4|GHd`gYygOC0E}z^!fXJ>Yybgm00nITIBftsZ2)F%0BUUjpKSo5Z2-(|0MKm!0&V~WZU8WD05om@Yia{$tF0M>H=4|D(%bO1|q08exPh;#sqbO6D00L63w^>hIFbO0W803vk&SakqgbpV2O0ETq{({%vXbpRlC03>z*Wp)5*b^xq)0I+rd=5_$;b^s7}02FrsPvv&ZtcL3pc0OfZ82Y3KHcmR}m0GN0H_;>*PcmPj%08@DYr+EOYc>v&f033P%AbJ2-dH`E`0I_-iwR!;LdH@@H03Uk*VS4~&djODo0F-+G*LwildjJM}01A8nO?&`Rd;olW0Dyb|&wK#Wd;k`G02zG%Uwr^$eE^Pq0Fr$GzkLA0eE{rz0PuYPBYprTegIK^09Aefihcl%egL?B0K9$x?tTFAegGVQ03d$=SAPIne*lGl0EvG9#eV?Ee*p7;0QY|YEPwznfB;&60A7Fql7Ik}fB?RL0K$L(^?(5QfB++b04IR}S%CmtfdGer0E>YDzJUP3fdKn~0RMpiLV^HBf&hVn0EL18y@CM2f&l)400M&mM1ufGg8-6)0G5LQ?1KRCg8(>$06c^MdxQXggaEpP0KS9(_=Eubga9^$06K*LbA?}z{zi2zB708EJhf{6fzi2&1y0N05CBZ>egiU4+s0D6i5$BF>UiU1gk033?|Xo~=BivYQc0KJO<-irVci~wbf0BMW>o{RvZi~!b*0NIQH8I1rPjR0MZ0AY;)rHufojR5G40PKwbDvkgyjsSFy0Cr02_}0b&mjfj{wY%0ML&BBai?mkN|^_0EdtO){p?&kN`lD07Q`hppgKikpS$G0Pv9jIg$W9k^qL10E&_T)sg_&k^m)>04b9Ib&~*jlK{Gt0KSs|@sj}clK?K105X&SZIl3UlmMxe0Iie&>XZQPlmIZ505p{VZn`k0I`(->XiWQl>jD|04kOMU6uf0mH?WT0G^fr;g$g9mH;4^03??HT$cb~mjIoY0HK!vngBkU079AocbWiungFkw0JE9^>6!rTngA)A04+|tEvF>ssQ+^079z(MymjYs{o0s0JN(BxT^s8s{s6~04J;fE35!_N@Rbt^h8s09md8U9JF+t^ks*0KKjN!L9)Kt^oV404A>hDz5-$uK;PU0F`m0Q;{1|E~ZuumCo&0Aa8IWv~F4umGE|0LHKY%CG?ZumJzC04cEmEwKP*u>fkZ0IjhAv9SQ`u>kO~04TBmEV2M;vH)$e0I#wDv$6pDvH<_G07wU6}JFZw*XqV0EM>ziMIgDw*b$#0Q$E8{rEq#sG}Q0IS9T?ZyD{#sDbC04v7;aK`|2#{jIy0I$aY2FL&k$N)UZ06@q9X2<|)$N-|q0H(+Q^2h-8$N)CU06ED3ddUEN$pEv-0OQF36UqP<$^b#i07c3Ge98cT$^f;>0J+Kl=gI);$^aG102#{wTgw1n%K(YX0FBE4(8~bS%K-n&00YbbM$7<8%m8)F0C~&+zsvx`%mD7p0P@TLH_ZS$%>ZW20BX$uu+0Fp%>duc0OQR78qNS7&H!A_0AS7ln$7^8&H(Dp0PfBJF3$il&j51I0Cmp*r_TVZ&j8WS0M*X`4bT7)&;UZv0E^H7kI(?q&;Zxa01?pu7101$(Ewf10HV)`si~={si~=`si~={si~={si~={si~={si~={czCI(si~={si~=`si~={si~={si~={si~={si~={si>)`si~=`si~=`si~=`si~=`si~=`si~=`si~=`si~=`si~=`si~={si~={si~={si~={si~={si~={si~={si~={si~={si~=`si~=`si~={si~={si~={si{cl=&7lxsi~={si~={si~={saUD0si~={si~=`si~={si~={si~=`si~={si~={si~={si~={si~={si~={si~={si~={si~={si~={si~={si~={si~={si~={si~={si}B)si>)`si~={si>)`si~={si~={si~={si~={si~=`si~={si~={si~={Na*P3=&7iwsi~={si~={si~={si~=080hHesi>)`si~={si~={si~={si~={si~={si|1l*x1)`si~={si~={si~=`si~={si~={si~={si~={si~={si~={czCI(si~={si~=`si~={si~={si~={si~={si~={si~={si~={si~={si~={si~={si~={si~=`si~=`si~=`si~=`si~=`si~=`si~=`si~=`si~=`si~={si~={si~={si~={si~={si~={si~={si~={si~={si~={si~={si~={si~={si~={si{a1Sm>##si~={si{b*sHv%`si~={si~={si~={si~={si~={si~={si~={si~={si~={si~={si~={si~={si~=Wc&VwWsi~={si~={si~={sYt1*si~={D5)`si~={si~={si{Z@03kX$Vr6G(ZU7@;Vly^jHDqEjH8LMx8HDosj03irEI(KPgWnXY%bZ96kAY*TCb94YBVKiblHDY8oWHDqnF<~$>VlX)~Ha0O~WHVx9WH~Z2FarQX1_uBkB|189aAk5~bZ>GzJScN?WI8%;b98cLVQnTXAY*TCb95kcZ*_8GWnXe-XK8P4CMf_TVK8GgIXPisFk&%gHZ)-|VqrNoVK8AiFk(41I5;?FVFds~Bk}V=-b98cbV{~+HZERmLUomrUb#h~6Ute-%XK8P4E@*UZY`_2)0y;Wja&lpLC@BCVVKO;pV>d82V`ersVK+HuGh;JkIWuHoWMXAAVlp=|IS2qbzyKExIyzx;a$$KWV{dMAbRc1Ja$$KUDF7p3Gh$>kHZd_{IW}WuIX7fCWi~lEF=97iG&3dK2H(@Y2G&W&5WHn_lIWuHAFf(E`Ic7FtG!_6k8o&S-96CC0aAk5~bZ>G!Jt$*uZgX@XVRCX|c_u6%V{dMAbRc1Ja$$KUDF7p3Fg9amGBss0W;ifoIXGlEIAt(2F=b{sI5IOiH#TE17yvmMzyKF7Iy!G~WpZJ3Z*o07C}VGKb95kKa&lpLCM+OhZ*FsRAaitNIyz}?X>@5}Y-xIBa$js|b96jZJ|-yuBVl4VH)S+4HDfhlG%+zWFl9C{V`MUAH!w3~W;r%yVq_WsIW52d7bQA6Z*XODVRUbDJv}I6Z*FsRAYpQHVRGg03%^CGBY?iVL4@FIW#mhW@R-pVr4NfV>Dr7Vq|4wIWRaN067l802d%SI%RTUb7d%FZ*FsRUukq@a$$6Dax5TYZ*FsRUukq@a$$6Dawz~KVK*`}GdMUnHZWv2GGjSmF*Y(WGdE-~GC4CdHa2ErG9myu9>4$>1UfoqY+-bCWo{@bASM7KVKZShH83?XIALL8H#cN6WHdQpFlI6{IAJs~H8f>7FeCsu0we$#1ttJBWnnTfHaBHrHZUNHC}MAKY$+fn03%^FH90V0H8NykVKOo@Ff%hUIWS{5Vl`tqIW;skHe)y{067LK02v7;0AgWfVq!KmG-Wq7Ff}+iW;8QoF*ajkVlz26F=Jt6I4l4;2fzRq9XdK?ZE$R1V`V5~Z*FsRUukq@a$$6Dax5T0a%XcOCMF;*E-onmBVjZ#F)(5|HZwRjVly)^IX7W4H8o~4HaRq5V=ysfG+{0PIUB$L7Y#Z(Wo>Y5VPj=qVqs%zC_!>(b08)rATBO0DF7p3WHB>1Gi5O{Fl9GpIAl0xWi>QqFgIjjVlg%}Vq`XCFaS9VzyKF1Iyz}?b7gXLC}VGKb97&6bY*g3bZ>GjAVq9tZB%)1WhN#pAa-GFb!A^>Y++|}DF7p3F*jp3WivElG&3`0VK_N3H!(OiWMX15H#j(BIb<_8G5|RzzyKF9Iyz}?b7gXLC}VGKb97&6bY*g3bZ>GjAaiMYWnXkGAVq9tZB%)1WhN#pAa-GFb!A^>Y++|}DF7p3H8o*5Wj19uG%{s1H8y2oFgGGjAW3v(ax5T8bY*fZAa-GFb!A^>Y++|}DF7p3HZWl@WHUKpW@I=wGBIOiW->EnF*P-2H8n6aWHmHoHUK#%zyKFDIyz}?b7gXLC}VGKb97&6bY*g3bZ>GjAaitNIyz}?X>@5}Y-xIBa$js|b96jKY-Md!d2nSuEaHHsDF7p3F=An5V`MdCH8(k7W@0rkI5;>qH8(OgH#A~6IX5^lH~={_zyKE+Iy!K5b7)^;VPk73MQmklRC#b^CMGN(c42IFWnX4&VP|tG03%^yH!(OkH8VG2Gc_?~W;0GjAVq9tZB%)1WhN#pAa-GFb!A^>Y++|}DF7p3GdE#4VKO)~Wj13mV`61xW;ZoAVlrhlIW#yqWo0&FJODW-zyKFII%98cb97&6bY*g3bZ>G1BVlA_WHUH3F*sy1GdVC}H#TN4H#1>4GiGEmW-?)6GBLma7dkp=bY*g3bZ>G1BVjf&VKF!~H!)*jH)AzoFg7wUG-NVmGB#s5HZx{8Gc&*d7XmsuVr6G(ZYU`LBVjmYWjHZ6Ib>vJF=JvhG-hOGFk(1lFgGwTW;HcqGG;&kIY0mz2q0r`ZgX@1H)CdIF*PzaVK!tjW;QW3H)SwoVPY~fF=8|~H8){lLI61izyKErIyz%wWoKz_C@COgZ*FsR03%^FHe@klVqq{aHe_RCV>Mx9IXO5oVl_BnIAStnWMeTz067N002c^4I%8#SWGE>hV{dMAbO0k^H85p1VlXo@I50IgHZW#0IWsV2FfutZGh{hoI5c7~MgTbmzyKElIyz-;WGE>BBVlA=W;rl8VlZQ4Gi5kpV`4F7WjSSIIb~xvFg9c|GBZd3IYdWvWo9!qH#9L}Ha25qGcsgkVm4xAFgIf}WHez+067Ru02vD=0Apb|V`gJCGBIW~VPiElW-~N2FlA(AFlJ^pGd4CgG)@3H3BUjs5IQ<$Z*pH{VPj}0Ms;puCMGE$V{dMAbRZ@GBVjXUWMMgGFlIC|H#1>5F*GwYVKOshVq;-9V>4khW;9R$ISx<&84)G`W@R!sWHMo4VK+54Ibk_DH#BBrV=^{0GGjMkI5RP0QUEy*zyKErIyz%vaA9LmV>L2kGh}8pVPrBnV`gMGWi@1BVKHPiS^zl)zyKE^Iy!P?b7^{ID069gWnXkGAVq9tZB%)1WhN#pAa-GFb!A^>Y++|}DF7p3VliQ3VKOr_H)dvIWjAFtI5S}~V`eijGiEV1GBr77TmU&AzyKElIy!S`a%paBUvzI@W@&UNDF7p3H!(P4GB7hSWnpAAGB{yjH8MFdGB-3aW;SFnIW%EmUI01302c^4I&*1yWhf~iV{dMAbO0k^W;iiqH)1wnF)}qbVPrQpHeob3WH~Z7HaImkVK-wrU;sG=zyKErIy!W6b#7x}bY&=WX?kT}bSVHMVK!wmVPiQtHZo&3Fg9U0IAbv|FfnFkI5S~1FgP@3GhzTa2EYIp0y;Wjb6;U{a$$KWDF7p3W;14HHe+ElH85l|F*Rc_WHvHmFgG?cF<~_{F=R6^WB@s202v4%V{dMAbO1JCHDoa~Ff%bYW->A|HDohoWn*PDWiVtiGBP+fW;td6IR?N07XmsuVRK(%Z*Od6VQwfX03%^AWnwWgHa9pqGC4IeG-G8sGc+?aVK6Z;VK*~mFk)h806Ay?83-U_Z*FsR0Ae;ZH8wP2IX5*mVKp~oWH~S~V>B>kFk?A2Vq!C6Gim@i2EYIp0y;Wjb6;d(bY&_{H#TKvIbcGBYqZGh}0AG&yE4H83$TV=*!}H)CdFG%#c}Hf{hp2EYIp0y;Wjb6;d(bY)+3X>DaFDF7p3Hf3ZsH)J<8HDWk1Ff(K~Vq!5jV>B`}V>vlCGiEqrZ~!@Q02v4%V{dMAbO19nHe_NmGcsZ`VPZ99I5uK8V>f1DGdVIjIXGivVqMmK0H!?J0V`MfmGBRT~Fk@phHa9dgVPau7Vm35<06BaB83-U_Z*FsR0Aes>Vr5}wGG%2nFflbTW->K4IWT2oVK^{iIWRM2WqtrT2EYIp0y;Wjb6<2}Vr*q7DF7p3HaKHBGG$>kH92BtGBjjnHfCdCHeqEjWI1LyHaIb6fB-pw02v4%V{dMAbO2*HG&eS5VmCQvVPRx7W@BS9VmV`DGG;h7V>4nkIW~d-IR?N07XmsuVRK(}X>DaFDF7p3HfClqW@0utGB`A1VKHW5Ff?IhWnwU5Gh#SpWo9)ugaA2&02v4%V{dMAbO13lIWje2IW;smVl-oAF=S>lGGjP4Vq`L9HaBBoHfDwZIR?N07YI5!X>(s;a&lpLC@COgZ*FsR03%^BW-((sDaFDIjBSZgX@1BVlDYG&E*4GhsP4Ff?XjG%{u}I5lB8F*Y$aVK*{kVq}m2IR?N07YI5!X>(s@Y;R$7X>Mm(s_Z*6a9Wo~6}b#o|gZ)9a(ba`-PEFfcVZgX@XZf|5|Dkdo)V{dMAbO0k^WH2x`F)(8=WidErFfuhUHe_WvGGaC|Gh|~lWH4qmm;gB)zyKErIyz}{UukZ1WoKn_C@COgZ*FsR03%^HIAmfpF*z_fH#aadG-EU~HZ(RjG+{D1H8?mmHDolJ067N002c^4I%#uXZgp*9WpXGfAY*TCb94YBVPP;cG%++ZV>LK1Vl!koVKg@~H)AkkW@2V#Vq-EfG@JlA2EYIp2s%1xb6<0Ga%pa7C@COgZ*FsR03%^#WoBe#Ffm~=V`VdDHezFBH(_OCW?^DvGd441Fg9YI067N002c^4I%#uXbYWs_Whf~iV{dMAbO0k^WH)7GI5{+BH8f#lGhtz6W;SFuHaRn6GB#p3I5%WDpa3}rzyKErIyz}{Uvz10Whf~iV{dMAbO0k^GGsDlV>mE1F*0N@IALZtVL3B2VK!tiGGjMlW;HN2q5wGtzyKErIyz}{Uv^<^b!8|iAY*TCb94YBVPj)8Gc#c~W??a9VKrkmIA&vIHfA(tWnnd9V>B^2W268%2EYIp2s%1+d2nSYDIjBSZgX@1BVjW&GGaDiIXN;jH8L?aW-vD}Vl`zsH#s*pHa0UgH!-FFIR?N07YI5!VRR^SX?kT}bSVHMVKZT3H#s>tWH&Q2Vly{pH8Ep0I5%cDWH>o8V=^!`W~cx;2B-iT4j^N1ZgX@1H8){mGG#C`WMMF5G&N;3GC4S7H#A}}FgGz`H#lN7ssK3*zyKElIyz!uV{0fW03%^IVK-(oI5}fvGdVdmG&Ev1VmL4|H#cEsWHm5kHDord06DAx83-U_Z*FsR05D-@WivN2G&MIgI5lHrV>vKoV`XJHW@9liV=`l5Hm(3U2EYIp0y;Woa&K;QC@BCVVKHH5I5lB7V>e+qGG;MjFk&<~F*G=0H)dgDIAt|6Hn0FWumBkdAY*TCb94YWIXE;jH#1>lH85c~WMW}5Ff}qcWn(a7VmCBlFgG%?067N002c^4I%j2cD069gWnXkD03%^EG%{p3FlIA3IWjV2Fg0T|HexhkH)J_sH8eFfH8?f2067M<02vM-V{dMAbO11BVmC53W;rl5Fg7$XIc73tIW;h1HDoYlH8D0YVL7${ISjx67YI5!XJvF>VRI;RX?kT}bSVHMVK-r7GcaN?HezBoGB;%~H90k8Fk)mhVPs}wWH~f7HMjsd2Dktj4j^N1ZgX@1F*jsmFflY^F=I7lHZ){pIb<|uF)=t~WMeQkHf3Zux&S#0zyKErIy!G~WpZJ3Z*p5*D069gWnXkD03%^BWi&T2Win!AWHn@AW;ifnHa0mmV=yo|Ff}q_Vl-vE067M{02vM-V{dMAbO1RpIAt|9H8nD0GGk_8VPa!BVmC8nGBPkXIWlE3F*LpaISldv06IEha&lpL0Ap-nb8~cWZERmLUol~Fa$$KcXmo9C(*PqnI&5ifWdI{#VlpvfVPiEpH#sUTtGB-FhH!w3WF)?O0V`eopGc?lxBM3S=Z*XODVRUbDAYyNCY$z!pV{dMAbO0k^V`E}rGG;S0VK6sjIASz4Gh#SqGG;bnVP-O9H#1{q!vIAF(*PqdIy!G~WpZJ3Z*n0$C}VGKb95kcZ*_8GWnXY_b7^#GZ*C?mAY*TCb95kcZ*_8GWnXY_b7^#GZ*C?j03%^IV>4tjH8W*mH85f_VmUB4V`ed7H#IRdVKHPeWMg8*07Wj-03$FuI&W}ga$$6Day%$wZ*FsRAaieZa${v*aBp*IbZKvHCM+OhZ*FsRAaieZa${v*aBp*IbZKvHCMf_TVKHMjVP!WoF)%qdWin=BVK6geV`XA9HexqnWn?)wGsgf$F4F)bCptQBaAk5~bZ>GzJScN?WI8%;b98cLVQnTXAY*TCb95kcZ*_8GWnXY_b7^#GZ*C?j03%^!W@a{GVKQMbG%{jhVPQ04Wi(}BW;i%wG-5S4Fg7yD07WI!03$FuI&W}ga$$6Day&gKV{dMAbRctYb#h~6UvO`8X>@6CZYC@sV{dMAbRctYb#h~6UvO`8X>@6CZYC)JBVjRSH8nCdVKXo^WM(!oH8*2qFlIC{GdDP6FgG_dWirbEMK03-BQQETZ*XODVRUbDJv}I6Z*FsRAaieZa${v*aBp*IbZKvHCM+OhZ*FsRAaieZa${v*aBp*IbZKvHCMf_TVPrHmFfe0dGGsPoWMwiqGGjS2VK`!BV>M!8H(@enWz7IZF4F)bFgiMKaAk5~bZ>G#C}VGKb95kcZ*_8GWnXY_b7^#GZ*C?mAY*TCb95kcZ*_8GWnXY_b7^#GZ*C?j03%^EH)S|6G%_?dI5lNsFfm~@Fk>(=GGk#jHeoh4F*7#L07Wj-03$FuI&W}ga$$6Day~sMV{dMAbRctYb#h~6UvO`8X>@6CZYC@sV{dMAbRctYb#h~6UvO`8X>@6CZYC)JBVlGZW@9mAI5RLfH)LisH#K56Vq!2dFgZ6gG+{YoGi1>KMK1CI06IEzZ*_8GWnXY_b7^#GZ*Bl{baHiLbaZcRY+o^7F>`Nqa${v*UvO`8X>@6CZZ2qaZERKn76>{zWo>YDc_=9$V{dMAbO0k^W->BkF)=eTG-fk4WMMcmH)J$2H8x^7Ff?Q~Wi&D|)BrdJRsj|WIy!G~WpZJ3Z*m}FZ*OcUDIjBSZgX@1BVl7SI5K50VlXi{H#9UkVPa%rVP-cpI5RM1FlI4jG&t4(I0jY$76>{zZ*XODVRUbDTU{t~X?kT}bSVHMVKg~3WMVgAIbk?sGBYq{VPi96H!?IcGcY+ZHaIgkGS~n(2G{@?4j^N1ZgX@1WnpAvH8wV4F*rFlHDoz6V`XJGVm3KBIWRUdH8M0Z+5k8VRsj|QIy!J+bZ96k03%^zV`DZsHZ*2AGh$;mIXN(9GdMCfGdMXkWHe-9VP!Vl0610w77{u-aA9<4D06gVIy!T7a%pa7Uv_C_cPRiPVPRrpG&5v5GcYwaV>dN9WHUH9FgP`0Gcq|dHDzNmVcq~Z5LN*e6FNF@VRUFHb97`nI(Kt)a%pa7Uv_C_cPRiPVKinlG%#f|H)CdEGcsdgF=k|DWnyMBG-WknI5aY1G~fU@5mo^f4LUk-VRUFHV{dMAbRckHbZ90i03%^DVlgr>WHVthHDfYnGh<<9W?^DsIXENmV>L51GdM9aFy;U_237$U0y;W=aA9<4C@BCVVPrKpHDWh2WMVltGB7e_GGa71G%;Z|G&eUhFf=x0HRu31Rsj|bIyzx+aAj^}C}VGKb95kZVRUFFDF7p3H92K4IAJkiHe@(AW;8ZpH(@q5Fg0T_HZ)>5H!wA3>Hs(kRsj|WIyzx+aAj^}C~#qPXeK5p03%^!HaRdjWMwrmIWsmiW;HS}G&W>oHDoqoGd43eVlg@F05}F#0TvQEI$>~dWo~3Bb97`nI&*Y#X>Mm3V=y*iH8nFeGG=2oFgav0W;r)w?f^ItRsj|hIyzx+aAj^}D06gVIy!fAbaH8KXJ2+{Wp^n6BVlGXI5J@~Vq#%qFg0T{IAt|tHZWo{H)AzsHaRjhVL9*sI1yF>77aQ&Z*XODVRUbDD?KP{zZ*XODVRUbDD?KQ1VRUFFCMf_TVPP_2G&p8rF*Ri~WHmT6Gh#70WH&J}F*r3dHa9ggWb^aAk5~bZ>GiJt%W@WI8%?baH8KXJ2+{Wp^n6BVjo-V>LBmH8M6aWi>ZBF*IW`VPs}8VK`%BWM(-vWH|N!I1p9=785!;Z*XODVRUbDD?KQ4bYwa@cXM=dX>Mm0WjAJHW;SLp`T#f!Rsj|WIyzxMm77aQ&Z*XODVRUbDJt$*uZgX@XaA9<4CMf_TVKrniWHC88Wo2bzFfm~^W@I-oFkv$_Gd5ykHfAz0WdZ>>3swOZ2s%1%aAk5~bZ>G!C~#qPXeK5p03%^CG%z(|V=-i7V`MNjFgId2Fkv||Gi5erG&y24H#s>30XPO$0TvQEI&W}ga$$6Day=+>bYwa@b98cPZf9S1X=QgQ03%^EGBG$aF*7q_WMndBF=J$9FflMSVPr5jG%;Z~V=*@d0XPs=0TvTFI&W}ga$$6Day=+>bYwa@cXM=dX>MmGiD06gVIy!T7a%pa7Uv_C_cPt=dZ*FsRAaG%HXeKEDBVjT#IA$|pF=R0`H#jmiW;8W9Ha9UiIXE+BW;A7GVKNQ@I2~3279cu0Z*XODVRUbDD=1@cZgX@XaA9<4CM+OxbYwa@cXM=dX>Mm2*gF*r73G%+}3WHex4EFk@vgV=`nhHa8LhI389378*J_Z*XODVRUbDAw4K#Z*FsRAaG%HXeKNmV{dMAbRckHbZ90i03%^HV=y^kFkv?`H)J+4VK`whH8M72W->7|VrDilIc72x0XP^|0Tv%RI&W}ga$$6Dav?n^V{dMAbRckHbZ90lAaitNIy!T7a%pa7Uv_C_cPRiPVKiZ3V>U4|IAdlrFgZ41VPrBkVlZMbVL3KqGBGqZVio~79aaGrA38d3aAk5~bZ>GYJt%W@WI8%?baH8KXJ2+{Wp^wfV{dMAbRckHbZ90i03%^zH8L?WIWsUbIW#n4G&NynI51*3F=1pkHa0P4Fk(3v0XQ920Tv)SI&W}ga$$6Dav?n^V{dMAbRckHbZ90lAaitNIy!fAbaH8KXJ2+{Wp^n6BVjf%H8Ex}HZ(RfI5#pkWI1CrWM(roFgQ15V>B}`G&C9kI389379cu0Z*XODVRUbDAw4K_bYwa@cXM=dX>MmG!Jt$*uZgX@XaA9<4CM+OhZ*FsRAaG%HXeKEDBVjdUGBaalI5#t5VPi8mV`euoIX5t7VKX-|Fkv`jV=^8AI2cv|79Tn~Z*XODVRUbDJv}I6Z*FsRAaG%HXeKNmb97`nI&*Y#X>MmG!Jt%W@WI8%`b98cPZf9S1X=QgTAY*TCb95kZVRUFFDF7p3GBGqcGdD3~FgH0kG&Ey5I5{z4IWlHpH#A{5Ib<_9CIL7eRsj||I%98cb97&6bY*g3bZ>G1BVl1>WHT{kV`4NjG-Eb2G-P8lF*YzXGGaG0G+{PjH91xR7CJgG1BVlAWH8Ny4I5RjhGBIN@H#uQuIWuE9G-NnoH)UiqWHMF(76LjtVr6G(ZYU`LBVjaTG&Er`F*Y@0Fk&@iV=-bgF*h+}VmUQ3Vl_5lW@IV>I4S`c2q0r`ZgX@1WH&W8VKg-{WMnouFfwK`HeonqGGSyhV>4zkH8D9fECDzMRsj|WIyz%wWoKz_C@COgZ*FsR03%^!V>dHpVKg&kWi&N3GB7kTV>LK2I5svpF=jS4HDx$10XPO$0Tu{4I%8#SWGE>hV{dMAbO0k^VP!RDW@BV!HDzRGVr4jCWivBlVPs)uWMN}7G-769FabCQRsj|QIyz-;WGE>BBVjl=G-YHkHDNJkG+|^iVKQViW@R}sGc#pkH!@)}IWaN;I5Ghk2q0r`ZgX@1WMnX8Vq{@3Fk~|~V=*{0IAS$5WMwxqW-~EkGGt>mGyymURsj|bIy!K2WpHI~WGG{AZgX@XaA9<4CMf_TVKX>4W@KhIH!(71G%`3aWi~Q7HDx$vGiEn4HZm||HZ}n`3swOZ2s%1&a%FI3Ze%EMVRUFFCMf_TVPiKlG-P5oGG;e0GcaLcGB7q_Vlz2mIAJ(qG%#T~FgO7?237$U5;{6?a%FI3Ze%EPbYwa@b98cPZf9S1X=QgQ03%^$Gh;VqGch(WVP!I7GG;kuVmM(pWH>oyGcqtXW-vH90XPs=0TvTFI&gAjaAj^}D06gVIy!fAbaH8KXJ2+{Wp^n6BVl7PV>4!DHaKBnW-(76>{zZ*XODVRUbDAaitNIy!T7a%pa7C@COgZ*FsR03%^EIAu6EG&eFbIXN~tWjQf2I5jn6H!)#2V>LNrFgY|n0XPO$0Tu{4I&W}ga$$6Dav*bbWI8%`b98cPZf7VdAY*TCb94YBVPiKpVK`)FW@BMDIAUZoFgY<|H)LWlGBY?cH!wLjVn6{n237$U2s%1*baE&uAY*TCb94YBVK`(rFl09{H)CRCGdN~uV=yyjV`4L6HfA_6Fg7`6VL|~o237$U2s%182H8^24H#9^6I0jY$792V{Z*XODVRUbDJUl3KbYwa@Z*z2VWnpb5EFfcVZgX@XaA9<4CMf_TVK8GkH8nIjH!(S3W?^PFWi~QlHZ(C~GGb(7Gc#j0Wkvxw8dd=o0y;WlY-M3`C@BCVVKFc{VK8JkGB`6iIWRP1WH2}|I5RjnFfubUFg0XjG)MtBRsj|cIy!7+VP+_EX?kT}bSWTXZ*FsR03%^zWiVkdH#TEAHfCZlVl*~5GB{*qHDokqH928qWi@0<0XPg+0Tu{4I&fifWo~pRDIjBSZgX@1BVjOQW@0ipH!wG2G&43fG&nJ1VK!woG&y52WHT{gH#kfII0jY$7A876b9G{HVRUFHV{dMAbYE$7WpZJ3Z*nXkV{dMAbYE$7WpZJ3Z*nOhV{dMAbO0k^W@9yGH#9jkV_`I7WHMnjH#9aeIb=6xW@0cnFk@shP60S1Rsj|kIy!T8VsK$}Xee`OdSzd9EFg1fdSzd9DIjBSZgX@1BVl1TWi~Q6GdE^qI5TEBVK+EsIW#h3HD)w1Fg0R0W-w3zI22X^76>{zbaHiWV_|eT6GcsZ^WjQr4HaKBY0XPO$0TvEAI&^Y%Zew9|Wn?IGX?kT}bSWTXZ*FsR03%^CW;A9rVmLNsFkvt@Wn^SBH#RmnWMeThG%+w`I5uKb0XPiu0RTEWaA9<40Ap-nb8~cWZERmLUomiDbZ9PUbZu;H0T((tXm53L03%^BIA$|4VKq27G&W>2Gc#s6WjHoAVmC51VmD$pVP!OJ0T((tZE0?GbY%b|VK6deWi)1GFf=h_W??xsGc{#mG-PHrFl0D3W;bSHG;IMFIy!S@V{dL`03%^IVP!C3VmLH8VK+80H8e9aFgIgiI5uH2WiezhW@Kh<0T((tZeeb3b7f<1Ze#!>VKZepV>U20H85jiWHK>kF=aG2F*7n^H#avmG&eCgHEjVG0y;W$X>DaFDF7p3G&V3~Ha0RgVKOjcIXN5H#TBsHDzTsGGQ_>TLC$30T&HAI&^7mWhh82AWbYFQ!F4(Qz-x=VPj!sV>4u9Ha9plH!wD1H8*2pH!(6{Vl*%_F)}k{HeCTZ3vB@x8ag^}aAk5~bZ>GYJt$*uZgX@XbZKp6CM+OhZ*FsRAarSMWhN;ABVji;Ib~unG-5Y4F*G+eH#K21H#25pH!w10H8f;pH#J`YIT&pL7aBS`Z*XODVRUbDJSbytZgX@XbZKp6CM+OhZ*FsRAarSMWhN;ABVjf)FlJ&mGdM9bF=J#kFgP$cVK+B8F=S>iW;HivG-hD|IT&pL7aTe|Z*XODVRUbDJUl3KbYwa@Z*z2VWnpb5EFfcVZgX@XbZKp6CMf_TVP-KfI5aXhGdD40WH4heGcqw{HDY68Vl!qnG&eXjGGhTb8f^g=8ag^}aAk5~bZ>GzJt$*uZgX@XbZKp6CM+OhZ*FsRAarSMWhN;ABVjZ$F*IXlWHB^3IX5ygHaTNvVP#=6Ib~xqGB_|eGcsiXIT&pL7aBS`Z*XODVRUbDJv}I6Z*FsRAarSMWhN{jV{dMAbRcwTZDl4Y03%^HW@ckFI5RgmV>e+qV=*>0F=1w9G-EeoV_`XCFf}x10XZ0L0T&uNI&W}ga$$6Day}?yZ*FsRAarSMWhN{jV{dMAbRcwTZDl4Y03%^IV>x0uWi~NnGcsW^V`64GV`e!rG&yB8V>MzjF=R4n0XZ0L0T&uNI&W}ga$$6Day~sMV{dMAbRcwTZDl4bAY*TCb95kdX>DaDDF7p3VKihnHf3QsIAmdBI5IXiHa0e8VP<7GV`DctVmC5nYXLbJ@&N!kI&^7mWdL(@a&=>LbZ>2JUol@XbZKp6E@*UZZ1MpBD=PqLZe(S6E@*UZY>WXNIyz)wbY%b|VK_NvGdValI5lQ7H#1~0WjA7EH92NwG&C?WF)}bWG>icqIy!V|ZDjx>VKF#lHDxz9GGt;jW;QW4Gc`6eGh<|7GdVD0GGaF}FpL2mIy!G=W^-k903%^$I5jyoFflV`H8L_{IW%E7IAk(oVP-ZtWjQcmF=jPy0UrWibZKp6C@BCkV>xAIF=I7jIW%E5HZn71Ib&gCHDqEoH8MCkWHDxP0Y7g6ASPdQX>DaFV{dMAbRcwZZEQL^WMOn=CM+OhZ*FsRAarkSY&tr0X>DaDDF9+HI5cE4I50OkV`euoWMVL6FkxdjG&VIkGB{*oGIRkyByRy96JK;`ZDlB9Z*FsRAarkSY&tq*VRU6CDF8JyIW%K9Wi~cBFlIG5Wi~Q5W;rrqHZe3}Fg9XkH8^$wKM`*M9}{16X>DaFV{dMAbRcwZZEQL^bZKp6CMf_nGh}8pF)%bSWo2bBIAS?CG-NY4G&V9~VKZiAWMMRT0Y4FM0UtGAbZKp6C}VGKb95kdZ*6QkI%HvVWhN{jV{dMAbRcwZZEQL^bZKp6CM+OhZ*FsRAarkSY~p~XDF9((Vqq~gGiEt9WjQu8H)J(4HeqCBH8C|gVqs)CIbnJMKQoL09SAx)X>(s}Z)0I>C@COgZ*FsR03%^$Fl06{F*!LnG&VFfWnwTfHD)qqVPr66W;8fAVq#-_0Y3(e0UabdI&W}ga$$6Dav?n^V{dMAbRcA5bY)+3X>DaDEFfcVZgX@XWMOn=Uvz10WhN;ABVjUQVKZW7W?^DvVKp!@WnwWgG%_?bVm2}{VKikqGBJJuKO&3)9V9wBZ*XODVRUbDJSbytZgX@XWMOn=Uvz10WhN{jV{dMAbRcA5bY)+3X>DaDDF7p3WjACuV>B>fH!?P4WjAIuW;i)CH8MFeHDWV1Vq`QifB`=ui~$`XIy!G~WpZJ3Z*n|5D06gVIy!H2baG{3Z6+)rV{dMAbRcA5bY)+3X>DaDDF7p3WMMcsGht$5GC49gWH4l7H#cKAF=aGnG&p59F*#ylf&o7ti~$`aIy!G~WpZJ3Z*n|6C}VGKb95kNVRU6*bZKp6CM+OhZ*FsRAY@^5WnXk@ZDl4Y03%^!VlrblVmM?oWH@AEF)?OlVq`fsVqsx2VqrOCGcq!S0Y4&)0UabdI&W}ga$$6Day>mLV{dMAbRcA5bY)+3X>DaDEFfcVZgX@XWMOn=Uvz10WhN;ABVjc#W-?)AWH&frVq#=tH)CZrFl9C{HaRvmFk&`gW@Cl{KO&3)9V9wBZ*XODVRUbDJ}6^vZgX@XWMOn=Uvz10WhN{jV{dMAbRcA5bY)+3X>DaDDF7p3H#T81Ib$?AV`MQlWjQf0Gh#6}G-P6AWiw$jWi>fthygz$i~$`aIy!G~WpZJ3Z*o38C}VGKb95kNVRU6*bZKp6CM+OhZ*FsRAY@^5WnXk@ZDl4Y03%^zVK-wkG&wdlI5lK9GBGzdVliVlIW{ynWjSLqHDO_j0Y4%?0}@|!X>DZyUte@-ZDlTKbZu;%0W>-~Zf|a70AVvTG-EVjG-EU}W@KVFIb=6wVq-I9H#1^2F*jv4W;mSzG&(wQb#HWKUu0o)WpiI)Ze(9{X>Db50AV&|H8wdgH85deW@9#GV_`I7Fk>}jW?^D8HD+WoHDR3rG&(wQb#HWKUukY;X>MtBX=QU?VQyq!Zeeb70AXcfV>MzqW;kXyH)J+sW;0_rFg7zYIW#vpW;8Z1IXImGG&(wAY;13LUuMn80AVvSI5amiH#Re7W-(!6IWak7WiVneF=RG2VPrF6W;UGxG&(wAY;13LUu|`4bZK8~X>Mg-b98cPZfA1Mn80AV;aV`MipV=!Z7H#uW6F)=wdF=94kVlXu|I5#&pIAfgwG&(wAY;13LUv+M2V{c?-UvqSFX>Mn80AXS{WHe@DH)1h0H8U|cGdE;5WHK@}Gd5#2W-~ZAF=L$pG&(wAY;13LUt(!)VRCt2X>N37XJvA80AXb~WMXA8F=aC|F=8_?IW#diIXPoxI5B2qGG=9EG%=k4G&(wAY;13LUvFb{VQgP%Zggd5WpZ->VKZbgI5c8oWHx0uW;QuxVq-EnVlgy0IW#q9GBac}Wt{;uIyzx&Y;Sj8Xk~a|WMyM%ZDDL*X>N37XJvA80AVySWi(_rV>CB6G%{v5W;J3qFfleUV`DWrG-5F}IbxjwG&(wIZe(R{bYF9IVqbJ&Vr*q|0AVy^V`648G&f;1WidH4WjACpVP!I6GBh$}F=b_AWn!HHG&(wIZe(R{bYEd|a$$L2Wo%__Wo~qH0AV;{W->8lWHC20HZeIjWHC80VKFo}Gch+~H)UZtHDa9sG&(wIZe(R{bYXO9Z*Bl#G&DIdH!@{2Fk&<_WH2;hH#9V6GBPzXGGRD4FgP(dodGmDI&x)fVR&U^UuJA?VRT<`a%E#_b7^mG0AVsPGBY$dIc739Gh#3{IWsq8WHUEoGBsi{V`efiH#nUEG&(wTWpZ<6Uu$J~Uv^<^b!A_0VQF%60AVy^IAUgGGdVY7F*P+~W;Hl8F*r0bV`O4tH8nP6WMrKIG&(wFZ*pU0Uu|`4bZKm9Ze?F#a&lpLa{ysCIAS?wW?^G8Ha0n9F*GqbVP#@CWMgAEG&Ny2Fk)iz0TMboW^ZzBVRT<+Y++|}03%^CF)%V=VK^{iV>LH7I5T89HZeFbW-~TrF=jS2W;S7{0W>-~Zf|a70AVvTG-EVjG-EU}W@KVFIb=6wVq-I9H#1^2F*jv4W;mz;G&(wTVPb4$0AXQaVmW0oWMwfnW-~Z3H#TNCHe@$pIWl5lGcz|~IAo{+G&(wAa&lpL0AXe^W;Zc2V>x9oFfe8{WHV+mI51&kVq`HgG-PHpW;Lh*G&(wSbaH8KX8>VhG&N&pW@RuqG-PBmWHK;hIWjn6Wo0-uWjA6lW->9T0W>-~X>N37XJv8#VKFr~WMVgDW;HV~FfubWH#IdeHDoh3He)$rHa9Y5IH&UEqGdN~9IAUQlWnndAIWRS0Vl`nhWMMKlr~x!OI%HvVWdLC{W@9%qGBYtTIWRS2Vlp>nI5K25H)b?uHZ?IZW;bT20W>-~bZKp60AVmUV`DZsG-5eoGiGBpGd4FdFlJ#eIAS(AGBRT{GGe6xHD7dTZDjytHZd_{G&W{9Wi~ZrIb|?3IbmjHF*Y@1WidEoGBz|R0{~xid2nR_ZeeX@b8ul}Wpr0Wj1Cwt^qVUI%aQjZDDj@VRK(%X>MV1c>rNEWHK>fIWjmkWMwfoHD+dJW@9-yV`gD7Gh}8mF=S@00W>-~W^ZzBVRT<%b6;;`bYW}&VPs}wGB!6hGdDFfWMN`rWM(-xWHVzpI5RV0GG#boVXgr*Iyz==a&2LBUtx1!Xk~a|WMyM%ZDDKxVKii9GiGIDG&VG1H)LTjGGt|9W@2M7Vq`QoGBsl|IiCUmUuJA!XLA52JE@*UZY$IVeGi737HeoX~WjA9tV>DqjWHT`_F)%PVFfe5?Vq!JG003WUbY*g3bZ>G1ZeeX@b8ul}WprjG-Ee6HDon8H#s>o@&OV$I%H*LVRdYDUuJJ|ZDDkDWpV%`VKQPkH)1tpGBr15H8eLjGd4IgGcq_ZGcjf~H8W*5Hu3=yIyz}?b7gXLWn^D;d2nT4Z)N}^VL3QtH#jq4F=IG6V`VoqH#s;mV=`niG+{L}GC4RnGV%cuIy!G~bZKvHVQc^+VP-QlVL4`EGczzXWi&B4H#jsgFf=wWIb}9tVq!O8WAXtKIy!T2b#h~6UukY+Wq1H1VP;}DH8N&lGBRN}Vl!o7IbV-EG&DA1G&nFdG&W&nF=jV0W;J3sHZ(LcGd4J6lmq}@X>?_BVRUbD0B&JzWpi+0V`X%2ZEP-RbZu-SVPR!tF=SygIAu3wWHUA~Wic={W?^M8I5uNuH)1ejG4cTtIyz}{Utw}`VR--}VKOo`F=96`GiEboV>DzjVKXo@He)z4WnpA9WHvctWAXtKIyz}{Ut(`>Y-M3?03%^IWj8rEGB7qZF=JynVK_52FgP+}W;tPEWHdKqI5;)(0TMboX>(s=XmW3EZ)|U8X=7n*03%^HW;i!CG%z+WV_`RBV`E}BWjHc9W;QouI5J}}G&nW#0TMboX>(s=Z*Fv9X>Mh503%^!He)trF*Y|hWiex8H8wP4G%#gmVK_NqW->J~G+{FG0TMboX>(s>VRU5xBVjXRHDqC7G&MFeWiw%BW-?+mWi~W6FkxXiH)Jw6WM;ep6<>5|ZDjy5I5lHoW-u`_H#j+AHZV6hH8C(UHfA|EGB;r}Gi34s5;{6*b6;j`Z(($4Zf9R`Z)t9H03%^BVPRomFl90}G-G6BG-fn2H8D6fH!)^1W;QWlV>34L0TMboX>(s`Zggd5WpV%`VKp%`Vq{}9VKF%{H!)@~Vr4flWjQipVm4!9F<~)bGx7lvIyz}{Uu$J~03%^HVmM`HIWRY5IW{smWHB>2VKXpfI5#w6Gc+|~F*!BB0Tf?va$jR_ZgypIbZKI2WdJZWGG<|BWMwxoIWRY6W;0pFgZ12WI1AGWiU4|G{ONCUv_C_cK~8FVlXyjVPiOBF=a4hWjSRqHZ(CYIWae7F)(5_F*x!85;{6*b6;+CZDM6|03%^GG-G8qWn?xvH#B52Vlg*3GBY(cHDY5nH)Av~I5#u$0TMboX>(t5baH8KX8(t8VQh6}03%^AWI1DGGB!13G&DFdGcaN~H8U_ZV`F4CIAk(rH842x0TMboaB^jHWpZ|9UvqDDa${v*c42IFWnX4&VP|syBVjW#W;ZY}Vlg!`Wid5lGc`9jFfnC0Fg0X0GB#l}W@7RI5*a!=VRT<`VRUFHZf|5|CM+OxbYwa@b98cPZf9S1X=QgQ03%^DFfue^VK-tlFk@mdIc8xsHZ@{3VPiNjVPiKkV=`pQ0W=r#0TLfNI$?BQaA9<4C}VGKb95kXZ)9aAEFg1qWI8%?baH8KXJ2+{Wp^n6BVl1=I5sq7IXPlxH8W*0Vl^{iIA&#KGB{&0GC4V9G&9TrG#&B*5*j)>VRT<`VRUFHZf|5|CM+OxbYwa@cXM=dX>MmMm4G-5bnWHB>iF<~@fHDxq4V=>eLG#>H+5+FJ{XJvF>Y-w&~D06gVIy!T7a%pa7Uv_C_cPt=tZ*_8GWnXD-WMz0M03%^HVKFl|W@2VyGiEY1H#RshGC4A1GB9FeWidEmH8o_`0W==+0TL!UI&W}ga$$6Day&dJb97`nI$~jSX=7h+b98cLVQoA^Xkl_bCM+OsZ)9a(ba`-PDF7p3IAJq4W-vEpVL4+kVK_7~Vr4NiH8L?YGh#DiVq-Nj*a0*o@&OVgIy!J+a&u)Ub97`nI&*Y#X>MmdH2WMtX_G$Qf=5+OP|aA9(DWhirWWI8%?baH8KXJ2+{Wp^wfb97`nI&*Y#X>MmGCMf_TVKOjgVKZegIAk|6H#IphI5TEqF*jp3H!@)}H8(IcGu#0*AMybbCOSHBVRCb2D06gVIy!YYb98cPZf9S1X=QgTAaitNIy!T7a%pa7Uv_C_cPRiPVP!dGWi&G|Fl1zAVq`ZmVmC4~H!?UgVPZIBIX5;jINkv?B=P|gBRV>8VRCb2D06gVIy!YYb98cPZf9S1X=QgTAaitNIy!T7a%pa7CMGEWBVjNyVKO%|G&MFfF*G@0WH>Z4Ib$$1H8(RgH#0CeVmROdG$HZ<5+yo1aA9(DWhirWWI8%?baH8KXJ2+{Wp^wfb97`nI(Kt)a%pa7Uv_C_cPRiPVK6Z@HZ^84Heok8I5K20HZnOhIbvaBGh#J0G+{F{G~xj?Bk}UK8GGk*hWaI%fAo2kcCptQCVRCb2D06gVIy!YYb98cPZf9S1X=QgTAaitNIy!fAbaH8KXJ2+{Wp^n6BVjW*I5jdfH8C?VIc794He_NlI5B21H#0LdWnnmEW@Y99G$rx@5+OP|aA9(DWhirWWI8%&b98cLVQnTXAaitNIy!T7a%pa7Uv_C_cPRiPVKQZ9I5cKvV`F4xWH&Q6VPZ5eVP<1uI59FZWH>T6H|PO0AMybb9y&U3VRCb2D06gVIyz}{baG{3Z6+)rb97`nI&*Y#X>MmGCMf_TVK^{1Ib}C7Vq`crH!?CeFfn6cIWaggIAb<9FgY_YHR=I09P$AY5;{6?VRCb2UuJ1+WhirWWI8%?baH8KXJ2+{Wp^n6BVjmXVq-NpWMO19Gh;JiHa2E7G&eS3H!(9YW;Hi7F=6ZhG!XIu5)?W*aA9(DWnX4#Y-K2ObYwa@bvSc$a%pa7Uv_C_cPRiPVPj-sVPa%7VmCK2WHK@_W@R}zVlXf@Gh{e4IAk_CWbOep67m5O6FNF@VRCb2UuJ1+WhirWWI8%`b98cPZf9S1X=QgQ03%^!G%__|W;8i5Gc++WFg7(fIb&fqVPj)6H)AtmF*#-M0W=YGZ*6PV>WXmo9CBWGbUVrFAEVP!NoG&g23H8VFjWH~Z2G&x~mWMgG8F*#*aPfbi;Lr+ddNk?BuML|SGQUGUiZ*_2AUt@1>W@%@2a$$67Z*DGVbZu-SXJIfoGB7k|Wnwg8GiGKrH8V6eGBaZ`Vq`EiGGt?AV=z=tO-x@zNmD^WOhsQqPfkQhR7p=xK}=sxPeoWmMNm{V>WXmo9CBWGbXV=*&fG+{G1Wi(W@%@2a$$67Z*DGVbZu-SXJKPDIb~&GH)3NjIWRS3H8^25VP<17IXO8vGG$~pVPsTKO-x@!PC-IUMPEitPeD{MHUMXGZ*_2AUt@1>W@%@2a$$67Z*DGVbZu-SXJIuqVPZHjFf=hZIX5;qF=1mfIAdjEVKp*gGdM6}IX6^KO-x@!PC-IUMPEiwQcXcrR7Fx#0B3S|zZ*FF3XLWL6bZKvHE@*UZY$Io3F)}eZF*0N~HDok4GBjjmHeq5mI5jk7G%;j2VK_B1R8LJzUqwzqLQF+pRZdbxOhrLcMMPglML|?mQbkh$XL4_Ka9>|zZ*FF3XLWL6bZKvHE@*UZY$Io3F)=YPW@a~JF*rG4H#ajlVmUD|Ib<<1FlIG2IAS(pR8LJzUqwzqLQF+pS4mDpPghf4Lr+amK~w-|a&L8TUteQyZf0p`b#h^JX>V>WXmo9CBWGbbG&nXlWMVcqV>viwFl9MpG-hIAH!wCiFgZ0bW@2VkPfbi;MOZ^cP*h1zPE!D9a&L8TUteQyZf0p`b#h^JX>V>WXmo9CBWGbbGcY+fWn*MGIAdWnVq;-5IWuN9Fkv@1Vq{@9G&5pUPfbi;MOaWzQdC7mUqehmQ&RwEa&L8TUteQyZf0p`b#h^JX>V>WXmo9CBWGbVWH(`DVrDrpG&3V>WXmo9CBWGb_G%#T_H8f*nWiU2mWi(|sHe_ZqWHw|pHZWl`H8eC-Pfbi;MOaWzQdC7mUrj|#LPb(vMpaHjR7p=x0B3SkVKy^kVpLB}OkYJV>WXmo9CBWGbaG&441HfA$7IAb?6W-~N2HeoYjHfAwpGGjGmI5A^XPfbi;NJT+JMN(f+PE1(|zZ*FF3XLWL6bZKvHE@*UZY$Io3I5IIgVrFDFWj8f7I5#yhHZwRiVm2@`GGa0~VPa!4R8LJzUr9|+OhrvaPE|zZ*FF3XLWL6bZKvHE@*UZY$Io3GB;&qHaR#mHDNJiWM*bLWMW}vGcYkVVl-kfIAJj{R8LJzUr$g}Nl#8eOkY%4P(=V|a&L8TUteQyZf0p`b#h^JX>V>WXmo9CBWGbbV=`kfGiEq8H)UcrWH&ZpHD)$7VlXykWnwWgI5uTePfbi;Q%ylkOkYM!PeD{)R9R3(0B3SR9R3(0B3SLHqVKy^1Fk?4nGGbvcIAb<2WieqmF-&PV>WXmo9Cp8^*;I(A`fb!A^+a%TV|VP!IAW->NoGi5PhHaTQ5IAJq2VrF7yIASq5F=b>oFrNY!Iy!b?Y;|Q{ba`-P03%^!I5%QAV>e}EG&VJ3G%_?|I5sh1Vqr35G-G5nH8M7z0v8TCI&W}ga$$6Day=+xZ*FsRAa-GFb!8?g03%^EGGR3`VK_E0H8(IeG&5slH#T86WiT@~Ff?IgH8o-j0yzwy0v8E7I&W}ga$$6Day=+^VQh6}CMGEWBVjf(HDY38H!)>oWHvJ}Gh$_9Wn?rpF)=bWWn*JAIb;n2IR~Et7YjN%Z*XODVRUbDJt%fzY;|Q{VRC0F03%^!V>V$nV>2-^G&VJ6I5%ZAVK6jeVlXsgVP!dEHDP2A0yznv0v8QBI(A`fb!8|)a%XcOCMF;*E-onmBVl4UVPQC8VKXpdWHx1CWH)4DF=aVpVPs-vW-~cuGBObYISZcx7Y;f)c42IFWhi5BZgX@Xc42IFWhN;ABVjf&VPj=AWHUEoHe+TmIc8*IH8?qCW??mDFkvt`Ff|hbISiiy7aKY{c42IFWhi5BZgX@Xc42IFWhN{jc42IFWnX4&VP|tG03%^GHDxwsIA&ooH#9XhWH>WnWHVu8VK6cotH)3NpG+`G4IR~Et7Zy4?c42IFWhi!GY;|QOCM+O!VQh6}UuJA!XLBh4BVjdWHfA+pI5T20WMeaCH8?afW;bSJHD+RCFl97mH8~jqITW7)7ack}Z*XODVRUbDJUl3KbYwa@Z*z2VWnpb5EFfcVZgX@Xc42IFWhN;ABVji&V`VuwGBGq^VPi2eVq-ZsHZU_dWHB={G%{u|WH=iFIUAn>7aux0Z*XODVRUbDAw4K#Z*FsRAa-GFb!8?jAY*TCb95kfVQh6}JXAg=DF7p3I5#q7H8wS2WM*PxWHK-@W-?)7F=aC`Ff%qeIX5*p9RfKWp8^*dIy!G~WpZJ3Z*n{+V{dMAbRc$NY;|QOEFgAaY;|Q{VRC0F03%^BH#ae1VKXygWHMwlGBsi~G%{o`VmV|mWjQc7Ha27*0y!6-0v8!NI&W}ga$$6Day%$@VQh6}Utw}*EFfcVZgX@Xc42IFWhN;ABVjgTVr4KnIW#h2WHvA~HfCWtG+|_9VmUD}IW#adIWZvuITxP-7aux0Z*XODVRUbDJSbytZgX@Xc42IFWhN{jV{dMAbRc$NY;|QkR6Zst03%^HW@KYDW;i!yIb~xrWoBYHIW}WsGi5M2HaRpiGB{!*0y!O@0v8!NI&W}ga$$6Day&gKV{dMAbRc$NY;|QOEFgAaY;|Q{VRC0F03%^HWH2%{HZ@~5FgRm2HZx&nV>o6rWHK=@GBz_gH#9IM0y!6-0v8!NI&W}ga$$6Day&gKc42IFWnW=(XDlFNZ*FsRAa-GFb!8?g03%^CW-~WtHaTQ7Wi&T8V=!YfWin!6F*as4IWajnF*Ri;0y!6-0v8`TI&W}ga$$6Day&gKV{dMAbRc$NY;|QOEFfcVZgX@Xc42IFWjs_qCMf_TVPiI7W-&EpH92H8GdE;8HDobiW@R`yH)1g|Vm3K9WhnwV9iIXh89F*|aAk5~bZ>G!Jt$*uZgX@Xc42IFWhN{jc42IFWnW=(XDI+9VK8DjFl97mI5lNsVP-O8I5A~3VqrL9G%{gfHDhHnG%Er*7oP$bA38d3aAk5~bZ>G!Jt$*uZgX@Xc42IFWhN{jV{dMAbRc$NY;|QkR6Zst03%^CW??imHZd?TFf=!0Ff}q{Fk@q3GGj4jGiEk0FgP_W0y!O@0v8!NI&W}ga$$6Day}?yZ*FsRAa-GFb!8?jAa-GFb!A^+a%U+3BVl7@IAbs{WivE2V>UTuWjQltHDoekWHMxCHaRpiG%zm$ITxP-7a2M_Z*XODVRUbDJ}7o!Y;|Q{VRC0IAY*TCb95kfVQh6}CMf_TVP-NgFlI7hWi&E3Gi78jIWjXhG&5#2VmUE5W;ixwHZcM@7oP$bA38d3aAk5~bZ>G#C}VGKb95kfVQh6}CM+OhZ*FsRAa-GFb!9wMJ|-yuBVl4WHDoY1VK-(pIAt_6Vqs-wVqs%qW;JFuFgG$dGdD8=IUSz@7a2M_Z*XODVRUbDK0PR7Z*FsRAa-GFb!8?jAa-GFb!A^+a%U+3BVjl&G%+_~H83?bFgG%0GB9K_VKzB9HDobjH#lKtGBGs*ITxP-7a2M_Z*XODVRUbDK0PRQVQh6}Utw}*EFfcVZgX@Xc42IFWhN;ABVji(H)S$mV`MThWn^YBG+{9`G&wOiWHC21H!wD0VKz4cITxP-7aux0Z*XODVRUbDK0PR7Z*FsRAa-GFb!8?jAY*TCb95kfVQh6}JXAg=DF7p3FlAz7WnnlnF=RP7H8eJ4Wi(8s7Y#Z(W^7?+b0~IUY;|Q{W^7?+b148LVKXx`G&DFkI5apkH#9b6G%+wXIW{;sH#1^mW-vH7W<3Hq3!efP0y;Wjb6;U{a$$KWDF7p3Vlp!{HD+ctFflVQWMN}4H8*5AFg9T}HDYEmVmV_rKLR;F0vQM(V{dMAbO16mGG#brGh{e9G&V3bHexwrV`VX9H8^8oWHMneFfc&^IR>8s7XmsuVRK(%Z*Od6VQwfX03%^#GGsV0IW;*rG+{9|H(_LCHfCjGFf(ChVKrl9IAJqG0y#qh8VDd`Z*FsR0Ax2eH8*2rVq|79GC4A1I5=fwFfw5?HZnLdH!?OhMFKenp8^*GIyzxd?vIY$B+2q0r`ZgX@1VrDgEF*Rg3V>vlDFlA$9H#s(8GcsW{VPP{jV>dTuNdh?rp8^*GIyzxo4IGB9OfVrFGEWi~TpGdN=~VmDKnG-hRHGdVC~H#1={IW}fd0yzes0v7^0I$?8PX>N37XJv9IDF7p3V`X7DVrDpFVK!nhH#Rn7FfchVFfwLjI5%TtVmD!9Qvx|t0vQM(V{dMAbO1DFVPaxpVKFl^FgP|gV>f0wGcYqSVK8DbI51>1VPjPSIR>8s7XmsuVRK(|baH8KXDBHEBVjl=VlX*kWi(`DGBY=1GB7nZHD)$9Vqs!1I51^nGcZ>IIadN12q0r`ZgX@1WMVlnGB!6kHa2E8G-5V2GGjDmW;rlnVlrkhWMyG6Spqo*p8^*GIyzxM}He@n2GBq(dV`E`o0y$p-83-U_Z*FsR0AV;aVKZT6W@IukV>dQ6Heok7F*IaiVP-HfGB{>4IAH=g2A={K2s%1xb6;U{a$$KWDIjBSZgX@1BVjQ%Fk&=hWHU2iW@I#EIAbs}VliPfV>e=BG&p84H)dl3IR>8s7YI5!X>(s;a&lpLUvFk#bYWs_WpgMgAY*TCb94YBVKz25Ha9mmWnyMIG&ngiI5IV3HZ?djGcqzYGGk$4Fl7Qc2A={K2s%1xb6;X_Z){~@ZYU`rV{dMAbO0k^HaIahV`MUBVqs-7HDxj}IXN(7Gh{V3F*amjH90k5X976}p8^*MIyz}{Uu0o)Whf~iV{dMAbO0k^G&f~pV>vftG-5R|IXO9FI5A~nFf}t|G&M6}V>vN4X#zP0p8^*MIyz}{Uu0o)WnXk@ZDlAaAY*TCb94YBVKHSmW@0vBGdE^7HD+dJIXPiAGcjRgWivEkVm4%AG;0Dm2A={K2s%1xb6;j`Z(($4Zf9R`Z)t9HC@COgZ*FsR03%^xHDWViVPiEnH)A$1Vlp&lGch$aFlIPnH(_LCHaTW(0yzes0v8cFI%#uXXm4$AXJu|>Z*_AhZf|5|UvznJWho$IZ*FsR03%^GHfA$1WMVL8Wi(-7F<~|}W@ctFV`Vd9VmM-DF=b+J0yz(#0v8iHI%#uXXm4$AXJu|>Z*_AhZf|5|UvznJWh@|WZ)9aECMf_TVKp#0H#ssjH8we9G-WboH8?RjFgIjlHaRk3WoBhCGI0Vq5uXAVA38c|b6;q0ZEt5~Ze?$Eb0}_aWMyA;d2nScAY*TCb95kXZ)9aECMh6eZ*FsR03%^EFl01kVKQcBFk~}1Gcq(aW@9rkWM*SFVK8PgH)djU0y!O@0v8B6I%#uXX>N37XJv9IDIjBSZgX@1BVlAUVlg;0G-EM1FkvueVlrf9Fg9gmG-G69Vlp*3VKj9DIR>8s7YI5!X>(t0b!}p0awsVvV{dMAbO0k^WHc~gWHvNpIbk?vFfuhZWi>T0VL37~He_ODWHB-^cLF&Ep8^*MIyz}{UvqSFX>MmIDIjBSZgX@1BVjo>WHdK7VmD=FF*Pw{H)dltIAb(9WnnjCH8No{F*JDsIR>8s7YI5!X>(t6VPb4$C@COgZ*FsR03%^EF*Z46WHLB3W;0UK7H)Jt1VKO)|GG#L~I5#+b0yzes0v8B6I%#uXc42IFWhf~iV{dMAbO0k^HDoblIXF0BH#A{lHDfkqHe+FBIX5siI5{yeI5TE5e*!rMp8^*MIy!WDaAhbdAY*TCb94YBVKzBsWH4kjHDxknWi>f6Ic8;HGcz|eV`MfsIW{n5Vu1oV2A={K1UforWppShASM7KVP#@CH#sygF<~|}F=S+7W;Zf1VrFGFWH~fqGiGEsWP<`Z0)qk?1ttJyV>V)BIWu80Fl8||I5RmiGGjJ0IXO8oGh<^gV`hZ{IRl>p7YaH$XJvFKDIjBSZgX@XCIBO0HDWY3H8?Y6G&wV6H#0b7GBRN>W@KezF*IQ_V=y@}hXOeWhXNT3CIDh#WjA9rW??pCHe)ekV>B{3H#Re3Gh#MlHZUf0oF=j9~H8^BAVP!KiHDWf40yzku0v823I&W}ga$$6Dav)=GZgX@Xc42IFWnXl8aAhVYC@CN&CIBO0Wo9{IVmCN5WjA9uVqr8lH8?XkH#9P0H)CdFGch+fjRH9Xp8^*IIy!G~WpZJ3Z*m}ZVQh6}UvznJWhN*oASM7KVPs)uFf?K{F=l09GGb(7Gh|^iIc8#JHZx-~G%#W_Vvhnj0-pjG1v)x!aAk5~bZ>GXc42IFWnXl8aAhVYC@CN&CIBO0WHn?oVKHMkF*sy5FfcS?V>DwlGBPnaWn^YJG-PBskpejbp8^*IIy!G~WpZJ3Z*nRqDIg{QBVjgTH85o}VK!!CF*7qYVmCKAV`gPHHDx$BFflYSIWv<2IRcXc83iT)GdN>7GcaU0HDWO_GC5>oW;i%EW@BVBH#sslGdW~3l>#{fp8^*OIy!G~WpZJ3Z*nRqDIjBSZgX@XCIBO0W@Tk&H9280V`4NpGBYn_mWMw&HH)CcrIWsvhHZhq3ISHQv7XmsuZ*XODVRUbDEj}nI03%^IWjSPKHDY9DV=-bfWnnXBFf%z~H)3HjFgGzWWn?j%0y&!k83-U_Z*FsR0Ape{W;9|lW;QutG+{PjWi&T7HaBB4HZx*4V`VTjIGqAH2J!&_Iy!b?Y;|P-V{Bn_b98TQY+o^7F?L~Wb!9GSbZu;@0wFp&WMyVyb!>EBW^7?+a{wb@FkxXZFfcGSI5{?EF=8?^WjJDDGG${iVKz84GB`9fsRAJ(Iy!W3ZERm=Z*py6baZ8MC}VGKb95kdZ*6QkI&N=dWhN{jW^ZzBVRT<+Y++|}DF7p3I59CWVPRo0Ff})1H#RdfG%`45Ha9snVPi2gIXE+6p#no6sRAJ>Iy!W3ZERm=Z*py6baZ8MC}VGKb95kdZ*6QkI&fifb7fz0Wpj0GbS5kyW^ZzBVRT<+Y++|}DF7p3Ght>hV_`WtF*7-3WMX79FgP?dVKrl9H)JwnFflVXqXI)GsRAJ&Iy!G~WpZJ3Z*n|5D06gVIy!H2baG{3Z6+)rbZ>2JUuJJ|ZDDkDWpXAd03%^DG&W^oVKHPfHZ@^4WH2)^Fg7tWH!);5V>385Fkxn;0z)3D0wEzfI&W}ga$$6Day&dJb97`nI&X7ya%Ev{CM+OyZ*6Q}W^ZzBVRUq5awaAz03%^DWjHc5HfAt1Gi7EuV`ej9V>dHnFf(IiWil{1H)1rW0z)720RTEWbZ>2JUuJJ|ZDDkDWpV&xY+-YAbZ>2JUol@XbZ>2JUteZ#a&2LBbY*fbXmo9CumTD%9WivLc0zd|^0v;neI&W}ga$$6Day&dJb97`nI&X7ya%Ev{CM+OhZ*FsRAaG%Fb7fy;a&m8SCMf_TVKX-{IAS?7HfA(4G&Ev3V_`U9Fl9DjFl1#nFlIJ5H?9IeA@TtLIy!J+a&u*0WpZ+FasXp&VRLhIZ*6Q}F<&uoVRCb2UteW%a&K}jXmo9CDFYS=Iy!T2b#h~6C@COgZ*FsR03%^EVKXpgHZd_}Wn^SyWjQ%zHDfe5W@I=pWj8ruF*7u=0yqXK0~QiGI$?BQaA9<4D06gVIy!T7a%pa7Uv_C_cPRiPVKOmhHZ){5IA%03I50CaWo0%tF)(H`G-NYkW-wx7WU~S|5VHap7$9SBZgX@1Vlg*mFlJ_DVlXvgGG${kG-5b6Vq-HiGdDG3He_REwE{R6DFYT0Iyzx=UvOb`XeeWEZgX@XbZ>2JIy!J+bZ90i03%^GV>V=FIc7L!VPP>iFflo0FfnCeH#az8I509dFfeAf0yq)30vH(}V{dMAbO10pVl*-^HexVkIXEz8WjQu6V>o6xVqr03H83+`I5xQgI2S1c785!;VRT<`VRUFHb97`nI(Kt)a%pa7Uv_C_cPRiPVK6pkI59IcV>U85G&L||Fkv$=I5#;sGB+`0IXGlCG`j*g5xW8y86abCZgX@1Ic8!tW->TqFgIf}G&N>5H8wamWM*SxHaIb2Gc#i}y#hEFDFYS=Iy!G~WpZJ3Z*m}RZ)9a(c4=jIJY#Qeb95kXZ)9aYC@COgZ*FsR03%^zH)J+BH#uWBGBh@1H)dgFWjJGDG&o^lWM*S!Wi~j!0yqXK0~P{0I&W}ga$$6Dav*MRWMyA=X=QgjZf|5|J}4;wBVjN!WH>M|WHx1EIWsgeWHM!CGGQ||G-fb0Gch+cH#5NkI4J`b6FNF?aAk5~bZ>H7T_|I3ZgX@XbZ>2JIy!J+bZ90i03%^$Gi5Y6GGb;kG%z-1VmCQtH83+UIA%3sWjQxAV>4yL0yq)F0vH(}V{dMAbO1CqGGR3}W@9#GG-fwsVKFfH)b%$0yxJ483-U_Z*FsR05CB#WH@4GFfn2{H)S_BHZ(J0Wo9>HWM()qIAJwm$pSbADFYS)IyzxotV=^>1FlJ*gGGQ^x0yxV87ziL^Z*FsR05~#cF<~)eWHn=9W@BYAW;QWpVL3B2IXN<9IW#b2HO&Gz1}Os;0y;Wjb6;X_Z){~@ZYU`LBVlG^GG#P1H#jgdWn*G8VK*{3IW#smFf}t`GGaD4V`I+(IL`tY2q0r`ZgX@1Gi706Fl1ymV>dG}Gd5#nVK`wlGBRQ~I5%N3F)}qc(E>OIDFYS)IyzxN37XJv9IDF7p3GiEk5I5#;kHDot1Hexb3VK-wiW-v85F=8`0Fga#4-vT(_0vHG&V{dMAbO1MHIb~vIV>UB3F=RJkVq`QoVKOl=H)AwoWi?_mFk;~XI0h*L76LjtVRK(|baH8KXDBHEBVjTyIAbwmWiw$lVK-zmGh;AeG-EYlGB`G3H)b$qGh^cdIO75u2q0r`ZgX@1H)J(sH8(ajG%{m3F*GtaF=aSrWHT}}V=^~kGiBuhI0h*L76LjtVRK(}VPb4$C@BCVVK+22VPrQrH8?jkVmLB0Wi)0vGB##oW;8ZAWin=CV&?)l=K>fAAY*TCb94YjD@EAY*TCb94YTGGk<9G%+wWGcjajF=J+CW;tdxGcz?cIb=9wGGsXI0yqXK0~QE6I%#t#DIjBSZgX@1BVjNzWieu6WieqeHZ(9fH8Wy2F)%e|Wi&8jH#0LaF*xr6I0h*L76>{zX>(s;a&lpLC@COgZ*FsR03%^zV`F7EHZ?V3Fk@pgG%z(eF=00~H8e3YW@KeDWn?$;0yqXK0~QE6I%#uXVRCX|d0%g4Uvyz&Y-MvODIjBSZgX@1BVl1MIWjggVK6miW-~T1VPrBhGi5h1Ff%YXW@BYGIWY4AI0h*L76>{zX>(sDaFDIjBSZgX@1BVjo(FlIM3I5{^qGG#C^V>vNqVl`qgH(@ekIAu99Ff#c9I0h*L76>{zX>(s@Y;R$7X>Mm(s_Z*6a9Wo~6}b#o|gZ)9a(ba`-PEFfcVZgX@XZf|5|Dkdo)V{dMAbO0k^I5RY5F)(FgWidHqFf?K`WH&c7WHn|oGBjj0Fk(1n{{lE2DFYS}Iyz}{UubV_Z)at0Wp8zJC~j|LWnXl8aAheVV{dMAbO0k^HDoz4IWc5oH8eG4V`ODyGh$;nW;Zu5He)t3Wn^Jw0RuP>DFYS=Iyz}{UubV_Z)at0Wp8zJC@COgZ*FsR03%^HWHMqmGd3_`GG$>jG%`3cI5{w7F=SN37XJv9IDIjBSZgX@1BVl7TGdVC}V>UEqFflkeG&f~rV>dN8Ffw5^Gc_{zX>(t0b!}p0awsVvV{dMAbO0k^W@BSAHZx*nHZWr|Gh#DlIWjghHexknW??WlGdVM52Lm_;DFYS=Iyz}{UvqSFX>MmIDIjBSZgX@1BVl1VH8D6aG&nagHZo;6G&C_XIWRLZI5aY3IAJ+8I4}tVI0h*L76>{zX>(t6VPb4$C@COgZ*FsR03%^FFkvz^Ffn0fH)S+3VlZZ5VlXx^GB7q|WMwyDIXPtu12_gL0~QE6I%#uXbZKp6C@COgZ*FsR03%^JGB!42Gc+(`V`DiqVly)|IX5sgWjQfoW-&5kG%{oj12_gL0~QE6I%#uXc42IFWhf~iV{dMAbO0k^Wn^S#Ib~&HVq`RBV`VovIb}6AH#KE4WI1FtIb}3q4+A&`DFYS=Iy!WDaAhbdAY*TCb94YBVKFdfGdMXgGc{vnF*9LeVlXgaF)=wYGc`D2W;Qc3G!X+h1}Os;1Ufo$Wo9TTASM7KVKq2rWMwokWo9s9F*h<~Gd5yoGC4D2GBq(`GBq(XFcSkf0uuum1ttJvVKy}}WjAJJH)b<8H)dryH8^52Fg7roHDzWvWier9H#s#hWH~Z5Gc++{V>1~8I0-2O76>{zc42IFWhf~iV{dMAbO0k^GcYn`HDY5jWi&TAHf1?tF=1skFk&z;GC46ZVK6W^8v{57DFYS=Iy!b?Y;|Q{Wq4s@bSNnxV{dMAbO0k^F)?N|VP!ZrIW{*iWH>iAW;ZZ2W;QoAW-w)8WH>Qm9RoN9DFYS@Iy!b?Y;|Q{Z*nM9CMGE$V{dMAbO0k^WHDniGcsXiG%zz}VPs`FFfuVVH!?OcFf}wWIb~*J9|JfEDFYS?Iy!b~b7^!aMs;puCMGE$CIBO0WHdK3IWT53I5RRbHZWvjH)3WmHe+NmI5IUkI5IRaApV>DtpF=J+8VmM?uWo0)wHDfVlVPj@EGd3dwI0-2O77#i*c4>2IbSOr3Zeu1UDIjBSZgX@XCIBO0WHezkGG#R|W;rr5VlZZ9F=b|EW-wtkH!(S6VPZKjB?CAPB?A}{CIDkII5%TrFf=hSF=1q6V=!YfIWc8pWMnpGGC4UmHZ~^%I1lmx06IEuZ)9ZvV{Bn_b98TQY+o^7F>Y^UWiDuRZEQaS7dkq5WnppvBVlAQWMeflGGZ|?HDfk8WMernI5jjdVliVjW@a}zGGadi7dkp^Z*FvG03%^AH8MD3H!?D0Fkv_`H#9L}IW=ZBWiw$hF)=naF*IdA0~b0vWMO##BVjmYV>e+pGBY@0IAvsHGcz_7XmsuWMOn=C@BCVVKrl7VmCQqVl^@~GdN{qH(@t4FfuY@W;AAFW@0fiIV}S@KLZyDIyz)wbY&=6EFeuRAVetuBVjf$GBsj1H#ajlVrDmGWHMx8H!w6~V>mT3IX7iDG-NLWIR`%j7aBS`Z*XODVRUbDAw4K#Z*FsRAY@^5WhN{jV{dMAbRcA5bY&(f03%^HG&x}~GBY$}GC4J4VmD!7HaRq8Fk&<_G&ne8Wn(lk134H!0~Z=PI&W}ga$$6Day%$wZ*FsRAY@^5WhN{jV{dMAbRcA5bY&(f03%^$VPQ38Fk>|_WivG~FflncV=_58G&NylF)(3eHaIvl134H!0~Z`RI&W}ga$$6Day&dJb97`nI&X7ya%Ev{CM+OhZ*FsRAY@^5WhN;ABVlGWHe_KmWHL53V`E}4H8W;pVqrEgIWRS1V_`UAGi5acIT}9$7aBS`Z*XODVRUbDJUu95Z*FsRAY@^5WhN{jV{dMAbRcA5bY&(f03%^FF*amlW@TbzFk)siVP$1EG%zw^Hexk2I5#pfH!(3c134H!0~Z=PI&W}ga$$6Day>mLV{dMAbRcA5bY&(iAY*TCb95kNVRU6CDF7p3Fk@k1FgIajIb~&KHeqEoI5sphHZeA0Wi>HkVm3B2IRiNuKLZyUIy!G~WpZJ3Z*o2;V{dMAbRcA5bY&(iAY*TCb95kNVRU6CDF7p3VKFu~W;HT3G-6~lG-6?7WimNpWH4ejVqs-5IWsk4I|DfwKLZyUIy!G~WpZJ3Z*o38C}VGKb95kNVRU6CEFfcVZgX@XWMOn=CMf_TVKrhiHexq0V=y!~Vlp^lGd46cIW{vjGBhwYWnnR4WIY2p81exCIyz)wbY%c@baHiLbaZcRY+o^7F=SzMWiDuRZEUjx96CC7X=Qh1WM6c7aAg1^VKFr|FlIDmH8(XgGG=5jGh#MlGi5nsI5#*jHDfR{VY34qAv!v5aAk5~bZ>GzJScN?WI8%;b98cLVQnTXAY*TCb95kXZ)9a(c4=jICMf_TVL4(qVq#=9W@0gAF=8||V_`BfI5aRdHezLCHDx$vWkCZzAF~4-2s%1$Z)9aCDIjBSZgX@1BVlDRG%;m2H#KEBH8^E5Gh;V1Fkv=iH#jpnH)LZtGB85}J_fS`90EEzZf|5|Uv_C_cPJ?UBVjOPIAUfsF)?IfF)?B`H!wIcVr5}7HDfY0Wi(@9Ib}ryKC=TH4mvt+Z)9a(c4=jID0XROcV%Q>ba`-PDk%UXVKF&5V_`63FfnB^H(@t4VlrW5He_ODH8nIbF*9ajI7b6M46_3q4mvt+Z)9a(c4=jID0XROcV%Q>ba`-PCMf_TVP-TiV`XGGIWRJ1I5A~2H8f#nG&Er_Gc#r|HDoq8GD!nI46_3q5;{6=Z)9a(c4=jIC}VGKb95kXZ)9a(c4=jICMf_TVK!zmVKiegIXN;jH#0ajVKy;0G%;afGcaK`G-5R{FiQhI5VHdu4LUk*Z)9a(c4=jIC~j|LWnXq_Wp^efDF7p3H#smlF*GwWWj8rvFgIf~Vq!QqFfe8`G+|_BVmM?rO#?m)vjZFmIy!G~WpZJ3Z*m}FZ*OcUDIjBSZgX@1BVl4VWo0mCW@BPGIXN~kF=07kFfueZV=y^6VPQEkH84*DJ_fS`927b_Z*XODVRUbDJt$*uZgX@XZf|5|Uv_C_cP1$yCIBO0G&MM3WHn|rF*i6jI59CXVKHH0Gi5n8G-F~jV`5@3Q3E~_vjZFtIy!G~WpZJ3Z*n~-Zf|5|Uv_C_cP1t&ASM7KVKXshF)%k|VK6W-W;J4CG%zq^WHB{lWn*D6GBPz|F;fFR4YLCrCptQBaAk5~bZ>GYJt$*uZgX@XZf|5|Uv_C_cP1<#V{dMAbRceTWMyA=X=QgjR6Zst03%^DWMeooVmUQ9G&y89Wj11DI5}c9G&weAWjQutWnp1e13o3Q0~{whI&W}ga$$6Day>mLV{dMAbRceTWMyA=X=QgNEFfcVZgX@XZf|5|Uv_C_cRW-+CMf_TVKF%|I5IF~Ff%YPGc{y2HZ*2sFga#5WnwZlF=9C~H&+8bC9?w@AUZm4aAk5~bZ>G!Jt$*uZgX@XZf|5|Uv_C_cP1<#V{dMAbRcwLVr*q5DF7p3H#Ib3WMW}AI5;*rVP<7EVq;@sG-5R|WiVkkH)S+6Spz;EvjZF;Iy!G~WpZJ3Z*o07C}VGKb95kXZ)9a(c4=jICM+OhZ*FsRAYpQHVRmLV{dMAbRceTWMyA=X=QgNEFfcVZgX@XbZ>2JIy!b?Y;|QkR6Zst03%^!Ic8)zHaIdiW@BY#G&5slF=b&fV`FAEWim2jI5{<413o9S0~{PWI&W}ga$$6Day>mLV{dMAbRceTWMyA=X=QgNEFfcVZgX@XR3<3^BVjaTVqr67WH&Q4Ha9RdHa0nBG%+_dW??sDIA%3tGc;cVJ{q$F95XsPZ*XODVRUbDJv}I6Z*FsRAZ~ADWnXq_Wp^elAY*TCb95kcbYwa@X>MtBX<=+>dS!B7Y-w|JJXAg=DF7p3Vr4ioHe)$AW-?+lH8EvnGB`J7V`eiqW;8Z6F*jynVFNxfvjZF{Iy!G~WpZJ3Z*o07C}VGKb95kXZ)9a(c4=jICM+OhZ*FsRAaitNIy!b`V{~tFJXAg=DF7p3WHe$lF*G!0I50CaV>dWuH8e3WW;ZY~Wi?@CH)S(0V*@@XvjZF$Iyzx=UvOb`Xee`ZWI8%?baH8KXJ2+{Wp^ncV{dMAbO0k^H92E7G&3@0VmCKpH85pnGBPkZIAt+6WHe?uH8x~5WdlAIvjZF%Iyzx=UvOb`XeeWEZgX@XbZ>2JIy!J+bZ90iAY*TCb94YBVPY~iHDfkrFf%YTHZ(V4V`MlmH#A{nFgP)0GGb;iH)jJr7qbH#89F*)bYE~`bZ97ZbYwa@cXM=dX>MmNnWi&NmFf(OgWj8oxVQT|E7PA8!89F*|aAk5~bZ>H7T_|I3ZgX@XbZ>2JIy!J+bZ90iAY*TCb94YBVKg*iIW#gkFfcMXG&eUhFg0c{Vm3E2Fl09}VrDruHEjbv7qbH#89F*|aAk5~bZ>H7T_|&OWI8%`b98cPZf9S1X=QgQAY*TCb94YBVKX%_GBIT~H8(XlWMeR5Wi>E0IWaahGcsZ}IbkH7T_|&DdSzd9DIjBSZgX@1BVjdUF*9N?GB#yqV`MWiI59FbF*RjjWHT^jWnwltWMXjxJ`A%190)o(VRI-cAY*TCb94YBVPr63Fl9G5VlZJjIb}66Ff(OlHD)wpWo0sEIX7W8WOD;P2D1Yk2s%1pb6;U{a$$KWDIjBSZgX@1BVjONVL3TwFgP$YWi&J}G-EL~V>x4HW;0}DVPQEnH)3@IJ_fS`90)o(VRK(%Z*Od6VQwfXAY*TCb94YBVKgu@H8nV8Fk&!dGcjZ~H8nUgFf=zfGhr}gIXGoGId=m-2D1Yk2s%1pb6;d(bY&7`IA%6AGI;|&2D1Yk2s%1pb6;d(bY)+3X>DaFDIjBSZgX@1BVjWzWjA3rG&VG4W@b4vHa9phG&VRgWn?xpF=R6}Vq<#)J_fS`90)o(VRK(*Y;R$7X>Mm32kV`gMFF*js5VK^{jI51>3He)$|13m_`0~`oCI$?8Pb98cPZf7VdAY*TCb94YBVP-TqF*Rd3WH4niIX7W9VmUE0V`E`tGhsP0G&E#mHGu;@2D1Yk2s%1pb6<2}Vr*q7DIjBSZgX@1BVl4?GGS(AGBP+fW@9lpV`61vIAk(nWHDr9WiU2nFlK`TJ_fS`90)o(VRK(}X>DaFDIjBSZgX@1BVjl;IA$_3WnnmGGdVM3Fg0Q`GBP$fHDxk5VmM}GW;2BYJ_fS`90)o(X>%wkAY*TCb94YBVKOmfH)Az5VKXyfVKHMkHaKKtWi?}BVPQ9AH8f>oGKT{`2D1Yk2s%1xb6;U{a$$KWDIjBSZgX@1BVjl(s;a&lpLUvFk#bYWs_WpgMgAY*TCb94YBVK!r9G&MP5WivK5IXGowHDNhnV=!beFk&<`I51^lWs3to2D1Yk2s%1xb6;X_Z){~@ZYU`rV{dMAbO0k^VK-%EFk~@iGdVV8F)}zaV>DqgF=Q||VmUN0FgQ6kjRQUgvjZFmIyz}{Uu0o)Whf~iV{dMAbO0k^G-P8pV`eyEH8*5pH#25oH#s?BIWswCH(_IBH8eS7j{`mivjZFmIyz}{Uu0o)WnXk@ZDlAaAY*TCb94YBVKrehI51{6H#1>nGC470IW#h1Ff(N|HDNe7V>vWpFp&d32D1Yk2s%1xb6;j`Z(($4Zf9R`Z)t9HC@COgZ*FsR03%^EGi6~jWo2YHVlZYgGc#skH)J<8GGRG0GBRT~H8^FH13m_`0~{baI%#uXXm4$AXJu|>Z*_AhZf|5|UvznJWh@|eX=Qh1WM6c7aAhhcDIjBSZgX@1BVjUOGC43ZFg7$aGBIW}FfnB~FlAvjI5%TuW;HW5WMP#9J|43J91%J?X>(s_Z*6a9Wo~6}b#o|gZ)9a(ba`-PDIjBSZgX@1BVlG`Fkxb3H8Eu{Wic=~Vlyx{Vr4R6Gi7BtH8wG0V_}yAJ`b}490)o(X>(s_Z*6a9Wo~6}b#o{wAY*TCb94YBVKO;mI5K27Gh#7hHZ*21F*aplG%{v6HD+WpH)S(4HkkuH2D1Yk2s%1xb6;t0bY*8{awsVvV{dMAbO0k^VmV_tGc{ynW-u`~W->J}WH>ZtVKrnmH#0V6I5jdbn*%-uvjZFmIyz}{Uv716Vr6nDDIjBSZgX@1BVjQxH#ajfGdD0}HZn9YGGZ|?Ffm~_IAu38I5K8rIAWaxJ_fS`90)o(X>(t5baH8KXDBHkV{dMAbO0k^H#uT7H!?OjF*P-0IW;w6IAt=dWjQ!Ap94MyvjZFmIyz}{Uvyz&Y-K1ZAY*TCb94YBVK*>hH8wY8VKq21V>CB1W@R}wVK_NrHDWk4GGk?BHlYJP2D1Yk2s%1xb6<36ZDlAaAY*TCb94YBVL3QqHezElGi5VkVKp~1V>35lFg7_cGB#mjW-wwnW1|B;2D1Yk2s%1xb6<90Y;|QQDIjBSZgX@1BVl1RIA%CxWi&TpWi@6sGdD9hVliPbG-NkrIb<+3VP>TRJ_fS`90)o(ba`-PC@COgZ*FsR03%^CG&nP3W-(znGchzaHZeIdIbu05Ha25rHZo&5HZn1%13m_`0~`oCI&x)ZC@COgZ*FsR03%^#V>M$pHZ(FhGhsJnWnwZgFfch`G&nS3Gc;s3V>4l?13m_`0~`oCI(A`fb!8|iAY*TCb94YBVK8MlGd5u|WiVuAVq!BjW;tOpVr67vH!x!|W;SGDWUB){2D1Yk2s%1;VQh6}UuAeVQh6}UvF|KR3;`VAY*TCb94YBVKXr_Wi@0rHa28qWMMNjIWuNvIbmTkV=y=|HfA+5W3K}~39|zn4mvt^X>)0GC`NT|VWo0-uV`4WrWjVbAAt5?Cd0}mAUuJJ|ZDDkDWpXHEZ*FsRAarkSY&tq_Z)9aAEFflYa&2LBUuJA!XLBh4BVjNwI5}fvWHm82WI1LwHZ(D1WHB&fIAmmEHDWPiF)_6RLm#~ZAt^dKd0}mAUuJJ|ZDDkDWpXHEZ*FsRAarkSY&tq{VRCb2Uvg!0b!>DdEFflYa&2LBUuJA!XLBh4BVjUSVl^;hG&wjkW;bPHGB#l}F*jmmW@Tn!V`VZkVrI7kLnplhAs{+BZ*XODVRUbDJUl3KbYwa@Z*z2VWnpb5EFgJdZERm=Z*py6baZ8MCMf_TVKp^kI5RnBIX5|BWMnxuGC4CbWHMu8WHn|qHZo#iWVr)F9=!u0Av!v5aAk5~bZ>GzJScN?WI8%;b98cLVQnTXAbDYJY+q(?a&2LBbY*fTCMf_TVK+4}W-&2hFfleYG&o{7WjJGEH#lQrW;rx8W@0chW4i-GAMybJIy!k_ZERm=Z*py6baZ8M0Ap-nb8~cWZERmLUom-MZERm(W^ZzBVRUq5axQ3eZEVp4A38d1X>N6NWpe-{VKQbkV`MNgH90ddFl93_IAmpJV=!YiWoBe$H90b5WYGg30y;W$X>Da+Z)Rq5WppSh03%^EIbmipV`4EgHfAz0Gc+_aW-&EoF)%nbH8*B8W-w*H13}RP9|k%)bZKp6UvFk+b7gcWNGu>tDF7p3Ib}IEGc-6jW-&H2G&eJ4WjSGHGc{ynW;bLsW;ruu!2>}A(E}eEIy!G~WpZJ3Z*n0$D0FFUWnXV*W^-k9EFg4gZDn6?W@d9`bSVHMVKXx~WH>f4Fl1w6VKp%|IXGitH8f&lVKz83F=H@cIKu-$7|{bC8ag^}aAk5~bZ>GzD0FFUWnXV*W^-k9EFg4gZDn6?W@d9`bSVHMVPrKiI51=}G-5I`IW;yiVPj%BG+|^oWi@6wVKX=~IK=}&7|{bCBRV>7aAk5~bZ>GzJScN?WI8%;b98cLVQnTXAY*TCb95kdX>Da+Z)Rq5WppMf03%^AW;kRrW-(+iWHV%BI5B2nV`4EkVP!QqWMngBW;SHU13@9t10NbXI&W}ga$$6Day&gKbZKp6UvFk+b7gcaAarSMWnXV*W^-k9DF7p3HZx;1F*P%0I5#k6GdDD4HZwLeWHC24WH&WrVmD(r$pb+c(E}eEIy!G~WpZJ3Z*o07D0FFUWnXV*W^-k9EFg4gZDn6?W@d9`bSVHMVK*`~W@BVCI50OfGG%5qW@IuoI5A~3WH~fqWMyMwV#@G#D0FFUWnXV*W^-k9EFg4gZDn6?W@d9`bSVHMVKX!{V>vW4V>4!BG&f~3H#uQ4V`e!yH#lNpV`5`9GtC1*7|{bC8ag^}aAk5~bZ>G#Jt%Z(ZDn6?W@d9`bSxlrX>Da+Z)Rq5WppV3BVl4;G&eM3WHw|rWMpD8WHMr6IA$?4GdMUoVK_82Fl5gIK^ScT5?^m-W^-k90AF8kW@d9`bS`LgZETbT7Y;f)Z*XODVRUbDJt$*uZgX@XbYWs_WhN;ABVlGaV=y!`F*hMtBX<=+>dS!B7Y-w|JJZWukY&tr0VPb4$UukY>bYE~`X>vX(03%^HW@KYEGGj1dVKHK4HaB5qHa9akW-u~2H#j$9V=`vk134^|1Q#7TI&W}ga$$6Day&dJb97`nI&X7ya%Ev{CM+OhZ*FsRAar43Y-J`X03%^IGGaDmV`VjDVlXu@W??pCG&VS5FgRvmH8C_{H)Lbp134R%1Q#4SI&W}ga$$6Dav?n^V{dMAbRcwLVr*q5EFfcVZgX@XbYWs_WhN;ABVl4>WnwjCIb=CzV=^;iFf%b@H#lWAG&Ey2F*!D6VK(3cIU1A%7aTe|Z*XODVRUbDJv}I6Z*FsRAar43Y-J`aAY*TCb95kdVPb4$CMf_TVP-gGVqs-uI599aWi@1FGB7zfIXN;nHZ*23WHmE1Vd4Wh8k7VV0y;WlY-M3`C@BCVVPQ8hFlIP4V>LK9VKHJbFk>?@IWlB1H8nG2Wi(}FX5<4olmr(FIyz-?VRL0DX>?_BVRUbDDF7p3F=06{IXE;pH#TEqWMnWiVPRo8WiVzrI506`I5RnB<^wqhlmr(LIyz-?VRL0DV{dMAbYE$7WpZJ3Z*nOBBVjaTVP;}9VP!EfHe@+6VPs@EH#225W->QsI5;q2Ib`SqIS!Nr7a%%1WpZJ2Whi5BZgX^BX>?_BVRUbDEFfcVZgX^BX>?_BVRUbDDF7p3H92N9WMnyIG%{j0Gh;bpF=b;kGchwXVr6DGWic@`>H|3*lmr(NIyz-?VRL0Db97`nI&*Y#X>MmU20G-PHoW;SLrGh#3@GB`LiGdVC}IXN~nV=-c5>;pLvlmr(OIyz-?VRL0Db97`nI(Kt)a%pa7Uv_C_cPRiPVPs@CGcq_ZH)UltWjJPJWjHZoWnp16Ght(5VPQ98HtqvC5tIZM2s%1&a&>NHC}MAKY$+fn03%^CF=RA2H#TKBHeoqsV`XDDH8nXhWMwjDW->N7V>V>)133op0~rY>05D`ZWnnQiVqs%sIb=9vIW#q7WI17BV_`QmHZx&iIPwEI2b2UC9XdK?ZE$R1V`V5yWqDM2aAhVYEFe~4Y;|Qpa%XcOCMF;*E-onmBVlA?I5lN8VmD@GVPr8lHaIylH!x*2WHB%{WHnY5VPj=qXlZVAC}VGKb97&6bY*g3bZ>GjAWLO=RC#b^CMGN(R$**)WkGUhb08)rATBO0DF7p3Fk~__H#lN7WHB=|GcsakIAt?3HDfb4IAb<7Fflke_5(R9lmr(gIyz}?b7gXLC`)B|RC#b^CMGN(R$**)WmI`^WhN#pAa-GFb!A^>Y++|}DF7p3F*7nXGc__aI5jggH8*8pH#K56WiT@|HZx>1GGR1f_yaj3lmr(UIyz}?b7gXLC`oi>ax5T8bY*fZAa-GFb!A^>Y++|}DF7p3Gcz$|Vm4%DFf?R2HDfboH#TBsHZ)~6W;irtG+|^m`U5!^lmr(gIyz}?b7gXLUvF|>VRLh7XKpAkIW}W8F*r9fGhsAjlmr(7Iyz!yXK8LIDF7p3Gcz=1Ff}kVGB;&nGB9H}H8U_WH8f^4V`MgDWMpPD00cPz1RDq-V{dMAbO1FnW;r=EG-WU|FgQ12HfA+BHeqElGcq_cVq`O80t7h*lmr(DIyz%wWoKz_C@COgZ*FsR03%^BHDNVoIAUZrWHC83W@BPyIWje2GBjm1VmC8lF=k=}1UUwj1Q!T8I%8#SWGE>hV{dMAbO0k^GchqVH8CBBVjoDtnWi~N0F=jI}VlrkkW?^GCV=y%g1UU!{1Q`n^05W7YH8W*mG-hTuIb>uvVKQSfW;QcqF*G-0FflbSGY$kf36umE5IQ<$Z*pH{VPj}0Ms;puCMGE$V{dMAbRZ@GBVjOOIWaM0GC4OeIAk(4Ghs9`Vq;}EIWsgcF*GtaVqp*jISvp684)G`HDWe7F*9T{Gh#I}HDh67FgRj3G-YNoVlZVjIASw25(GI9lmr(DIyz}{UukY^X>MgGDIjBSZgX@1BVjc&Vr4O6IWu8lIWRUbIAvrrH#jpgGh}8sGc{o{W-}B7IR=yj7X~^yX>(s`Zft38Whi2AZ)_<5BVjmYH#s+9HaIh8W-?-7V`MQjWH)6uG&V71V`MTnI4~9jIRumh7ZN%;Z*XODVRUbDTU{t~bYwa@b98cPZf9S1X=QgQ03%^IWi>cAIWjRgFgIf|I51-}WiT@}I5%Q5Gd43bH8Els1UV2G1Q{40V{dMAbO2>HWjHl3Vly~lVPQ35VlgpgG&N;nWie$pWMejBI58RoITn-z7ZW-MmWn(#GG%;mjH85g0FgIg2WHMtoWHK-|Gh${nIAUZT1UVO!1Q!@OI%98cbYW?3b0~9kWI8%?baH8KXJ2+{Wp^ncV{dMAbO0k^VPj@CWoBVEWj8oBH8L?VW;bCmGB`74H#uQAIAvupAOtxUlmr(UIyz%-ZggR3ZgVJebYwa@cXM=dX>MmMm1G&W&1WH~l4H7o=<5G({47$9SBZgX@1Gh#M3IALQpFk~<=H#smfFgRj4HfA+tH8EsiG%`0dE(AFilmr(OIy!7`cV%*4VsCYBWGHiVWI8%`b98cPZf9S1X=QgQ03%^xVPpGh{S4G%zwaWo9*IG&VM7IAk$oGc;y1F*Py-ITw@!7YI5!Wo>YDc_=9$V{dMAbO0k^H8nJ5G&wb9HfAzqVq-ZuGh$^iVq`EgH#sykH!w9ZGz2*Ylmr(DIy!S{dSxgnAY*TCb94YBVPrRBG%+wWI5jk5V>mH4VrDjFH#jk7VK-)CF=94kHZ}w~29yLB0y;Wjb6;U{a$$KWDF7p3W;ir3GBYLN4WMniv1UWne83-U_Z*FsR05>-^I5T87VL4)9H8Ey2WHT}{H8^EAF=JvgG%{g1H9iD629yLB0y;Wjb6;d(bY&DaFDF7p3GiEepH#9h5W@R&GF)}tXGB;y6Fl90~H!?G1H8U|{LMzkHezKrV`4TpIb=ozIR=yj7XmsuVRK(*Y;R$7X>MmjI5#ynG+{^tIYrnVq-KhF*r12Hf3UAN(4Culmr(7IyzxN$>29yLB0y;Wjb6<2}Vr*q7DF7p3V>C2nIbtmfEW-wL+IR=yj7XmsuVRK(}X>DaFDF7p3W@I;IFlA*nWH4biFk@ymGBPzeFfe5@WM(lqWHn_qSOhs(1R4k+V{dMAbO2^$H)Az7GB+|bVKQQ7GB9N~W;bSGGBh(WFl1sjI9dcb29yLB2s%1xb6;U{a$$KWDIjBSZgX@1BVjc*WHC54VKFykIAt<4VrF4EFlJ#kH8(hAH)1n5H!@rVIR=yj7YI5!X>(s;a&lpLUvFk#bYWs_WpgMgAY*TCb94YBVKp*kHe@trHa0h9G&VG0G&x~oG&wRjV>o4GGcjgmV_pO~29yLB2s%1xb6;X_Z){~@ZYU`rV{dMAbO0k^HZWr}F*i45HDoj~F=H}jIAUcpFlI1fIXPlBI59XmU<5e^lmr(DIyz}{Uu0o)Whf~iV{dMAbO0k^GcYwWW;bFoVq;}CVPs@DWo9)nWnnirV>LN5GdN>3Vgxw`lmr(DIyz}{Uu0o)WnXk@ZDlAaAY*TCb94YBVKX>nI5K5sWjSOvW@9)xVl^=|Fl9AiVq|1xIWaOfWMl+629yLB2s%1xb6;j`Z(($4Zf9R`Z)t9HC@COgZ*FsR03%^GWnpGvVPY{jF=9AlWimE1GGaAjFf}zcIW#e5VmCHs1UUwj1Q!uHI%#uXXm4$AXJu|>Z*_AhZf|5|UvznJWho$IZ*FsR03%^yWiex8G%__aGh|~iFgRi|Fg7w|WimE4HZ(UeW?^Ay1UV0s1Q!!JI%#uXXm4$AXJu|>Z*_AhZf|5|UvznJWh@|WZ)9aECMf_TVP-L5GG;V5Wn^MvGht?7IWsmhV>3B2H90jnGcY(bHfjVp5tIZMA38c|b6;q0ZEt5~Ze?$Eb0}_aWMyA;d2nScAY*TCb95kXZ)9aECMh6eZ*FsR03%^IVK8AhWHes1UVg)1Q!T8I%#uXX>N37XJv9IDIjBSZgX@1BVjRNIASn0V>o1GGc+?}W@a)lVl+1~I5}i9FgZ9jGGcB7IR=yj7YI5!X>(t0b!}p0awsVvV{dMAbO0k^I5{&pGB7YOWjHx9I5s#nG%#i`H8C@0G-72mHDX~ha0EF9lmr(DIyz}{UvqSFX>MmIDIjBSZgX@1BVjgTW;JFrHa0dlFgZ9mF=I7jHezLBVK*>1Gc`6aG+}ZCIR=yj7YI5!X>(t6VPb4$C@COgZ*FsR03%^CV`OGwF=k{lWjSOuV>UEnVl`wmFgQ73F=R9|G&E&&1UUwj1Q!T8I%#uXbZKp6C@COgZ*FsR03%^BW@9!qHDozAHDhHmVlX!|G&p53WjSUzFfuu0Fk>-x1UUwj1Q!T8I%#uXc42IFWhf~iV{dMAbO0k^VP!HhGGb;pFgQ6hHZf#mG&waiGchq_F=aF`Gc!0gcmz2Hlmr(DIy!WDaAhbdAY*TCb94YBVK6gfF*PwYFg7(ZF*i11F*h+ZVmB~mVlXo`V`ODwFnRn_nH8EsnGB!74V>V`FFn$C%7L)`R6FNF!bSQIlWI8%`b98cPZf9S1X=QgQ03%^$V`XDxIb~roWjSLxHe)k1WMyVFG&eC}GGsP5Ibt+`1UV6a1Q{71V{dMAbO1OxHa9jgV=*~0HDonqWHVx9WHDqpGBh+cVl!kmH8p|+ITw@!7ZN%;XJvFKb97`nI&*Y#X>MmD$sH90jgG&W;1I5B23Gh>JZIT45i85tmBZ*FsR0AplfG-5J0Fl9M8Fl99`H85i_H)JtkWMeTgFf(IeF^U8^7nB4S5;{6(WprO*b0~9kWI8%?baH8KXJ2+{Wp^n6BVlD?GBP$cH)duwHD)t7Wiv20W-&K7H8^EBGcz+ZW-^QfIS`Bl85kgAZ*FsR05D}RHZU<_IW}cuGchzUH83$aGh{I`GBPqWGcqt@F^&W|7L)`R6FNF)WprO*b0~9kWI8%`b98cPZf9S1X=QgQ03%^$H)A+qFf%q|H8(jnH8N&3F)}eUGB7zbFf%nWV`4Xu1UV6q1Q{71V{dMAbO13qW;ifqVly~5F*agkGGSpkI5IV4Vl*@`GdN;nG-Z+mIT!K)06IE!VPb4$0Ap-nb8~cWZERmLUomuHVr*qDXmo9CLug@cXJu?}X8>?-czIuAXkl(=Wo&O}E@*UZZ1MpBIyz}?b7gXLWpV&>baHiLbaZcRY+o^7F==jdWpZ?7axQ3eZEThHf1$7W-&8nGcjRhGcY+bGG;Y5W;LD!Lm%=106IEqb8l{6W^ZzBVRUq5asXp&VRLhIZ*6Q}F<&uib8l{6UuJJ|ZDDkDWpXZPbZujV`eIy!4*c_?#qWI8%?baH8KXJ2+{Wp^wfb8mHWV`X1*WoKz`ZYCxv03%^FF)=x2F)}h^F*P1WMwj=1UDh;1QjScI%{QlD06gVIy!T7a%pa7Uv_C_cPt=dZ*FsRAaieZa${v*a%E>}Z*C?j03%^AH!(P6Vlp;nG-NqrF<~@gFlJ&oGB{;sVlZSjW;ijW1UDw@1Qj4UI%{QlD06gVIy!T7a%pa7CMGN(b8mHWV`X1*WoKz`ZYCxv03%^HI5=W4Vq#@sW;Qc6WMgAvG+{S5W;io4VrDTiGi5NR1UDY*1QjJZI%{QlD06gVIy!T7a%pa7CMGN(V{dMAbRctYb#h~6UvgzV>ODF7p3VmLNtW;Ho5W->A|WHmQpIA%09GcY+YF)}$gWH@ADsRTD8>jV`ZIy!4*c_?FVZgX@XV`yP=Dl8y#Z*_8GWnXe-XK8P4CMGEWBVjo>F=jPoWin=BWH>T1WHdKqFk&+_H)AzqW;HctF)^zIHyrB(6(c%2Yh`&TV{dMAbRc7BVR9-gAY*TCb95kcZ*_8GWnXe-XK8P4CMf_TVPrLCGB#o}H!(LdWivEkIAb?3WjHiAVPrQsF)=qWFs%ePA?pMcBsw~4WqBxbbYwa@cXM=dX>MmV>OCMf_TVKz5oW@ThIF*jp4G&eUhVPZ38Wj1AFF=974Gd5;nH?IUYBI^VdDLOi9WqBxbbYwa@cXM=dX>MmouV_{`CV`5`AFgQ6mVK8N7H#RXiWHYe@Hz(@^6&pG_Z*XODVRUbDJUl3KbYwa@Z*z2VWnpb5EFfcVZgX@XYh`&RDF7p3H(@tsVPi2dH#j*sVmLKoG&p2AH8?k7Wj8lwHaIymvjjI8>jV`TIy!G~WpZJ3Z*n0$C}VGKb95kUWqBqnAY*TCb95kUWqBqk03%^BGBq`2IW#aZG&o^1HZo#lVKFgfWim7{Vl!qjW@crz1UDAz1Qi}SI&W}ga$$6Dav?n^V{dMAbRcVGc_u6%b97`nI&*Y#X>MmUNAW-?@9Wiw%BV`FAAw*)sF>jV`ZIy!G~WpZJ3Z*n0$D06gVIy!T7a%pa7Uv_C_cPt=dZ*FsRAZulLCMf_TVKFu}Vlpr_H)1d`G&D0cFk&%dGC473W@0coH8wFaGPwjd9P0!X7&GzC}VGKb95kUWqBqnAY*TCb95kUWqBqk03%^HVK!zoIbtzlWM(sEGBY%0H#IppG&nI~G+}0BHDqGD1UDAz1Qi}SI&W}ga$$6Day%$wZ*FsRAZulLCM+OxbYwa@b98cPZf9S1X=QgQ03%^FH8(hBV>C84F)(B{W;SIuI5cKrW@cn&GiEk1VKg+o1UDS(1Qi}SI&W}ga$$6Day%$=bYwa@b98cPZf9S1X=QgTAY*TCb95kUWqBqk03%^BVqs%sH!(6eGBPLN3Ff(E}Gc{&nHZU+`Vq!L9I50S7IAb(sIAJ)$1UDS(1Qi}SI&W}ga$$6Day&gKb97`nI&*Y#X>MmjV`TIy!G~WpZJ3Z*o07C}VGKb95kUWqBqnAY*TCb95kUWqBqk03%^xF=RF~HeqBiHZfsjGGjPpGc#j0GC5^2F*0IeVKrsP1UDAz1Qi}SI&W}ga$$6Day>mLV{dMAbRcVGc_u6%b97`nI&*Y#X>MmjV`ZIy!G~WpZJ3Z*o07D06gVIy!T7a%pa7Uv_C_cPt=dZ*FsRAZulLCMf_TVP#}AVK*^kVK`(kW@chHHDow6H(_EjV=^{5G&o@~W6K0L9P0!X7&G#C}VGKb95kUWqBqnAY*TCb95kUWqBqk03%^#H8EskW-w+rHezLDFlIJpHDhHmG-NX}He)biVPs>?1UDAz1Qi}SI&W}ga$$6Day}?yZ*FsRAZulLCM+OxbYwa@b98cPZf9S1X=QgQ03%^!G&p22WHUBlF)?8|G&3|}V>2^3IXE{sGdN-}IA%7_1UDS(1Qi}SI&W}ga$$6Day}??bYwa@b98cPZf9S1X=QgTAY*TCb95kUWqBqk03%^xI5jslHDhKqF<~-gWj16sF*adgFf(B|WMw#FG-5E(1UDS(1Qi%MI&W}ga$$6Day~sMV{dMAbRcVGc_u6%V{dMAbRcVGc_t|UBVjXRGB7YTGiEkrVP!cmW;rxAH8V9~IW;meHD)z3GGWsMHx}yz6&^Y|Z*XODVRUbDK0PR7Z*FsRAZulLCM+OxbYwa@b98cPZf9S1X=QgQ03%^GF=a71HZwOiH!)#kHDfh6H8y2oW@I%tH8W*7Vm39^1UDS(1Qi}SI&W}ga$$6Day~sMb97`nI&*Y#X>MmjV`#I%98cb97&6bY*g3bZ>G1BVjW*VKXyiH83$SIWsmfIW=KpGB7wZWi&E4F*Y?dF*54}6*@X;bY*g3bZ>G1BVjZ!V>B{iV>2={GdMG3Vl^~5H!@;1H#IV1IbmcpWMu0E6$m;yVr6G(ZYU`rV{dMAbO0k^Vlg&3F*!9hVr4XDW@RyBHZU}0IAu0AVPj-tGBY=2+XOcT>jV`DIyz-;WGE>hV{dMAbO0k^Ibt(6VKFdbG+}0DF=aMoH#smeGcYkXI5}oDH#uWC-2^uV>jV`DIy!T2b#h~6C@COgZ*FsR03%^AG-YNvHeoh7G&V9hFflbSH)dltFfd|dWj1CuGh#H~1UClj1QiH6I%HvVVJImeV{dMAbO0k^G&wk7I51*kF*r6iH)CcwHaB5qV=*!_WMeU9Gd5&3;RH7Z>jV`DIyz--aCCVnDIjBSZgX@1BVjUPVPP~lW->NpVPiC5F)(2`Gcq_gFg9j6GdMOhF*oA`HwNnj6$m;yY-Mg|bZ96kAY*TCb94YBVKruEVKXu^HfCWqHfAwmWidH0F*i6hH!@*3H(@X^Fy#a{2I~YB2s%1%aAk5~bZ>GXb97`nI&*Y#X>Mm|{GhsPqHf1noVL3791UClj1QiH6I&*Y#C@COgZ*FsR03%^AV_`QpIb}F8HZV9bHZnJ6H#j*qH8waiF*q`0G-PAx1UClq0RTEWYh`%=V{Bn_b98TQY+o^7F>7UcE@*UZZ1Myi6*@X^aAk5~bZ>GZB42cGZEPrGZ*FsRAY*7@aw;q!b7^{IUvwz|BVjZ!F*P$VWi>W1V=`o8H8e0cGC5&pFfnB@Fk&)cH#F=7Kojx=9vC`0Z*XODVRUbDA|hXOZ*6QSV{dMAbRc7BVRATMbSf+$b7^{IUvwz|BVl4mQqIW{n4WHn-BVL351HZ*28GdN~8H)J$7@B}~;@&OGxI&5ilWpZI`a{ym4UomWHbY*g3Y;!JXbZu-w1s@PPI&W}ga$$6Day=+;VRCb2Uvg!0b!>DdCMf_TVPP<3F*jo|Vq-KhWiUA~G%`3jWI1FxVPrNlWi(|uGV=sM4nYMU0y;WyVRCb2Uvg!0b!>DfDF7p3G&yEDGBz?eHe_LCH)UisVKy>3IA%3rGd49gH8eP4^#nmd1s@PPI&fifb7fz0Wpj0GbSQ9Pa&u*0a%FRMY;-0jDF7p3Ff}-0H#TN7Ic8!tVL3N3H8?djGdN~4WHc~2IAUQn_XI%>K?NTIIy!!EVRCb2Uvg!0b!>DfDF7p3WI1IrGG;J2I5jk3W;A0nHaIpgWHvEnFk>)gGBsi``2;~h1s^0jI&W}ga$$6Day&dJb97`nI&X7ya%Ev{CM+OhZ*FsRAaG%Fb7fz0Wpj0GbS5bPBVjT$Win(iV`4HeW-&N3H#an6IWc2lG&p5BFf%h@VKw^%K_Wo~9|Sr&WpZ+FawsVvCIBO0HZV9bW@IrlFg7zZVP-cuH#0FfHaImlGiEYmWHvZq{RBY*{RANeCIC4#F*0OiVly}}WHDl8WnnooGG;k9Wj8ltH(_RCIb#0=K?6Yr9|}4;WpZ+FawsVvV{dMAbRZ@GBVjRNW@cqIF*7%0V>UH7GiG5hVPP;dHDfk1F)(H^Vln{*K?p$w9|$@+Z*XODVRUbDAY*TCb95kZVRCb2UuAM~Z*nFmDIjBSZgX@1BVjZ%WM(!rWiT={G&5o{VPa-vIbkGdMIfF=912H#B8tW-~ZrH!(IgHaP_aK|uu{0y;WxaAk5~bZ>GXaA9(DWnX1-a&K}bCMYQYBVjpaH!xvgHa0b6I5c5lW;JFxGd5&oGB;*6V>vZrG+_q?K|uu{Iyz%-ZgX^BX>?_BVRUbD03%^yW;rruW@0orV=-nlWH4qiGC5{6Ff%eYFgRp1VPY^r1s^&(X>?_BVRUbD03%^xWi>D}V=*yhIc7OAHZo*oHDh9BW;JCpV>xCtI5smu1s?)BI$~vKX>KSf03%^DW;Qf2WjQo5W-&D}IAmsKVPrODV`DdDV=*&0IWuGn1wji1AqXI2Z*FsR068%*W-&84Gc#c@H8eM2GC49ZG%z$WI5#*lIX5^lW(@^F20;ZM2s%1rVr6G(ZYU`rV{dMAbO0k^W;Hl6F*0O0VKX*2Wi?|lWHUHrVl`wnI5#jjH#Ib34+TL6K?NTOIyz%zZe%DaAY*TCb94YBVP;`8W;il2VPrNiV`XA6HZw9eV`XDDVl*;hFf}kYF%bnp20;ZM0y;WnZe%Da03%^DGd5&1IXGoAGC5{2I59ajWH&K1W@a!lW@Kh&V_`NE1wj)9AqXI2Z*FsR05LT*WHT~iV_`F8VKp#hV>K`{Ff%tYHa9h4I5lB5H5COx20;ZM5;{6zbYE~`bZ97ZbYwa@b98cPZf9S1X=QgQ03%^#H#THqH)SwmVl`zjV`DToHf3WrWi>Q2Wiw@EVq;+!1wjxO1tJ(AV{dMAbO2>AGh;MiH!@){IAJz9HZx){Gh#F`H#cK7F*0OhW*G%R7C{9c6FNF!bYE~`bZ97JZ*FsRAarkSY&tq{VRUFFDF7p3VK+5oV>mQ9Fk&`jIW}TqWM*P!F=R9`F=940W;J0s8wEiT8wDX5AY*TCb94YOV=^&iVKp`|HaIsqV`Va7VL4_vIWspkHexq7VKZbM1wj`<1s@YSI$?BQaA9<4D06gVIy!fAbaH8KXJ2+{Wp^n6BVjTzW@RyDH8wFhHaRzAIXGisV`XAxVlgl_H(@YlWMdx%K@lGXAsHZJZ*FsR05v!^V>vZ2HDP99GGk^nV>B`~H8)~rWMgGFHe+TqVj%@V7eNId6FNF?aAk5~bZ>H7T_|I3ZgX@XbZ>2JIy!J+bZ90i03%^yWHDklI5=fFWHd1`G+{V3Ff(FiG%++{Ib%35G&E)-1wj!b1tA$AV{dMAbO17CVq-BlW;kRqW;Zr4WoBbIWn?#HGBsgiFf=h{WHluPK^H*<9}+q`Z*XODVRUbDTU{t~bYwa@b98cPZf9S1X=QgQ03%^FIAt(7VKgx}VKz26GBP)0GBq_ZHZWphWi(?mG&VLT1wjxe1tAz9V{dMAbO10nF=l2nWHvEjW@BMtWi~iuV=-bmG&EsiH85g1Wnn1=K^8#;9}_w{Z*XODVRUbDTU{t~bYwa@cXM=dX>MmGXbZ>2JIy!V=Vr*q5CMYQYBVjmXV_`8iFfcecHaRskVly~mIXPi8VKinrV`4WqV>CGhK|uu{1Ufo&VPb4$C@CN&03%^zVl_B4FgGz_H8VA0IW#phF<~`kGB`40VKg#0Ibu0G1wjHk1tA3{05ml=W@IvCWMMWmVqr36H8^HtH#s;sH8VM3WH~WrWjzH!13?8J3OYJ;VPb4$C@COgZ*FsRASM7KVKQVkV`DWpG+|?6GdVReF=R4fIb<Fk)n3H8f>rGCu`D2=V~{Iy!J+a&u*0a%FRMY;*u)Y+-YAbZ>2JUol@XaA9(DWnW)%Wpj0GbS`LgZER=-As0G2Z*XODVRUbDJt$*uZgX@XaA9<4Ut@1=aBps9ZgeIo03%^yG&C_WW@9jBVK_1}H90Y5W;9`BW-wthHDob1H8D6s1w$2R1tAhTI&W}ga$$6Day=+;VRUF;V{dJ6Z*FC7bS5S#03%^FFfd~X?kT}bSVHMVKFy0Vq!34H8MD2G-5U|FflM@FflVXGBhzbGh#6^WJU!;251E#5;{6>aAk5~bZ>G!D06gVIy!T7a%pa7Uv_C_cPRiPVKFpjV`4ZnIW#h4V>2{lGiG8lWH2)|WnwpEV>2~nWJm==5NHJ<6FNF?aAk5~bZ>G!D06gVIy!fAbaH8KXJ2+{Wp^n6BVlGTFf%b@Gc`0YVKO;oGcq_bGc!3gF*0T`F=k^lGGs~xLlI~NAp$x&aA9<4Ut@1=aBps9ZgeOq03%^HF)%VQV_{`sWM*PvIXE_9WMnorH#atBWMwxsVP<1Y1w&{BAqYA;aA9<4Ut@1=aBps9ZgePfX?kT}bSVHMVP!ZqI5;#kG-NnsGB9OjWMpA8V>e?tWMwciFfuVQWKIP`251E#5;{6?VRUF;V{dJ6Z*FC7bSQIlWI8%?baH8KXJ2+{Wp^n6BVjOMG&5ylHa0adF)%hTWH&i5G-Ww5V`VrqIXN;iGciyFLl9^MArm?}aA9<4Ut@1=aBps9ZgePfbYwa@cXM=dX>MmV`GF<~__Gi737W->QoI5IFZQUya1Xayk`Iy!J+bZB2=Z*6dIZe?zCC}VGKb95kZVRUF;V{dJ6Z*FC7bS5bPBVjjUHf3ZoIbkw1H)3XDG&M72HaBHBG-EU{Ffd_cGcr^KLltNRArd+|aA9<4Ut@1=aBps9ZgePcVRUF;V{dJ6Z*FC7bS5S#03%^IH8C(UHZf#jWM*bzIW;(CFl1yiGc;ynG&C||W@a*01w#;M1tADJI&^t(Whf~iV{dMAbO0k^H90snIAk(5F=jJmG-WwuHaBEAGdMFfF*Y+ZF*0N|SOr4{XaykxIy!!EVRUF;V{dJ6Z*FC7bSNnRBVjo(GBaXhGc+_}VrDQfF=k>lG&VLdG&wP3H8N#nGBH{OLudsd2s%1xZe(S6C@COgZ*FsR03%^xGGjF~FfueUVlp!@F)}kVGBGhZHeon7GB!76WHmTk1w#gC1tADJI&W}ga$$6Dav*bQdSzd9C@COgZ*FsR03%^AH#at9IX5;iHZV0XFk@w6VKOv1F=S$6W@ce9G-Wtm1w#gC1tBgvI&W}ga$$6Dav?n^V{dMAbRckHbZB2=Z*6dIZe?zCCM+OhZ*FsRAaG%HXkTM*ZE$aHWo~pPDF7p3Hf3UEH)Jw0F=96|WoBkJFk(41H!x#4WjHrsVPQF8UH3WivEkHaRh4H)S_8H#K24GG;SmWMTzFENBHG2s%1zWqBwmAY*TCb94YBVP$19F*h(UFg9W^G&5o|GBY$ZV>mQ1WH>luIW#pfIb;Px251E#2s%1%aAk5~bZ>GXV{dMAbRctdWI8%?baH8KXC^2qAY*TCb94YBVPQ6AFg0X1IAdioG&nFgGG#b5VPiLDHZ(Y8W-($mVP*wG237$PUt@1=aBps9Zgc=&Ut@1=aBps9ZgehabZu+`AOR!-EdeqCHvv5XLIX(yOa)K{Q~_E5UI1nRX#j9=VP|D-VQpn|aA9L*XL4_KaARy?b8~Zaa&=>Lb#7^IZghEYWn^V$WNC6{X>4U?b#7y1WoBt^Wo2%4ZDnqCZ6J1GY<6LCV{dL_WpH!='); diff --git a/structtoml_1_1date.html b/structtoml_1_1date.html new file mode 100644 index 0000000000..241d081498 --- /dev/null +++ b/structtoml_1_1date.html @@ -0,0 +1,220 @@ + + + + toml::date struct | toml++ TOML for C++ + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ toml::date struct +

+

A local date.

+ +
+

Constructors, destructors, conversion operators

+
+
+ date() defaulted noexcept +
+
Default constructor. Does not initialize the members.
+
+
template <typename Y, typename M, typename D>
+ date(Y y, + M m, + D d) constexpr noexcept +
+
Constructs a date from individual date component values.
+
+
+
+

Public variables

+
+
uint16_t year +
+
The year component.
+
uint8_t month +
+
The month component, from 1 - 12.
+
uint8_t day +
+
The day component, from 1 - 31.
+
+
+
+

Friends

+
+
+ auto operator!=(const date& lhs, + const date& rhs) →  bool constexpr noexcept +
+
Inequality operator.
+
+ auto operator<(const date& lhs, + const date& rhs) →  bool constexpr noexcept +
+
Less-than operator.
+
+ auto operator<<(std::ostream& lhs, + const date& rhs) →  std::ostream& +
+
Prints a date out to a stream as YYYY-MM-DD (per RFC 3339).
+
+ auto operator<=(const date& lhs, + const date& rhs) →  bool constexpr noexcept +
+
Less-than-or-equal-to operator.
+
+ auto operator==(const date& lhs, + const date& rhs) →  bool constexpr noexcept +
+
Equality operator.
+
+ auto operator>(const date& lhs, + const date& rhs) →  bool constexpr noexcept +
+
Greater-than operator.
+
+ auto operator>=(const date& lhs, + const date& rhs) →  bool constexpr noexcept +
+
Greater-than-or-equal-to operator.
+
+
+
+

Function documentation

+
+

+ std::ostream& operator<<(std::ostream& lhs, + const date& rhs) +

+

Prints a date out to a stream as YYYY-MM-DD (per RFC 3339).

+
std::cout << toml::date{ 1987, 3, 16 } << "\n";
1987-03-16
+
+
+
+
+
+
+ + + + + + + \ No newline at end of file diff --git a/structtoml_1_1date__time.html b/structtoml_1_1date__time.html new file mode 100644 index 0000000000..963f0a7ccc --- /dev/null +++ b/structtoml_1_1date__time.html @@ -0,0 +1,342 @@ + + + + toml::date_time struct | toml++ TOML for C++ + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ toml::date_time struct +

+

A date-time.

+ +
+

Constructors, destructors, conversion operators

+
+
+ date_time() defaulted noexcept +
+
Default constructor. Does not initialize the members.
+
+ date_time(const toml::date& d, + const toml::time& t) constexpr noexcept +
+
Constructs a local date-time.
+
+ date_time(const toml::date& d) explicit constexpr noexcept +
+
Constructs a local date-time.
+
+ date_time(const toml::time& t) explicit constexpr noexcept +
+
Constructs a local date-time.
+
+ date_time(const toml::date& d, + const toml::time& t, + const toml::time_offset& off) constexpr noexcept +
+
Constructs an offset date-time.
+
+
+
+

Public functions

+
+
+ auto is_local() const →  bool constexpr noexcept +
+
Returns true if this date_time does not contain timezone offset information.
+
+
+
+

Public variables

+
+
+ toml::date date +
+
The date component.
+
+ toml::time time +
+
The time component.
+
+ optional<toml::time_offset> offset +
+
The timezone offset component.
+
+
+
+

Friends

+
+
+ auto operator!=(const date_time& lhs, + const date_time& rhs) →  bool constexpr noexcept +
+
Inequality operator.
+
+ auto operator<(const date_time& lhs, + const date_time& rhs) →  bool constexpr noexcept +
+
Less-than operator.
+
+ auto operator<<(std::ostream& lhs, + const date_time& rhs) →  std::ostream& +
+
Prints a date_time out to a stream in RFC 3339 format.
+
+ auto operator<=(const date_time& lhs, + const date_time& rhs) →  bool constexpr noexcept +
+
Less-than-or-equal-to operator.
+
+ auto operator==(const date_time& lhs, + const date_time& rhs) →  bool constexpr noexcept +
+
Equality operator.
+
+ auto operator>(const date_time& lhs, + const date_time& rhs) →  bool constexpr noexcept +
+
Greater-than operator.
+
+ auto operator>=(const date_time& lhs, + const date_time& rhs) →  bool constexpr noexcept +
+
Greater-than-or-equal-to operator.
+
+
+
+

Function documentation

+
+

+ toml::date_time::date_time(const toml::date& d, + const toml::time& t) constexpr noexcept +

+

Constructs a local date-time.

+ + + + + + + + + + + + + + +
Parameters
dThe date component.
tThe time component.
+
+
+

+ toml::date_time::date_time(const toml::date& d) explicit constexpr noexcept +

+

Constructs a local date-time.

+ + + + + + + + + + +
Parameters
dThe date component.
+
+
+

+ toml::date_time::date_time(const toml::time& t) explicit constexpr noexcept +

+

Constructs a local date-time.

+ + + + + + + + + + +
Parameters
tThe time component.
+
+
+

+ toml::date_time::date_time(const toml::date& d, + const toml::time& t, + const toml::time_offset& off) constexpr noexcept +

+

Constructs an offset date-time.

+ + + + + + + + + + + + + + + + + + +
Parameters
dThe date component.
tThe time component.
offThe timezone offset.
+
+
+

+ std::ostream& operator<<(std::ostream& lhs, + const date_time& rhs) +

+

Prints a date_time out to a stream in RFC 3339 format.

+
std::cout << toml::date_time{ { 1987, 3, 16 }, { 10, 20, 34 } } << "\n";
+std::cout << toml::date_time{ { 1987, 3, 16 }, { 10, 20, 34 }, { -2, -30 } } << "\n";
+std::cout << toml::date_time{ { 1987, 3, 16 }, { 10, 20, 34 }, {} } << "\n";
1987-03-16T10:20:34
+1987-03-16T10:20:34-02:30
+1987-03-16T10:20:34Z
+
+
+
+

Variable documentation

+
+

+ optional<toml::time_offset> toml::date_time::offset +

+

The timezone offset component.

+ +
+
+
+
+
+
+ + + + + + + \ No newline at end of file diff --git a/structtoml_1_1inserter.html b/structtoml_1_1inserter.html new file mode 100644 index 0000000000..3c6e526146 --- /dev/null +++ b/structtoml_1_1inserter.html @@ -0,0 +1,133 @@ + + + + toml::inserter struct | toml++ TOML for C++ + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+
template <typename T>
+ toml::inserter struct +

+

Helper class for suppressing move-construction in single-argument array constructors.

+
// desired result: [ [ 42 ] ]
+auto bad = toml::array{ toml::array{ 42 } };
+auto good = toml::array{ toml::inserter{ toml::array{ 42 } } };
+std::cout << "bad: " << bad << "\n";
+std::cout << "good:" << good << "\n";
bad:  [ 42 ]
+good: [ [ 42 ] ]
+
+
+
+
+ + + + + + + \ No newline at end of file diff --git a/structtoml_1_1source__position.html b/structtoml_1_1source__position.html new file mode 100644 index 0000000000..969b3f7491 --- /dev/null +++ b/structtoml_1_1source__position.html @@ -0,0 +1,258 @@ + + + + toml::source_position struct | toml++ TOML for C++ + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ toml::source_position struct +

+

A source document line-and-column pair.

+ +
auto table = toml::parse_file("config.toml"sv);
+std::cout << "The node 'description' was defined at "sv
+    << table.get("description")->source().begin()
+    << "\n";
The value 'description' was defined at line 7, column 15
+
+

Constructors, destructors, conversion operators

+
+
+ operator bool() const explicit constexpr noexcept +
+
Returns true if both line and column numbers are non-zero.
+
+
+
+

Public variables

+
+
+ source_index line +
+
The line number.
+
+ source_index column +
+
The column number.
+
+
+
+

Friends

+
+
+ auto operator!=(const source_position& lhs, + const source_position& rhs) →  bool constexpr noexcept +
+
Inequality operator.
+
+ auto operator<(const source_position& lhs, + const source_position& rhs) →  bool constexpr noexcept +
+
Less-than operator.
+
+ auto operator<<(std::ostream& lhs, + const source_position& rhs) →  std::ostream& +
+
Prints a source_position to a stream.
+
+ auto operator<=(const source_position& lhs, + const source_position& rhs) →  bool constexpr noexcept +
+
Less-than-or-equal-to operator.
+
+ auto operator==(const source_position& lhs, + const source_position& rhs) →  bool constexpr noexcept +
+
Equality operator.
+
+ auto operator>(const source_position& lhs, + const source_position& rhs) →  bool constexpr noexcept +
+
Greater-than operator.
+
+ auto operator>=(const source_position& lhs, + const source_position& rhs) →  bool constexpr noexcept +
+
Greater-than-or-equal-to operator.
+
+
+
+

Function documentation

+
+

+ std::ostream& operator<<(std::ostream& lhs, + const source_position& rhs) +

+

Prints a source_position to a stream.

+ + + + + + + + + + + + + + + + + + + + +
Parameters
lhsThe stream.
rhsThe source_position.
ReturnsThe input stream.
+
auto tbl = toml::parse("bar = 42"sv);
+
+std::cout << "The value for 'bar' was found on "sv
+    << tbl.get("bar")->source().begin()
+    << "\n";
The value for 'bar' was found on line 1, column 7
+
+
+
+

Variable documentation

+
+

+ source_index toml::source_position::line +

+

The line number.

+ +
+
+

+ source_index toml::source_position::column +

+

The column number.

+ +
+
+
+
+
+
+ + + + + + + \ No newline at end of file diff --git a/structtoml_1_1source__region.html b/structtoml_1_1source__region.html new file mode 100644 index 0000000000..16d1859b6b --- /dev/null +++ b/structtoml_1_1source__region.html @@ -0,0 +1,237 @@ + + + + toml::source_region struct | toml++ TOML for C++ + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ toml::source_region struct +

+

A source document region.

+ +
auto tbl = toml::parse_file("config.toml"sv);
+if (auto server = tbl.get("server"))
+{
+    std::cout << "begin: "sv << server->source().begin << "\n";
+    std::cout << "end: "sv << server->source().end << "\n";
+    std::cout << "path: "sv << *server->source().path << "\n";
+}
begin: line 3, column 1
+end: line 3, column 22
+path: config.toml
+
+

Public functions

+
+
+ auto wide_path() const →  optional<std::wstring> +
+
The path to the corresponding source document as a wide-string.
+
+
+
+

Public variables

+
+
+ source_position begin +
+
The beginning of the region (inclusive).
+
+ source_position end +
+
The end of the region (exclusive).
+
+ source_path_ptr path +
+
The path to the corresponding source document.
+
+
+
+

Friends

+
+
+ auto operator<<(std::ostream& lhs, + const source_region& rhs) →  std::ostream& +
+
Prints a source_region to a stream.
+
+
+
+

Function documentation

+
+

+ optional<std::wstring> toml::source_region::wide_path() const +

+

The path to the corresponding source document as a wide-string.

+ +
+
+

+ std::ostream& operator<<(std::ostream& lhs, + const source_region& rhs) +

+

Prints a source_region to a stream.

+ + + + + + + + + + + + + + + + + + + + +
Parameters
lhsThe stream.
rhsThe source_position.
ReturnsThe input stream.
+
auto tbl = toml::parse("bar = 42", "config.toml");
+
+std::cout << "The value for 'bar' was found on "sv
+    << tbl.get("bar")->source()
+    << "\n";
The value for 'bar' was found on line 1, column 7 of 'config.toml'
+
+
+
+

Variable documentation

+
+

+ source_path_ptr toml::source_region::path +

+

The path to the corresponding source document.

+ +
+
+
+
+
+
+ + + + + + + \ No newline at end of file diff --git a/structtoml_1_1time.html b/structtoml_1_1time.html new file mode 100644 index 0000000000..16b932bc9b --- /dev/null +++ b/structtoml_1_1time.html @@ -0,0 +1,226 @@ + + + + toml::time struct | toml++ TOML for C++ + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ toml::time struct +

+

A local time-of-day.

+ +
+

Constructors, destructors, conversion operators

+
+
+ time() defaulted noexcept +
+
Default constructor. Does not initialize the members.
+
+
template <typename H, typename M, typename S = uint8_t, typename NS = uint32_t>
+ time(H h, + M m, + S s = S{}, + NS ns = NS{}) constexpr noexcept +
+
Constructs a time from individual time component values.
+
+
+
+

Public variables

+
+
uint8_t hour +
+
The hour component, from 0 - 23.
+
uint8_t minute +
+
The minute component, from 0 - 59.
+
uint8_t second +
+
The second component, from 0 - 59.
+
uint32_t nanosecond +
+
The fractional nanoseconds component, from 0 - 999999999.
+
+
+
+

Friends

+
+
+ auto operator!=(const time& lhs, + const time& rhs) →  bool constexpr noexcept +
+
Inequality operator.
+
+ auto operator<(const time& lhs, + const time& rhs) →  bool constexpr noexcept +
+
Less-than operator.
+
+ auto operator<<(std::ostream& lhs, + const time& rhs) →  std::ostream& +
+
Prints a time out to a stream as HH:MM:SS.FFFFFF (per RFC 3339).
+
+ auto operator<=(const time& lhs, + const time& rhs) →  bool constexpr noexcept +
+
Less-than-or-equal-to operator.
+
+ auto operator==(const time& lhs, + const time& rhs) →  bool constexpr noexcept +
+
Equality operator.
+
+ auto operator>(const time& lhs, + const time& rhs) →  bool constexpr noexcept +
+
Greater-than operator.
+
+ auto operator>=(const time& lhs, + const time& rhs) →  bool constexpr noexcept +
+
Greater-than-or-equal-to operator.
+
+
+
+

Function documentation

+
+

+ std::ostream& operator<<(std::ostream& lhs, + const time& rhs) +

+

Prints a time out to a stream as HH:MM:SS.FFFFFF (per RFC 3339).

+
std::cout << toml::time{ 10, 20, 34 } << "\n";
+std::cout << toml::time{ 10, 20, 34, 500000000 } << "\n";
10:20:34
+10:20:34.5
+
+
+
+
+
+
+ + + + + + + \ No newline at end of file diff --git a/structtoml_1_1time__offset.html b/structtoml_1_1time__offset.html new file mode 100644 index 0000000000..21263a5547 --- /dev/null +++ b/structtoml_1_1time__offset.html @@ -0,0 +1,266 @@ + + + + toml::time_offset struct | toml++ TOML for C++ + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ toml::time_offset struct +

+

A timezone offset.

+ +
+

Constructors, destructors, conversion operators

+
+
+ time_offset() defaulted noexcept +
+
Default constructor. Does not initialize the members.
+
+
template <typename H, typename M>
+ time_offset(H h, + M m) constexpr noexcept +
+
Constructs a timezone offset from individual hour and minute totals.
+
+
+
+

Public variables

+
+
int16_t minutes +
+
Offset from UTC+0, in minutes.
+
+
+
+

Friends

+
+
+ auto operator!=(time_offset lhs, + time_offset rhs) →  bool constexpr noexcept +
+
Inequality operator.
+
+ auto operator<(time_offset lhs, + time_offset rhs) →  bool constexpr noexcept +
+
Less-than operator.
+
+ auto operator<<(std::ostream& lhs, + const time_offset& rhs) →  std::ostream& +
+
Prints a time_offset out to a stream as +-HH:MM or Z (per RFC 3339).
+
+ auto operator<=(time_offset lhs, + time_offset rhs) →  bool constexpr noexcept +
+
Less-than-or-equal-to operator.
+
+ auto operator==(time_offset lhs, + time_offset rhs) →  bool constexpr noexcept +
+
Equality operator.
+
+ auto operator>(time_offset lhs, + time_offset rhs) →  bool constexpr noexcept +
+
Greater-than operator.
+
+ auto operator>=(time_offset lhs, + time_offset rhs) →  bool constexpr noexcept +
+
Greater-than-or-equal-to operator.
+
+
+
+

Function documentation

+
+

+
+ template <typename H, typename M> +
+ toml::time_offset::time_offset(H h, + M m) constexpr noexcept +

+

Constructs a timezone offset from individual hour and minute totals.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Template parameters
HAn integral type.
MAn integral type.
Parameters
hThe total hours.
mThe total minutes.
+
std::cout << toml::time_offset{ 2, 30 } << "\n";
+std::cout << toml::time_offset{ -2, 30 } << "\n";
+std::cout << toml::time_offset{ -2, -30 } << "\n";
+std::cout << toml::time_offset{ 0, 0 } << "\n";
+02:30
+-01:30
+-02:30
+Z
+
+
+

+ std::ostream& operator<<(std::ostream& lhs, + const time_offset& rhs) +

+

Prints a time_offset out to a stream as +-HH:MM or Z (per RFC 3339).

+
std::cout << toml::time_offset{ 2, 30 } << "\n";
+std::cout << toml::time_offset{ 2, -30 } << "\n";
+std::cout << toml::time_offset{} << "\n";
+std::cout << toml::time_offset{ -2, 30 } << "\n";
+std::cout << toml::time_offset{ -2, -30 } << "\n";
+02:30
++01:30
+Z
+-01:30
+-02:30
+
+
+
+
+
+
+ + + + + + + \ No newline at end of file diff --git a/toml++.tagfile.xml b/toml++.tagfile.xml new file mode 100644 index 0000000000..b501abd5f7 --- /dev/null +++ b/toml++.tagfile.xml @@ -0,0 +1,9199 @@ + + + + toml::array + classtoml_1_1array.html + toml::node + + + array + classtoml_1_1array.html + a29fc707cf66a79f3c3d93dadbe3b2719 + () noexcept + + + + array + classtoml_1_1array.html + a3bd4611c96ce97d7e6991b7a4312370d + (const array &) + + + + array + classtoml_1_1array.html + ac552a63c329598d671e6531b0cef957b + (array &&other) noexcept + + + + array + classtoml_1_1array.html + acb17a58f1fbdb12aeaf8f7d1e8093e5c + (ElemType &&val, ElemTypes &&... vals) + + + array & + operator= + classtoml_1_1array.html + a23b531c4c723f5b110fec0502349e49c + (const array &) + + + array & + operator= + classtoml_1_1array.html + a94ca021b96ffca7cc01ebd2b37ce23aa + (array &&rhs) noexcept + + + node_type + type + classtoml_1_1array.html + a352b6a99235216f070b5e97976663571 + () const noexcept final + + + bool + is_homogeneous + classtoml_1_1array.html + a79a1fe77c03b33ea2b9d8d0a859c93e6 + (node_type ntype) const noexcept final + + + bool + is_homogeneous + classtoml_1_1array.html + ae4e986f9fdb23090f9a0b3716a63e8bb + (node_type ntype, node *&first_nonmatch) noexcept final + + + bool + is_homogeneous + classtoml_1_1array.html + ad00610c0e18f02516de92b623dc4d0f5 + (node_type ntype, const node *&first_nonmatch) const noexcept final + + + bool + is_table + classtoml_1_1array.html + ad7ed894e54ad3aaef6d7693c26b887d9 + () const noexcept final + + + bool + is_array + classtoml_1_1array.html + a1f1e4d93f52778613d0a7bcf74a23427 + () const noexcept final + + + bool + is_array_of_tables + classtoml_1_1array.html + a87cd0dcbebcfd661a0ae387255c0605e + () const noexcept final + + + bool + is_value + classtoml_1_1array.html + acc533a7fa1ea5c68fce6f4fea5bc419c + () const noexcept final + + + bool + is_string + classtoml_1_1array.html + aeefdd01a2ce3f6bcd7aecfabd363d06b + () const noexcept final + + + bool + is_integer + classtoml_1_1array.html + a78db4190977034c4364674a2958855d4 + () const noexcept final + + + bool + is_floating_point + classtoml_1_1array.html + ab758b93eedbdc27112681f26440bee03 + () const noexcept final + + + bool + is_number + classtoml_1_1array.html + aa034144c580b3d8a4727c0cfbfebc214 + () const noexcept final + + + bool + is_boolean + classtoml_1_1array.html + abbecf0a51aa3e175bc5748ccf71063d8 + () const noexcept final + + + bool + is_date + classtoml_1_1array.html + a792dc3fd7105185415925d4f9ab3ca1d + () const noexcept final + + + bool + is_time + classtoml_1_1array.html + a2d2fc80512d08af7a934a6d02c7bf506 + () const noexcept final + + + bool + is_date_time + classtoml_1_1array.html + ae844f53a9604fb42f185a91616a72cbd + () const noexcept final + + + table * + as_table + classtoml_1_1array.html + a68c92ea559bf24df6fca6ae0d9f8681f + () noexcept final + + + array * + as_array + classtoml_1_1array.html + af3ff6ca450d315c0d62c07631a541d30 + () noexcept final + + + toml::value< std::string > * + as_string + classtoml_1_1array.html + a4f252724bcd6222c70cc46743aba7b64 + () noexcept final + + + toml::value< int64_t > * + as_integer + classtoml_1_1array.html + adb6b797e3fc5d8239113179a6ab20be9 + () noexcept final + + + toml::value< double > * + as_floating_point + classtoml_1_1array.html + aaa3653336c15be6941d98f712cc20fa7 + () noexcept final + + + toml::value< bool > * + as_boolean + classtoml_1_1array.html + a0eb11678929524ce93434a010a73d0bb + () noexcept final + + + toml::value< date > * + as_date + classtoml_1_1array.html + a8615093717a80f59c6c610c4476ef9d2 + () noexcept final + + + toml::value< time > * + as_time + classtoml_1_1array.html + a6ff1fb68284ba1fa04aeeb0b3b8eef57 + () noexcept final + + + toml::value< date_time > * + as_date_time + classtoml_1_1array.html + a6ed67d755b8103d7bb17c424c9963f8c + () noexcept final + + + const table * + as_table + classtoml_1_1array.html + ac9476cb79faad5fcc1b9cc2f86c3b596 + () const noexcept final + + + const array * + as_array + classtoml_1_1array.html + a6a5d140318f2225d3eece4e0d22287f9 + () const noexcept final + + + const toml::value< std::string > * + as_string + classtoml_1_1array.html + ab0cbeaf2ee40151f25690eca80b903ee + () const noexcept final + + + const toml::value< int64_t > * + as_integer + classtoml_1_1array.html + af8f5b7166a47d4e2995143bba43614a1 + () const noexcept final + + + const toml::value< double > * + as_floating_point + classtoml_1_1array.html + a9af651323f3d24317aa9899025161e7d + () const noexcept final + + + const toml::value< bool > * + as_boolean + classtoml_1_1array.html + ab65564b9755a57dd901c40f0c95bb3c3 + () const noexcept final + + + const toml::value< date > * + as_date + classtoml_1_1array.html + ac5823083dcd49f05011c1277cfc40d56 + () const noexcept final + + + const toml::value< time > * + as_time + classtoml_1_1array.html + a14925a9548b4ce1df32c86bd2e67ca6f + () const noexcept final + + + const toml::value< date_time > * + as_date_time + classtoml_1_1array.html + a346db332b3ab5e86b7c7fa392998cdbc + () const noexcept final + + + node * + get + classtoml_1_1array.html + a442d80f39922d05c46b4a7d9a5455585 + (size_t index) noexcept + + + const node * + get + classtoml_1_1array.html + a0fb727f90506419f2e950b5d0e5160a9 + (size_t index) const noexcept + + + impl::wrap_node< ElemType > * + get_as + classtoml_1_1array.html + a7ab30b16bb727e0595d0bd4adfcd9455 + (size_t index) noexcept + + + const impl::wrap_node< ElemType > * + get_as + classtoml_1_1array.html + a17dc014c1c5e64dd9d4f118ddc066ed8 + (size_t index) const noexcept + + + node & + operator[] + classtoml_1_1array.html + a1e471e2bed5daf80b6695c009052bb4e + (size_t index) noexcept + + + const node & + operator[] + classtoml_1_1array.html + a908e56552c2cfaabc9b73d220792e214 + (size_t index) const noexcept + + + node & + at + classtoml_1_1array.html + a3ab7998d733b37f51c687f7d892c205f + (size_t index) + + + const node & + at + classtoml_1_1array.html + a57ab2e03da0d45e4298c74b0071b78b5 + (size_t index) const + + + node & + front + classtoml_1_1array.html + a1af85a8c7a82f1c0b48148b7fac8e536 + () noexcept + + + const node & + front + classtoml_1_1array.html + a8984273ac50a8dba20529ec0cb74a072 + () const noexcept + + + node & + back + classtoml_1_1array.html + a8a7f389cd399544b6b80277afd50d5d6 + () noexcept + + + const node & + back + classtoml_1_1array.html + a0afe372457485cdc90ecee8fc11c2ca6 + () const noexcept + + + bool + empty + classtoml_1_1array.html + a5d527ea6bfddad1025e90e4363c822cc + () const noexcept + + + size_t + size + classtoml_1_1array.html + af81d7b6a1257ad766a47d9276855a7c9 + () const noexcept + + + size_t + max_size + classtoml_1_1array.html + ae65a76add6d756fc7ba8f12a5aad983c + () const noexcept + + + size_t + capacity + classtoml_1_1array.html + a02b773a1ff337692e78da429030c1610 + () const noexcept + + + void + reserve + classtoml_1_1array.html + a1ba073adc52c3df5ad29cfd7e5daa1d5 + (size_t new_capacity) + + + void + shrink_to_fit + classtoml_1_1array.html + a718c2031ead428aa52912741f6d094aa + () + + + void + truncate + classtoml_1_1array.html + a6e3ac9962c706a88c1001ff83a4084f3 + (size_t new_size) + + + void + resize + classtoml_1_1array.html + ab1aca2337ffce7e583a2cf303f16259f + (size_t new_size, ElemType &&default_init_val, value_flags default_init_flags=preserve_source_value_flags) + + + iterator + erase + classtoml_1_1array.html + a22389a9ed9444fe52be10c4acbdec908 + (const_iterator pos) noexcept + + + iterator + erase + classtoml_1_1array.html + a723388860d72c9a162137d0293366fb2 + (const_iterator first, const_iterator last) noexcept + + + array & + flatten + classtoml_1_1array.html + a3a550518aab77d3d49a0f238a4154e80 + () & + + + array && + flatten + classtoml_1_1array.html + a5ea2067eb6014aac937cad430810020b + () && + + + array & + prune + classtoml_1_1array.html + a5590a52dba222033290c8b5c995466c8 + (bool recursive=true) &noexcept + + + array && + prune + classtoml_1_1array.html + abaebb654e760589f43d16ccb3971cae8 + (bool recursive=true) &&noexcept + + + void + pop_back + classtoml_1_1array.html + af99d72e29cef84f736d91d627b47a1dc + () noexcept + + + void + clear + classtoml_1_1array.html + adaa65bf63f29f898c27423306c165d68 + () noexcept + + + iterator + insert + classtoml_1_1array.html + a17c7e34b433ea8907186dbb1788c9d37 + (const_iterator pos, ElemType &&val, value_flags flags=preserve_source_value_flags) + + + iterator + insert + classtoml_1_1array.html + a55a9e6e742e556ea07573d29c23ce7df + (const_iterator pos, size_t count, ElemType &&val, value_flags flags=preserve_source_value_flags) + + + iterator + insert + classtoml_1_1array.html + a60a0d39bfd8721cef23e155f5504d54d + (const_iterator pos, Iter first, Iter last, value_flags flags=preserve_source_value_flags) + + + iterator + insert + classtoml_1_1array.html + a1baecd5d579afb508886572674b89781 + (const_iterator pos, std::initializer_list< ElemType > ilist, value_flags flags=preserve_source_value_flags) + + + iterator + emplace + classtoml_1_1array.html + a4110b96386b33097a255f3694ac01d4a + (const_iterator pos, Args &&... args) + + + iterator + replace + classtoml_1_1array.html + a37a8a283e6c1cbeef757b2e59489ee6c + (const_iterator pos, ElemType &&val, value_flags flags=preserve_source_value_flags) + + + void + push_back + classtoml_1_1array.html + ab7188537b351ef3a756b54b83e4b05b3 + (ElemType &&val, value_flags flags=preserve_source_value_flags) + + + decltype(auto) + emplace_back + classtoml_1_1array.html + ad1383e120e7f8d8fe54e07dab164bd6d + (Args &&... args) + + + bool + is_homogeneous + classtoml_1_1node.html + a7d2b7360a2ea44282890e1ded3d3946a + () const noexcept + + + bool + is + classtoml_1_1node.html + a03e1bbe1a0640953b7105fe40c733118 + () const noexcept + + + impl::wrap_node< T > * + as + classtoml_1_1node.html + a42b952e50ab41b39c1c5340c010d07f0 + () noexcept + + + const impl::wrap_node< T > * + as + classtoml_1_1node.html + a4013d8bf01b87e77643bef7cdf818a5a + () const noexcept + + + optional< T > + value_exact + classtoml_1_1node.html + a11f4ae869670d876f704f676f0ead81b + () const noexcept(impl::value_retrieval_is_nothrow< T >) + + + optional< T > + value + classtoml_1_1node.html + a302e5bc2e4796e9b1ae60b002911a007 + () const noexcept(impl::value_retrieval_is_nothrow< T >) + + + auto + value_or + classtoml_1_1node.html + ad1c332ae403fade90216726105419efc + (T &&default_value) const noexcept(impl::value_retrieval_is_nothrow< T >) + + + decltype(auto) + ref + classtoml_1_1node.html + a58fde40ef0b172d36bf293c251b25130 + () &noexcept + + + decltype(auto) + ref + classtoml_1_1node.html + aca651e7fe7f377fe958b20678d08ef14 + () &&noexcept + + + decltype(auto) + ref + classtoml_1_1node.html + a9794ed57d952d8293ed3278a11e54ca2 + () const &noexcept + + + decltype(auto) + ref + classtoml_1_1node.html + a937af29dc15ef8e1af7950d925341cc3 + () const &&noexcept + + + const source_region & + source + classtoml_1_1node.html + a4a30e611eeddce99e5c48fd80e79b134 + () const noexcept + + + decltype(auto) + visit + classtoml_1_1node.html + ad47390f3832260db7bf06cd282598240 + (Func &&visitor) &noexcept(visit_is_nothrow< Func &&, node & >) + + + decltype(auto) + visit + classtoml_1_1node.html + a371a03c4b91cfbb8d9ee785c1eacf836 + (Func &&visitor) &&noexcept(visit_is_nothrow< Func &&, node && >) + + + decltype(auto) + visit + classtoml_1_1node.html + ad4a42e50f923b0fe1efff0a6719dab90 + (Func &&visitor) const &noexcept(visit_is_nothrow< Func &&, const node & >) + + + decltype(auto) + visit + classtoml_1_1node.html + ac387cb04111addc0c291ecdd6f299666 + (Func &&visitor) const &&noexcept(visit_is_nothrow< Func &&, const node && >) + + + + operator node_view< node > + classtoml_1_1node.html + a04d800d6ec9342d2ee2a364f05317573 + () noexcept + + + + operator node_view< const node > + classtoml_1_1node.html + ac7d6979c7246d7faee8ca48aadfcee68 + () const noexcept + + + node_view< node > + at_path + classtoml_1_1node.html + a21f64d68f408033ee6610f34d3bf0bcd + (std::string_view path) noexcept + + + node_view< const node > + at_path + classtoml_1_1node.html + ab17e0ffeb05b2ec34b87bc33375c6dce + (std::string_view path) const noexcept + + + node_view< node > + at_path + classtoml_1_1node.html + a6c6df9f8faa18019e01ea778a802700f + (const toml::path &path) noexcept + + + node_view< const node > + at_path + classtoml_1_1node.html + a09b4206b0e980fe961c8f9ba1c503b86 + (const toml::path &path) const noexcept + + + node_view< node > + at_path + classtoml_1_1node.html + a06f8134c629450c0a308798271e98d64 + (std::wstring_view path) + + + node_view< const node > + at_path + classtoml_1_1node.html + a9fb5f28c07c345f55687dfcb681b33c4 + (std::wstring_view path) const + + + node_view< node > + operator[] + classtoml_1_1node.html + af3e492bf3406fb79d50308f5be974c3e + (const toml::path &path) noexcept + + + node_view< const node > + operator[] + classtoml_1_1node.html + a462a55fc6e4f7da1108b747165fe17db + (const toml::path &path) const noexcept + + + friend std::ostream & + operator<< + classtoml_1_1array.html + ada82b30641e7546cfe89ece1db7436cc + (std::ostream &lhs, const array &rhs) + + + friend bool + operator== + classtoml_1_1array.html + a06cf25e3f80c98d88e041ef9823976c0 + (const array &lhs, const array &rhs) noexcept + + + friend bool + operator!= + classtoml_1_1array.html + af06c7437a0946a9d5e093d903b59f6a4 + (const array &lhs, const array &rhs) noexcept + + + friend bool + operator== + classtoml_1_1array.html + ab87e435c5a41140e60cd2e703df96fbd + (const array &lhs, const std::initializer_list< T > &rhs) noexcept + + + friend bool + operator== + classtoml_1_1array.html + a5b3c615e4ba8fd780b966f175070b554 + (const array &lhs, const std::vector< T > &rhs) noexcept + + + array_iterator + iterator + classtoml_1_1array.html + a62a18471ca7c5b06204d2e26c963f833 + + + + const_array_iterator + const_iterator + classtoml_1_1array.html + adfd38318d3390a76f073a83fd2f2aa21 + + + + iterator + begin + classtoml_1_1array.html + a8ee8179ddf1cb44fdf0b8d0700f55c2f + () noexcept + + + const_iterator + begin + classtoml_1_1array.html + a7cff1526a6d1f6157e0eab231b4757aa + () const noexcept + + + const_iterator + cbegin + classtoml_1_1array.html + a56d1cba006dccc5ad9982b58a8b2ddc1 + () const noexcept + + + iterator + end + classtoml_1_1array.html + adaf908b0cc3e8bcb1ee9ec9ec706d223 + () noexcept + + + const_iterator + end + classtoml_1_1array.html + a778b5b807ff7329f7de10237d73f29c2 + () const noexcept + + + const_iterator + cend + classtoml_1_1array.html + a50e6b032805760f3930e02923d9a84b0 + () const noexcept + + + array & + for_each + classtoml_1_1array.html + aec78fef35741a66cd32ddb6bd07c3d4a + (Func &&visitor) &noexcept(for_each_is_nothrow< Func &&, array & >::value) + + + array && + for_each + classtoml_1_1array.html + aca8cfc421f5ac55f3440ede0ff636654 + (Func &&visitor) &&noexcept(for_each_is_nothrow< Func &&, array && >::value) + + + const array & + for_each + classtoml_1_1array.html + a3fda9f0f4273a91434a23dbca7c3a3f4 + (Func &&visitor) const &noexcept(for_each_is_nothrow< Func &&, const array & >::value) + + + const array && + for_each + classtoml_1_1array.html + afe28d2aaa7569a9974fcc2642c7a831c + (Func &&visitor) const &&noexcept(for_each_is_nothrow< Func &&, const array && >::value) + + + node_type + type + classtoml_1_1array.html + a352b6a99235216f070b5e97976663571 + () const noexcept final + + + bool + is_homogeneous + classtoml_1_1array.html + a79a1fe77c03b33ea2b9d8d0a859c93e6 + (node_type ntype) const noexcept final + + + bool + is_homogeneous + classtoml_1_1array.html + ae4e986f9fdb23090f9a0b3716a63e8bb + (node_type ntype, node *&first_nonmatch) noexcept final + + + bool + is_homogeneous + classtoml_1_1array.html + ad00610c0e18f02516de92b623dc4d0f5 + (node_type ntype, const node *&first_nonmatch) const noexcept final + + + bool + is_table + classtoml_1_1array.html + ad7ed894e54ad3aaef6d7693c26b887d9 + () const noexcept final + + + bool + is_array + classtoml_1_1array.html + a1f1e4d93f52778613d0a7bcf74a23427 + () const noexcept final + + + bool + is_array_of_tables + classtoml_1_1array.html + a87cd0dcbebcfd661a0ae387255c0605e + () const noexcept final + + + bool + is_value + classtoml_1_1array.html + acc533a7fa1ea5c68fce6f4fea5bc419c + () const noexcept final + + + bool + is_string + classtoml_1_1array.html + aeefdd01a2ce3f6bcd7aecfabd363d06b + () const noexcept final + + + bool + is_integer + classtoml_1_1array.html + a78db4190977034c4364674a2958855d4 + () const noexcept final + + + bool + is_floating_point + classtoml_1_1array.html + ab758b93eedbdc27112681f26440bee03 + () const noexcept final + + + bool + is_number + classtoml_1_1array.html + aa034144c580b3d8a4727c0cfbfebc214 + () const noexcept final + + + bool + is_boolean + classtoml_1_1array.html + abbecf0a51aa3e175bc5748ccf71063d8 + () const noexcept final + + + bool + is_date + classtoml_1_1array.html + a792dc3fd7105185415925d4f9ab3ca1d + () const noexcept final + + + bool + is_time + classtoml_1_1array.html + a2d2fc80512d08af7a934a6d02c7bf506 + () const noexcept final + + + bool + is_date_time + classtoml_1_1array.html + ae844f53a9604fb42f185a91616a72cbd + () const noexcept final + + + table * + as_table + classtoml_1_1array.html + a68c92ea559bf24df6fca6ae0d9f8681f + () noexcept final + + + array * + as_array + classtoml_1_1array.html + af3ff6ca450d315c0d62c07631a541d30 + () noexcept final + + + toml::value< std::string > * + as_string + classtoml_1_1array.html + a4f252724bcd6222c70cc46743aba7b64 + () noexcept final + + + toml::value< int64_t > * + as_integer + classtoml_1_1array.html + adb6b797e3fc5d8239113179a6ab20be9 + () noexcept final + + + toml::value< double > * + as_floating_point + classtoml_1_1array.html + aaa3653336c15be6941d98f712cc20fa7 + () noexcept final + + + toml::value< bool > * + as_boolean + classtoml_1_1array.html + a0eb11678929524ce93434a010a73d0bb + () noexcept final + + + toml::value< date > * + as_date + classtoml_1_1array.html + a8615093717a80f59c6c610c4476ef9d2 + () noexcept final + + + toml::value< time > * + as_time + classtoml_1_1array.html + a6ff1fb68284ba1fa04aeeb0b3b8eef57 + () noexcept final + + + toml::value< date_time > * + as_date_time + classtoml_1_1array.html + a6ed67d755b8103d7bb17c424c9963f8c + () noexcept final + + + const table * + as_table + classtoml_1_1array.html + ac9476cb79faad5fcc1b9cc2f86c3b596 + () const noexcept final + + + const array * + as_array + classtoml_1_1array.html + a6a5d140318f2225d3eece4e0d22287f9 + () const noexcept final + + + const toml::value< std::string > * + as_string + classtoml_1_1array.html + ab0cbeaf2ee40151f25690eca80b903ee + () const noexcept final + + + const toml::value< int64_t > * + as_integer + classtoml_1_1array.html + af8f5b7166a47d4e2995143bba43614a1 + () const noexcept final + + + const toml::value< double > * + as_floating_point + classtoml_1_1array.html + a9af651323f3d24317aa9899025161e7d + () const noexcept final + + + const toml::value< bool > * + as_boolean + classtoml_1_1array.html + ab65564b9755a57dd901c40f0c95bb3c3 + () const noexcept final + + + const toml::value< date > * + as_date + classtoml_1_1array.html + ac5823083dcd49f05011c1277cfc40d56 + () const noexcept final + + + const toml::value< time > * + as_time + classtoml_1_1array.html + a14925a9548b4ce1df32c86bd2e67ca6f + () const noexcept final + + + const toml::value< date_time > * + as_date_time + classtoml_1_1array.html + a346db332b3ab5e86b7c7fa392998cdbc + () const noexcept final + + + node * + get + classtoml_1_1array.html + a442d80f39922d05c46b4a7d9a5455585 + (size_t index) noexcept + + + const node * + get + classtoml_1_1array.html + a0fb727f90506419f2e950b5d0e5160a9 + (size_t index) const noexcept + + + impl::wrap_node< ElemType > * + get_as + classtoml_1_1array.html + a7ab30b16bb727e0595d0bd4adfcd9455 + (size_t index) noexcept + + + const impl::wrap_node< ElemType > * + get_as + classtoml_1_1array.html + a17dc014c1c5e64dd9d4f118ddc066ed8 + (size_t index) const noexcept + + + node & + operator[] + classtoml_1_1array.html + a1e471e2bed5daf80b6695c009052bb4e + (size_t index) noexcept + + + const node & + operator[] + classtoml_1_1array.html + a908e56552c2cfaabc9b73d220792e214 + (size_t index) const noexcept + + + node & + at + classtoml_1_1array.html + a3ab7998d733b37f51c687f7d892c205f + (size_t index) + + + const node & + at + classtoml_1_1array.html + a57ab2e03da0d45e4298c74b0071b78b5 + (size_t index) const + + + node & + front + classtoml_1_1array.html + a1af85a8c7a82f1c0b48148b7fac8e536 + () noexcept + + + const node & + front + classtoml_1_1array.html + a8984273ac50a8dba20529ec0cb74a072 + () const noexcept + + + node & + back + classtoml_1_1array.html + a8a7f389cd399544b6b80277afd50d5d6 + () noexcept + + + const node & + back + classtoml_1_1array.html + a0afe372457485cdc90ecee8fc11c2ca6 + () const noexcept + + + bool + empty + classtoml_1_1array.html + a5d527ea6bfddad1025e90e4363c822cc + () const noexcept + + + size_t + size + classtoml_1_1array.html + af81d7b6a1257ad766a47d9276855a7c9 + () const noexcept + + + size_t + max_size + classtoml_1_1array.html + ae65a76add6d756fc7ba8f12a5aad983c + () const noexcept + + + size_t + capacity + classtoml_1_1array.html + a02b773a1ff337692e78da429030c1610 + () const noexcept + + + void + reserve + classtoml_1_1array.html + a1ba073adc52c3df5ad29cfd7e5daa1d5 + (size_t new_capacity) + + + void + shrink_to_fit + classtoml_1_1array.html + a718c2031ead428aa52912741f6d094aa + () + + + void + truncate + classtoml_1_1array.html + a6e3ac9962c706a88c1001ff83a4084f3 + (size_t new_size) + + + void + resize + classtoml_1_1array.html + ab1aca2337ffce7e583a2cf303f16259f + (size_t new_size, ElemType &&default_init_val, value_flags default_init_flags=preserve_source_value_flags) + + + iterator + erase + classtoml_1_1array.html + a22389a9ed9444fe52be10c4acbdec908 + (const_iterator pos) noexcept + + + iterator + erase + classtoml_1_1array.html + a723388860d72c9a162137d0293366fb2 + (const_iterator first, const_iterator last) noexcept + + + array & + flatten + classtoml_1_1array.html + a3a550518aab77d3d49a0f238a4154e80 + () & + + + array && + flatten + classtoml_1_1array.html + a5ea2067eb6014aac937cad430810020b + () && + + + array & + prune + classtoml_1_1array.html + a5590a52dba222033290c8b5c995466c8 + (bool recursive=true) &noexcept + + + array && + prune + classtoml_1_1array.html + abaebb654e760589f43d16ccb3971cae8 + (bool recursive=true) &&noexcept + + + void + pop_back + classtoml_1_1array.html + af99d72e29cef84f736d91d627b47a1dc + () noexcept + + + void + clear + classtoml_1_1array.html + adaa65bf63f29f898c27423306c165d68 + () noexcept + + + iterator + insert + classtoml_1_1array.html + a17c7e34b433ea8907186dbb1788c9d37 + (const_iterator pos, ElemType &&val, value_flags flags=preserve_source_value_flags) + + + iterator + insert + classtoml_1_1array.html + a55a9e6e742e556ea07573d29c23ce7df + (const_iterator pos, size_t count, ElemType &&val, value_flags flags=preserve_source_value_flags) + + + iterator + insert + classtoml_1_1array.html + a60a0d39bfd8721cef23e155f5504d54d + (const_iterator pos, Iter first, Iter last, value_flags flags=preserve_source_value_flags) + + + iterator + insert + classtoml_1_1array.html + a1baecd5d579afb508886572674b89781 + (const_iterator pos, std::initializer_list< ElemType > ilist, value_flags flags=preserve_source_value_flags) + + + iterator + emplace + classtoml_1_1array.html + a4110b96386b33097a255f3694ac01d4a + (const_iterator pos, Args &&... args) + + + iterator + replace + classtoml_1_1array.html + a37a8a283e6c1cbeef757b2e59489ee6c + (const_iterator pos, ElemType &&val, value_flags flags=preserve_source_value_flags) + + + void + push_back + classtoml_1_1array.html + ab7188537b351ef3a756b54b83e4b05b3 + (ElemType &&val, value_flags flags=preserve_source_value_flags) + + + decltype(auto) + emplace_back + classtoml_1_1array.html + ad1383e120e7f8d8fe54e07dab164bd6d + (Args &&... args) + + + bool + is_homogeneous + classtoml_1_1node.html + a7d2b7360a2ea44282890e1ded3d3946a + () const noexcept + + + bool + is + classtoml_1_1node.html + a03e1bbe1a0640953b7105fe40c733118 + () const noexcept + + + impl::wrap_node< T > * + as + classtoml_1_1node.html + a42b952e50ab41b39c1c5340c010d07f0 + () noexcept + + + const impl::wrap_node< T > * + as + classtoml_1_1node.html + a4013d8bf01b87e77643bef7cdf818a5a + () const noexcept + + + optional< T > + value_exact + classtoml_1_1node.html + a11f4ae869670d876f704f676f0ead81b + () const noexcept(impl::value_retrieval_is_nothrow< T >) + + + optional< T > + value + classtoml_1_1node.html + a302e5bc2e4796e9b1ae60b002911a007 + () const noexcept(impl::value_retrieval_is_nothrow< T >) + + + auto + value_or + classtoml_1_1node.html + ad1c332ae403fade90216726105419efc + (T &&default_value) const noexcept(impl::value_retrieval_is_nothrow< T >) + + + decltype(auto) + ref + classtoml_1_1node.html + a58fde40ef0b172d36bf293c251b25130 + () &noexcept + + + decltype(auto) + ref + classtoml_1_1node.html + aca651e7fe7f377fe958b20678d08ef14 + () &&noexcept + + + decltype(auto) + ref + classtoml_1_1node.html + a9794ed57d952d8293ed3278a11e54ca2 + () const &noexcept + + + decltype(auto) + ref + classtoml_1_1node.html + a937af29dc15ef8e1af7950d925341cc3 + () const &&noexcept + + + const source_region & + source + classtoml_1_1node.html + a4a30e611eeddce99e5c48fd80e79b134 + () const noexcept + + + decltype(auto) + visit + classtoml_1_1node.html + ad47390f3832260db7bf06cd282598240 + (Func &&visitor) &noexcept(visit_is_nothrow< Func &&, node & >) + + + decltype(auto) + visit + classtoml_1_1node.html + a371a03c4b91cfbb8d9ee785c1eacf836 + (Func &&visitor) &&noexcept(visit_is_nothrow< Func &&, node && >) + + + decltype(auto) + visit + classtoml_1_1node.html + ad4a42e50f923b0fe1efff0a6719dab90 + (Func &&visitor) const &noexcept(visit_is_nothrow< Func &&, const node & >) + + + decltype(auto) + visit + classtoml_1_1node.html + ac387cb04111addc0c291ecdd6f299666 + (Func &&visitor) const &&noexcept(visit_is_nothrow< Func &&, const node && >) + + + + operator node_view< node > + classtoml_1_1node.html + a04d800d6ec9342d2ee2a364f05317573 + () noexcept + + + + operator node_view< const node > + classtoml_1_1node.html + ac7d6979c7246d7faee8ca48aadfcee68 + () const noexcept + + + node_view< node > + at_path + classtoml_1_1node.html + a21f64d68f408033ee6610f34d3bf0bcd + (std::string_view path) noexcept + + + node_view< const node > + at_path + classtoml_1_1node.html + ab17e0ffeb05b2ec34b87bc33375c6dce + (std::string_view path) const noexcept + + + node_view< node > + at_path + classtoml_1_1node.html + a6c6df9f8faa18019e01ea778a802700f + (const toml::path &path) noexcept + + + node_view< const node > + at_path + classtoml_1_1node.html + a09b4206b0e980fe961c8f9ba1c503b86 + (const toml::path &path) const noexcept + + + node_view< node > + at_path + classtoml_1_1node.html + a06f8134c629450c0a308798271e98d64 + (std::wstring_view path) + + + node_view< const node > + at_path + classtoml_1_1node.html + a9fb5f28c07c345f55687dfcb681b33c4 + (std::wstring_view path) const + + + node_view< node > + operator[] + classtoml_1_1node.html + af3e492bf3406fb79d50308f5be974c3e + (const toml::path &path) noexcept + + + node_view< const node > + operator[] + classtoml_1_1node.html + a462a55fc6e4f7da1108b747165fe17db + (const toml::path &path) const noexcept + + + friend bool + operator== + classtoml_1_1array.html + a06cf25e3f80c98d88e041ef9823976c0 + (const array &lhs, const array &rhs) noexcept + + + friend bool + operator!= + classtoml_1_1array.html + af06c7437a0946a9d5e093d903b59f6a4 + (const array &lhs, const array &rhs) noexcept + + + friend bool + operator== + classtoml_1_1array.html + ab87e435c5a41140e60cd2e703df96fbd + (const array &lhs, const std::initializer_list< T > &rhs) noexcept + + + friend bool + operator== + classtoml_1_1array.html + a5b3c615e4ba8fd780b966f175070b554 + (const array &lhs, const std::vector< T > &rhs) noexcept + + + + toml::date + structtoml_1_1date.html + + + date + structtoml_1_1date.html + a5cbb79ab52538ec7a74022cf4fcfb129 + () noexcept=default + + + constexpr + date + structtoml_1_1date.html + a6025b77738bf7ed2db704cc85297e74d + (Y y, M m, D d) noexcept + + + uint16_t + year + structtoml_1_1date.html + ad1dc522b115c69dc908540b1c6ff792b + + + + uint8_t + month + structtoml_1_1date.html + a0528c722d0a81741a95f6e3a1116614e + + + + uint8_t + day + structtoml_1_1date.html + a8ec7a7238b8edd3341b450a7b43ec011 + + + + friend constexpr bool + operator== + structtoml_1_1date.html + a0caa07ad9eee6ae58643616be51bb663 + (const date &lhs, const date &rhs) noexcept + + + friend constexpr bool + operator!= + structtoml_1_1date.html + a749a0234d295cb7aa694d0b43488cec4 + (const date &lhs, const date &rhs) noexcept + + + friend constexpr bool + operator< + structtoml_1_1date.html + afaa5e0c51e3510196c29945ad10ae688 + (const date &lhs, const date &rhs) noexcept + + + friend constexpr bool + operator<= + structtoml_1_1date.html + a516dcfebd0bf3aee7402b6b548722711 + (const date &lhs, const date &rhs) noexcept + + + friend constexpr bool + operator> + structtoml_1_1date.html + aa166f5254bd44bade29bd0b6bae1935b + (const date &lhs, const date &rhs) noexcept + + + friend constexpr bool + operator>= + structtoml_1_1date.html + a5b36b70c047b28b364396352406ea1ad + (const date &lhs, const date &rhs) noexcept + + + friend std::ostream & + operator<< + structtoml_1_1date.html + af56da4d266ccb053fdba60905bca8b3e + (std::ostream &lhs, const date &rhs) + + + + toml::date_time + structtoml_1_1date__time.html + + + date_time + structtoml_1_1date__time.html + a2c9ee1c5c94a6623e9cac5db65289d1f + () noexcept=default + + + constexpr + date_time + structtoml_1_1date__time.html + a8b084d38079cf71db0d0ac8465928dc2 + (const toml::date &d, const toml::time &t) noexcept + + + constexpr + date_time + structtoml_1_1date__time.html + a5394c8e6690f59e627f92b614b06be58 + (const toml::date &d) noexcept + + + constexpr + date_time + structtoml_1_1date__time.html + a73df51041eee08b984d38462ba3fdda4 + (const toml::time &t) noexcept + + + constexpr + date_time + structtoml_1_1date__time.html + aacba153f96e9637d536add5159bad99a + (const toml::date &d, const toml::time &t, const toml::time_offset &off) noexcept + + + constexpr bool + is_local + structtoml_1_1date__time.html + af0d6119984645eb015f2fad0ef487bbc + () const noexcept + + + toml::date + date + structtoml_1_1date__time.html + a89f398585f373d1e7bd59fe440212074 + + + + toml::time + time + structtoml_1_1date__time.html + a18d5e772db4f61635643cda390c2b720 + + + + optional< toml::time_offset > + offset + structtoml_1_1date__time.html + af8596013f522b94a88d2caf69e90a1f5 + + + + friend constexpr bool + operator== + structtoml_1_1date__time.html + a50f2aed78abbdc7ce50e6069650b6afc + (const date_time &lhs, const date_time &rhs) noexcept + + + friend constexpr bool + operator!= + structtoml_1_1date__time.html + a2ca3befabda501eb114245b621a4e921 + (const date_time &lhs, const date_time &rhs) noexcept + + + friend constexpr bool + operator< + structtoml_1_1date__time.html + ae7d7c40a726de7f5f89452925b36bd41 + (const date_time &lhs, const date_time &rhs) noexcept + + + friend constexpr bool + operator<= + structtoml_1_1date__time.html + adb2c7b8d3d8db11ffbd96baa2ba9d322 + (const date_time &lhs, const date_time &rhs) noexcept + + + friend constexpr bool + operator> + structtoml_1_1date__time.html + a76a29c49cd16e9103b174dbde3a3e59c + (const date_time &lhs, const date_time &rhs) noexcept + + + friend constexpr bool + operator>= + structtoml_1_1date__time.html + aca7c2496685d72177b1c89648e9c25aa + (const date_time &lhs, const date_time &rhs) noexcept + + + friend std::ostream & + operator<< + structtoml_1_1date__time.html + ada883abc2927d0dc77c81e4f48e719bb + (std::ostream &lhs, const date_time &rhs) + + + + toml::inserter + structtoml_1_1inserter.html + typename T + + + toml::json_formatter + classtoml_1_1json__formatter.html + + + json_formatter + classtoml_1_1json__formatter.html + ade267ecca82e3bbac3d1392abab91be9 + (const toml::node &source, format_flags flags=default_flags) noexcept + + + + json_formatter + classtoml_1_1json__formatter.html + a51785aa8ef373a9136e896fafabd53be + (const toml::parse_result &result, format_flags flags=default_flags) noexcept + + + static constexpr format_flags + default_flags + classtoml_1_1json__formatter.html + a4541a4662894ce8936f6f2c3ab90fe2e + + + + friend std::ostream & + operator<< + classtoml_1_1json__formatter.html + ac92cd2afca8484a5de0733318d904f2e + (std::ostream &lhs, json_formatter &rhs) + + + friend std::ostream & + operator<< + classtoml_1_1json__formatter.html + a4805dda62a6e56f13f31ae30932f57f5 + (std::ostream &lhs, json_formatter &&rhs) + + + + toml::key + classtoml_1_1key.html + + + key + classtoml_1_1key.html + ac978efd3b48ec0a5c14f08618e4dbe23 + () noexcept=default + + + + key + classtoml_1_1key.html + a5119f122c15687a2f0f81b270a627de2 + (std::string_view k, source_region &&src={}) + + + + key + classtoml_1_1key.html + a0718eb26f4d9c1a4c0fb928efb0d6f81 + (std::string_view k, const source_region &src) + + + + key + classtoml_1_1key.html + a788b1bbeaf636dccc4a78f832bf123e0 + (std::string &&k, source_region &&src={}) noexcept + + + + key + classtoml_1_1key.html + ab86ff590f222d57b8f4630901298d8da + (std::string &&k, const source_region &src) noexcept + + + + key + classtoml_1_1key.html + a981f5ee2fbd822d47d0b347c5df55f11 + (const char *k, source_region &&src={}) + + + + key + classtoml_1_1key.html + ad5f26b37172e34a8c70e848ad7911710 + (const char *k, const source_region &src) + + + + key + classtoml_1_1key.html + a67cfed717c84773ab3fe6ec1b7936fa7 + (std::wstring_view k, source_region &&src={}) + + + + key + classtoml_1_1key.html + aba2cb69db8cae7cbc60899a0ee7618d3 + (std::wstring_view k, const source_region &src) + + + std::string_view + str + classtoml_1_1key.html + a0ca779e816081627f78965683182d4dc + () const noexcept + + + + operator std::string_view + classtoml_1_1key.html + a0f580806c0894ea820c533a9f6e0fa91 + () const noexcept + + + bool + empty + classtoml_1_1key.html + a2baa48f26dac4a10a8328706f9386417 + () const noexcept + + + const char * + data + classtoml_1_1key.html + a498a80bc18677cf967aec123dc1e36d5 + () const noexcept + + + size_t + length + classtoml_1_1key.html + a5ffa3226fa66f1be190178572a87a000 + () const noexcept + + + const source_region & + source + classtoml_1_1key.html + a04ef96a69462901507fc600bde6f63b4 + () const noexcept + + + friend std::ostream & + operator<< + classtoml_1_1key.html + a7a7fac117898b85b48d9587be77f6893 + (std::ostream &lhs, const key &rhs) + + + friend bool + operator== + classtoml_1_1key.html + aa1d636ad061ad2c8e33c629e112bba5e + (const key &lhs, const key &rhs) noexcept + + + friend bool + operator!= + classtoml_1_1key.html + a1255e940048a362bda11ee240b3f1ffe + (const key &lhs, const key &rhs) noexcept + + + friend bool + operator< + classtoml_1_1key.html + a7a6f49b1bdf3e234f7598481a4afd5db + (const key &lhs, const key &rhs) noexcept + + + friend bool + operator<= + classtoml_1_1key.html + ae300be177925b12b73568e194c1444ae + (const key &lhs, const key &rhs) noexcept + + + friend bool + operator> + classtoml_1_1key.html + ae51dcf0f86bed0f6f5ce24d326c0badc + (const key &lhs, const key &rhs) noexcept + + + friend bool + operator>= + classtoml_1_1key.html + a3c20053f6eae90f946535a95225f522a + (const key &lhs, const key &rhs) noexcept + + + friend bool + operator== + classtoml_1_1key.html + a545b27567960385af1c8ae669029d7dd + (const key &lhs, std::string_view rhs) noexcept + + + friend bool + operator!= + classtoml_1_1key.html + a24ea2ab9799ab7fec679f2dae3afccf2 + (const key &lhs, std::string_view rhs) noexcept + + + friend bool + operator< + classtoml_1_1key.html + a5578fc46610d6f6e684fbffdf3f61a44 + (const key &lhs, std::string_view rhs) noexcept + + + friend bool + operator<= + classtoml_1_1key.html + a9c59103b835fb600dbb6c808f8c4f8a8 + (const key &lhs, std::string_view rhs) noexcept + + + friend bool + operator> + classtoml_1_1key.html + ad48d1d36a11a9434bc339987838b08f6 + (const key &lhs, std::string_view rhs) noexcept + + + friend bool + operator>= + classtoml_1_1key.html + a61e19637671ad5c5856eafd5753e9b65 + (const key &lhs, std::string_view rhs) noexcept + + + friend bool + operator== + classtoml_1_1key.html + aed4a71da8d0ffb75d847ab2c26948a1c + (std::string_view lhs, const key &rhs) noexcept + + + friend bool + operator!= + classtoml_1_1key.html + a165b2057b0144350b1c291ffb0956122 + (std::string_view lhs, const key &rhs) noexcept + + + friend bool + operator< + classtoml_1_1key.html + a1bacd712822950e9594fd288a236c9cb + (std::string_view lhs, const key &rhs) noexcept + + + friend bool + operator<= + classtoml_1_1key.html + a780d9a226184919f080acf0b0a676400 + (std::string_view lhs, const key &rhs) noexcept + + + friend bool + operator> + classtoml_1_1key.html + aa85755cf51a2ee6d616aa03a8de8b4b0 + (std::string_view lhs, const key &rhs) noexcept + + + friend bool + operator>= + classtoml_1_1key.html + aa89096b9f6b364702858f2dc6734987a + (std::string_view lhs, const key &rhs) noexcept + + + const char * + const_iterator + classtoml_1_1key.html + a38a33d5010936195ac2083e428165512 + + + + const_iterator + iterator + classtoml_1_1key.html + a40c42bc323383db54972b5752b9ad4dd + + + + const_iterator + begin + classtoml_1_1key.html + ab1691956be4ffe1c604e8e66acdc237e + () const noexcept + + + const_iterator + end + classtoml_1_1key.html + a9b37a10b4aff1e6e7902301789f579c8 + () const noexcept + + + std::string_view + str + classtoml_1_1key.html + a0ca779e816081627f78965683182d4dc + () const noexcept + + + + operator std::string_view + classtoml_1_1key.html + a0f580806c0894ea820c533a9f6e0fa91 + () const noexcept + + + bool + empty + classtoml_1_1key.html + a2baa48f26dac4a10a8328706f9386417 + () const noexcept + + + const char * + data + classtoml_1_1key.html + a498a80bc18677cf967aec123dc1e36d5 + () const noexcept + + + size_t + length + classtoml_1_1key.html + a5ffa3226fa66f1be190178572a87a000 + () const noexcept + + + const source_region & + source + classtoml_1_1key.html + a04ef96a69462901507fc600bde6f63b4 + () const noexcept + + + friend bool + operator== + classtoml_1_1key.html + aa1d636ad061ad2c8e33c629e112bba5e + (const key &lhs, const key &rhs) noexcept + + + friend bool + operator!= + classtoml_1_1key.html + a1255e940048a362bda11ee240b3f1ffe + (const key &lhs, const key &rhs) noexcept + + + friend bool + operator< + classtoml_1_1key.html + a7a6f49b1bdf3e234f7598481a4afd5db + (const key &lhs, const key &rhs) noexcept + + + friend bool + operator<= + classtoml_1_1key.html + ae300be177925b12b73568e194c1444ae + (const key &lhs, const key &rhs) noexcept + + + friend bool + operator> + classtoml_1_1key.html + ae51dcf0f86bed0f6f5ce24d326c0badc + (const key &lhs, const key &rhs) noexcept + + + friend bool + operator>= + classtoml_1_1key.html + a3c20053f6eae90f946535a95225f522a + (const key &lhs, const key &rhs) noexcept + + + friend bool + operator== + classtoml_1_1key.html + a545b27567960385af1c8ae669029d7dd + (const key &lhs, std::string_view rhs) noexcept + + + friend bool + operator!= + classtoml_1_1key.html + a24ea2ab9799ab7fec679f2dae3afccf2 + (const key &lhs, std::string_view rhs) noexcept + + + friend bool + operator< + classtoml_1_1key.html + a5578fc46610d6f6e684fbffdf3f61a44 + (const key &lhs, std::string_view rhs) noexcept + + + friend bool + operator<= + classtoml_1_1key.html + a9c59103b835fb600dbb6c808f8c4f8a8 + (const key &lhs, std::string_view rhs) noexcept + + + friend bool + operator> + classtoml_1_1key.html + ad48d1d36a11a9434bc339987838b08f6 + (const key &lhs, std::string_view rhs) noexcept + + + friend bool + operator>= + classtoml_1_1key.html + a61e19637671ad5c5856eafd5753e9b65 + (const key &lhs, std::string_view rhs) noexcept + + + friend bool + operator== + classtoml_1_1key.html + aed4a71da8d0ffb75d847ab2c26948a1c + (std::string_view lhs, const key &rhs) noexcept + + + friend bool + operator!= + classtoml_1_1key.html + a165b2057b0144350b1c291ffb0956122 + (std::string_view lhs, const key &rhs) noexcept + + + friend bool + operator< + classtoml_1_1key.html + a1bacd712822950e9594fd288a236c9cb + (std::string_view lhs, const key &rhs) noexcept + + + friend bool + operator<= + classtoml_1_1key.html + a780d9a226184919f080acf0b0a676400 + (std::string_view lhs, const key &rhs) noexcept + + + friend bool + operator> + classtoml_1_1key.html + aa85755cf51a2ee6d616aa03a8de8b4b0 + (std::string_view lhs, const key &rhs) noexcept + + + friend bool + operator>= + classtoml_1_1key.html + aa89096b9f6b364702858f2dc6734987a + (std::string_view lhs, const key &rhs) noexcept + + + + toml::node + classtoml_1_1node.html + + virtual bool + is_homogeneous + classtoml_1_1node.html + a68de6772e259ef122c00b0a9c7b63516 + (node_type ntype, node *&first_nonmatch) noexcept=0 + + + virtual bool + is_homogeneous + classtoml_1_1node.html + a834e10ece19d04b4d774d5f224d50b8f + (node_type ntype, const node *&first_nonmatch) const noexcept=0 + + + virtual bool + is_homogeneous + classtoml_1_1node.html + a5d9191dc545ecded3bc8f7706c63edad + (node_type ntype) const noexcept=0 + + + bool + is_homogeneous + classtoml_1_1node.html + a7d2b7360a2ea44282890e1ded3d3946a + () const noexcept + + + virtual node_type + type + classtoml_1_1node.html + a10f389035ce13abb00a1191358af6334 + () const noexcept=0 + + + virtual bool + is_table + classtoml_1_1node.html + a50a2501af7e42b0fab060206dde7a99e + () const noexcept=0 + + + virtual bool + is_array + classtoml_1_1node.html + accce7655b0cc340591a755412fde2ed7 + () const noexcept=0 + + + virtual bool + is_array_of_tables + classtoml_1_1node.html + aa09263a05ef361ad233e710308fce690 + () const noexcept=0 + + + virtual bool + is_value + classtoml_1_1node.html + aeddf9eebbd4ece799e5675e2d9d59e4a + () const noexcept=0 + + + virtual bool + is_string + classtoml_1_1node.html + aa95180487162e844129031842d8a9580 + () const noexcept=0 + + + virtual bool + is_integer + classtoml_1_1node.html + ac5390ac64f018947edc75802a53505a5 + () const noexcept=0 + + + virtual bool + is_floating_point + classtoml_1_1node.html + ad8cdb68a69bdc13cda7d4f7663e57847 + () const noexcept=0 + + + virtual bool + is_number + classtoml_1_1node.html + afcc263be60c33b3f92646b5cfa07393e + () const noexcept=0 + + + virtual bool + is_boolean + classtoml_1_1node.html + a422f765df7ee04fa13254adcda29ae8d + () const noexcept=0 + + + virtual bool + is_date + classtoml_1_1node.html + a1c86fb0bd8e241c4768108988a59332a + () const noexcept=0 + + + virtual bool + is_time + classtoml_1_1node.html + a9266c340ccc94b3349704e91bf12d42d + () const noexcept=0 + + + virtual bool + is_date_time + classtoml_1_1node.html + a900f7589762e01c91fb5b07a2c8e9202 + () const noexcept=0 + + + bool + is + classtoml_1_1node.html + a03e1bbe1a0640953b7105fe40c733118 + () const noexcept + + + virtual table * + as_table + classtoml_1_1node.html + a745ad785874b823e4f926fcf469e2fcb + () noexcept=0 + + + virtual array * + as_array + classtoml_1_1node.html + aba5d87dd64cef25eb9db7c2470fc02a1 + () noexcept=0 + + + virtual toml::value< std::string > * + as_string + classtoml_1_1node.html + a208c1ce3a5a7d33c0a4c5b286b7f0f3c + () noexcept=0 + + + virtual toml::value< int64_t > * + as_integer + classtoml_1_1node.html + a3f6587905d706b28a7c0f0591b3909f4 + () noexcept=0 + + + virtual toml::value< double > * + as_floating_point + classtoml_1_1node.html + ae97051116d5329627f92c2aabe01736c + () noexcept=0 + + + virtual toml::value< bool > * + as_boolean + classtoml_1_1node.html + afc2e457802ecb2a7289467053b2b69cc + () noexcept=0 + + + virtual toml::value< date > * + as_date + classtoml_1_1node.html + a2b973ff8ad0ab5629c2f68531d059635 + () noexcept=0 + + + virtual toml::value< time > * + as_time + classtoml_1_1node.html + a7609b54ffbf8355a3df8ae95041cdf02 + () noexcept=0 + + + virtual toml::value< date_time > * + as_date_time + classtoml_1_1node.html + af8f1a70e91bc9aced87a2fc55960ab55 + () noexcept=0 + + + virtual const table * + as_table + classtoml_1_1node.html + aabd0ed374b5c822783d097b8c17a56f3 + () const noexcept=0 + + + virtual const array * + as_array + classtoml_1_1node.html + a82f1a1dd5cafce0f61ea934992d940d5 + () const noexcept=0 + + + virtual const toml::value< std::string > * + as_string + classtoml_1_1node.html + a207d5e576542c914271e8fd324c27a3e + () const noexcept=0 + + + virtual const toml::value< int64_t > * + as_integer + classtoml_1_1node.html + a7e9ebfc6361d7abd47a2107c4ce5b30b + () const noexcept=0 + + + virtual const toml::value< double > * + as_floating_point + classtoml_1_1node.html + a341f103f722947cb91cdc9998283de90 + () const noexcept=0 + + + virtual const toml::value< bool > * + as_boolean + classtoml_1_1node.html + a3eaa0dd7c73036cda8a422b887a21258 + () const noexcept=0 + + + virtual const toml::value< date > * + as_date + classtoml_1_1node.html + a81853cc248039f90735d35398ff0ee4d + () const noexcept=0 + + + virtual const toml::value< time > * + as_time + classtoml_1_1node.html + a52cdd410531dd1cfff9f533559d8d2d8 + () const noexcept=0 + + + virtual const toml::value< date_time > * + as_date_time + classtoml_1_1node.html + aa6a4ec77d1a47279ce9ade5e6bc233e5 + () const noexcept=0 + + + impl::wrap_node< T > * + as + classtoml_1_1node.html + a42b952e50ab41b39c1c5340c010d07f0 + () noexcept + + + const impl::wrap_node< T > * + as + classtoml_1_1node.html + a4013d8bf01b87e77643bef7cdf818a5a + () const noexcept + + + optional< T > + value_exact + classtoml_1_1node.html + a11f4ae869670d876f704f676f0ead81b + () const noexcept(impl::value_retrieval_is_nothrow< T >) + + + optional< T > + value + classtoml_1_1node.html + a302e5bc2e4796e9b1ae60b002911a007 + () const noexcept(impl::value_retrieval_is_nothrow< T >) + + + auto + value_or + classtoml_1_1node.html + ad1c332ae403fade90216726105419efc + (T &&default_value) const noexcept(impl::value_retrieval_is_nothrow< T >) + + + decltype(auto) + ref + classtoml_1_1node.html + a58fde40ef0b172d36bf293c251b25130 + () &noexcept + + + decltype(auto) + ref + classtoml_1_1node.html + aca651e7fe7f377fe958b20678d08ef14 + () &&noexcept + + + decltype(auto) + ref + classtoml_1_1node.html + a9794ed57d952d8293ed3278a11e54ca2 + () const &noexcept + + + decltype(auto) + ref + classtoml_1_1node.html + a937af29dc15ef8e1af7950d925341cc3 + () const &&noexcept + + + const source_region & + source + classtoml_1_1node.html + a4a30e611eeddce99e5c48fd80e79b134 + () const noexcept + + + decltype(auto) + visit + classtoml_1_1node.html + ad47390f3832260db7bf06cd282598240 + (Func &&visitor) &noexcept(visit_is_nothrow< Func &&, node & >) + + + decltype(auto) + visit + classtoml_1_1node.html + a371a03c4b91cfbb8d9ee785c1eacf836 + (Func &&visitor) &&noexcept(visit_is_nothrow< Func &&, node && >) + + + decltype(auto) + visit + classtoml_1_1node.html + ad4a42e50f923b0fe1efff0a6719dab90 + (Func &&visitor) const &noexcept(visit_is_nothrow< Func &&, const node & >) + + + decltype(auto) + visit + classtoml_1_1node.html + ac387cb04111addc0c291ecdd6f299666 + (Func &&visitor) const &&noexcept(visit_is_nothrow< Func &&, const node && >) + + + + operator node_view< node > + classtoml_1_1node.html + a04d800d6ec9342d2ee2a364f05317573 + () noexcept + + + + operator node_view< const node > + classtoml_1_1node.html + ac7d6979c7246d7faee8ca48aadfcee68 + () const noexcept + + + node_view< node > + at_path + classtoml_1_1node.html + a21f64d68f408033ee6610f34d3bf0bcd + (std::string_view path) noexcept + + + node_view< const node > + at_path + classtoml_1_1node.html + ab17e0ffeb05b2ec34b87bc33375c6dce + (std::string_view path) const noexcept + + + node_view< node > + at_path + classtoml_1_1node.html + a6c6df9f8faa18019e01ea778a802700f + (const toml::path &path) noexcept + + + node_view< const node > + at_path + classtoml_1_1node.html + a09b4206b0e980fe961c8f9ba1c503b86 + (const toml::path &path) const noexcept + + + node_view< node > + at_path + classtoml_1_1node.html + a06f8134c629450c0a308798271e98d64 + (std::wstring_view path) + + + node_view< const node > + at_path + classtoml_1_1node.html + a9fb5f28c07c345f55687dfcb681b33c4 + (std::wstring_view path) const + + + node_view< node > + operator[] + classtoml_1_1node.html + af3e492bf3406fb79d50308f5be974c3e + (const toml::path &path) noexcept + + + node_view< const node > + operator[] + classtoml_1_1node.html + a462a55fc6e4f7da1108b747165fe17db + (const toml::path &path) const noexcept + + + virtual bool + is_homogeneous + classtoml_1_1node.html + a68de6772e259ef122c00b0a9c7b63516 + (node_type ntype, node *&first_nonmatch) noexcept=0 + + + virtual bool + is_homogeneous + classtoml_1_1node.html + a834e10ece19d04b4d774d5f224d50b8f + (node_type ntype, const node *&first_nonmatch) const noexcept=0 + + + virtual bool + is_homogeneous + classtoml_1_1node.html + a5d9191dc545ecded3bc8f7706c63edad + (node_type ntype) const noexcept=0 + + + bool + is_homogeneous + classtoml_1_1node.html + a7d2b7360a2ea44282890e1ded3d3946a + () const noexcept + + + virtual node_type + type + classtoml_1_1node.html + a10f389035ce13abb00a1191358af6334 + () const noexcept=0 + + + virtual bool + is_table + classtoml_1_1node.html + a50a2501af7e42b0fab060206dde7a99e + () const noexcept=0 + + + virtual bool + is_array + classtoml_1_1node.html + accce7655b0cc340591a755412fde2ed7 + () const noexcept=0 + + + virtual bool + is_array_of_tables + classtoml_1_1node.html + aa09263a05ef361ad233e710308fce690 + () const noexcept=0 + + + virtual bool + is_value + classtoml_1_1node.html + aeddf9eebbd4ece799e5675e2d9d59e4a + () const noexcept=0 + + + virtual bool + is_string + classtoml_1_1node.html + aa95180487162e844129031842d8a9580 + () const noexcept=0 + + + virtual bool + is_integer + classtoml_1_1node.html + ac5390ac64f018947edc75802a53505a5 + () const noexcept=0 + + + virtual bool + is_floating_point + classtoml_1_1node.html + ad8cdb68a69bdc13cda7d4f7663e57847 + () const noexcept=0 + + + virtual bool + is_number + classtoml_1_1node.html + afcc263be60c33b3f92646b5cfa07393e + () const noexcept=0 + + + virtual bool + is_boolean + classtoml_1_1node.html + a422f765df7ee04fa13254adcda29ae8d + () const noexcept=0 + + + virtual bool + is_date + classtoml_1_1node.html + a1c86fb0bd8e241c4768108988a59332a + () const noexcept=0 + + + virtual bool + is_time + classtoml_1_1node.html + a9266c340ccc94b3349704e91bf12d42d + () const noexcept=0 + + + virtual bool + is_date_time + classtoml_1_1node.html + a900f7589762e01c91fb5b07a2c8e9202 + () const noexcept=0 + + + bool + is + classtoml_1_1node.html + a03e1bbe1a0640953b7105fe40c733118 + () const noexcept + + + virtual table * + as_table + classtoml_1_1node.html + a745ad785874b823e4f926fcf469e2fcb + () noexcept=0 + + + virtual array * + as_array + classtoml_1_1node.html + aba5d87dd64cef25eb9db7c2470fc02a1 + () noexcept=0 + + + virtual toml::value< std::string > * + as_string + classtoml_1_1node.html + a208c1ce3a5a7d33c0a4c5b286b7f0f3c + () noexcept=0 + + + virtual toml::value< int64_t > * + as_integer + classtoml_1_1node.html + a3f6587905d706b28a7c0f0591b3909f4 + () noexcept=0 + + + virtual toml::value< double > * + as_floating_point + classtoml_1_1node.html + ae97051116d5329627f92c2aabe01736c + () noexcept=0 + + + virtual toml::value< bool > * + as_boolean + classtoml_1_1node.html + afc2e457802ecb2a7289467053b2b69cc + () noexcept=0 + + + virtual toml::value< date > * + as_date + classtoml_1_1node.html + a2b973ff8ad0ab5629c2f68531d059635 + () noexcept=0 + + + virtual toml::value< time > * + as_time + classtoml_1_1node.html + a7609b54ffbf8355a3df8ae95041cdf02 + () noexcept=0 + + + virtual toml::value< date_time > * + as_date_time + classtoml_1_1node.html + af8f1a70e91bc9aced87a2fc55960ab55 + () noexcept=0 + + + virtual const table * + as_table + classtoml_1_1node.html + aabd0ed374b5c822783d097b8c17a56f3 + () const noexcept=0 + + + virtual const array * + as_array + classtoml_1_1node.html + a82f1a1dd5cafce0f61ea934992d940d5 + () const noexcept=0 + + + virtual const toml::value< std::string > * + as_string + classtoml_1_1node.html + a207d5e576542c914271e8fd324c27a3e + () const noexcept=0 + + + virtual const toml::value< int64_t > * + as_integer + classtoml_1_1node.html + a7e9ebfc6361d7abd47a2107c4ce5b30b + () const noexcept=0 + + + virtual const toml::value< double > * + as_floating_point + classtoml_1_1node.html + a341f103f722947cb91cdc9998283de90 + () const noexcept=0 + + + virtual const toml::value< bool > * + as_boolean + classtoml_1_1node.html + a3eaa0dd7c73036cda8a422b887a21258 + () const noexcept=0 + + + virtual const toml::value< date > * + as_date + classtoml_1_1node.html + a81853cc248039f90735d35398ff0ee4d + () const noexcept=0 + + + virtual const toml::value< time > * + as_time + classtoml_1_1node.html + a52cdd410531dd1cfff9f533559d8d2d8 + () const noexcept=0 + + + virtual const toml::value< date_time > * + as_date_time + classtoml_1_1node.html + aa6a4ec77d1a47279ce9ade5e6bc233e5 + () const noexcept=0 + + + impl::wrap_node< T > * + as + classtoml_1_1node.html + a42b952e50ab41b39c1c5340c010d07f0 + () noexcept + + + const impl::wrap_node< T > * + as + classtoml_1_1node.html + a4013d8bf01b87e77643bef7cdf818a5a + () const noexcept + + + optional< T > + value_exact + classtoml_1_1node.html + a11f4ae869670d876f704f676f0ead81b + () const noexcept(impl::value_retrieval_is_nothrow< T >) + + + optional< T > + value + classtoml_1_1node.html + a302e5bc2e4796e9b1ae60b002911a007 + () const noexcept(impl::value_retrieval_is_nothrow< T >) + + + auto + value_or + classtoml_1_1node.html + ad1c332ae403fade90216726105419efc + (T &&default_value) const noexcept(impl::value_retrieval_is_nothrow< T >) + + + decltype(auto) + ref + classtoml_1_1node.html + a58fde40ef0b172d36bf293c251b25130 + () &noexcept + + + decltype(auto) + ref + classtoml_1_1node.html + aca651e7fe7f377fe958b20678d08ef14 + () &&noexcept + + + decltype(auto) + ref + classtoml_1_1node.html + a9794ed57d952d8293ed3278a11e54ca2 + () const &noexcept + + + decltype(auto) + ref + classtoml_1_1node.html + a937af29dc15ef8e1af7950d925341cc3 + () const &&noexcept + + + const source_region & + source + classtoml_1_1node.html + a4a30e611eeddce99e5c48fd80e79b134 + () const noexcept + + + decltype(auto) + visit + classtoml_1_1node.html + ad47390f3832260db7bf06cd282598240 + (Func &&visitor) &noexcept(visit_is_nothrow< Func &&, node & >) + + + decltype(auto) + visit + classtoml_1_1node.html + a371a03c4b91cfbb8d9ee785c1eacf836 + (Func &&visitor) &&noexcept(visit_is_nothrow< Func &&, node && >) + + + decltype(auto) + visit + classtoml_1_1node.html + ad4a42e50f923b0fe1efff0a6719dab90 + (Func &&visitor) const &noexcept(visit_is_nothrow< Func &&, const node & >) + + + decltype(auto) + visit + classtoml_1_1node.html + ac387cb04111addc0c291ecdd6f299666 + (Func &&visitor) const &&noexcept(visit_is_nothrow< Func &&, const node && >) + + + + operator node_view< node > + classtoml_1_1node.html + a04d800d6ec9342d2ee2a364f05317573 + () noexcept + + + + operator node_view< const node > + classtoml_1_1node.html + ac7d6979c7246d7faee8ca48aadfcee68 + () const noexcept + + + node_view< node > + at_path + classtoml_1_1node.html + a21f64d68f408033ee6610f34d3bf0bcd + (std::string_view path) noexcept + + + node_view< const node > + at_path + classtoml_1_1node.html + ab17e0ffeb05b2ec34b87bc33375c6dce + (std::string_view path) const noexcept + + + node_view< node > + at_path + classtoml_1_1node.html + a6c6df9f8faa18019e01ea778a802700f + (const toml::path &path) noexcept + + + node_view< const node > + at_path + classtoml_1_1node.html + a09b4206b0e980fe961c8f9ba1c503b86 + (const toml::path &path) const noexcept + + + node_view< node > + at_path + classtoml_1_1node.html + a06f8134c629450c0a308798271e98d64 + (std::wstring_view path) + + + node_view< const node > + at_path + classtoml_1_1node.html + a9fb5f28c07c345f55687dfcb681b33c4 + (std::wstring_view path) const + + + node_view< node > + operator[] + classtoml_1_1node.html + af3e492bf3406fb79d50308f5be974c3e + (const toml::path &path) noexcept + + + node_view< const node > + operator[] + classtoml_1_1node.html + a462a55fc6e4f7da1108b747165fe17db + (const toml::path &path) const noexcept + + + + toml::node_view + classtoml_1_1node__view.html + typename ViewedType + + ViewedType + viewed_type + classtoml_1_1node__view.html + a1550f4e57532fd03b6c3e9d87805c03a + + + + + node_view + classtoml_1_1node__view.html + a0d8bf511db11b67081bea35c25e4ca9e + () noexcept=default + + + + node_view + classtoml_1_1node__view.html + a199ca0c01e27a74b2ad6dbe554113fb8 + (viewed_type *node) noexcept + + + + node_view + classtoml_1_1node__view.html + af40ced8902e81e354af44a033f05d682 + (viewed_type &node) noexcept + + + + node_view + classtoml_1_1node__view.html + a6f2a4c199237385a61741ab30a64b500 + (const node_view &) noexcept=default + + + + node_view + classtoml_1_1node__view.html + a79091432e79c07c4bb8700f44adfb8d6 + (node_view &&) noexcept=default + + + node_view & + operator= + classtoml_1_1node__view.html + a458ad5f517878111a1aa3e964cb3cbb0 + (const node_view &) &noexcept=default + + + node_view & + operator= + classtoml_1_1node__view.html + a31e107da000f5bc400dd15deca1225c1 + (node_view &&) &noexcept=default + + + + operator bool + classtoml_1_1node__view.html + ab8ee0ffcb999601a9b0247c099aa9250 + () const noexcept + + + viewed_type * + node + classtoml_1_1node__view.html + ae141e775e958e23c730a6d78397dc820 + () const noexcept + + + node_type + type + classtoml_1_1node__view.html + a2483cf1a8314661919b9066ce62c9621 + () const noexcept + + + bool + is_table + classtoml_1_1node__view.html + a70b567ea582c472fe95a89b5b842cee6 + () const noexcept + + + bool + is_array + classtoml_1_1node__view.html + a879d945d2880fc216085d7deb087ad38 + () const noexcept + + + bool + is_value + classtoml_1_1node__view.html + aa58f8de47be5f53738b1a04d7e9d05af + () const noexcept + + + bool + is_string + classtoml_1_1node__view.html + a79b47268155d955b8e2c027b0c2ae983 + () const noexcept + + + bool + is_integer + classtoml_1_1node__view.html + ab9c835ddf017f250d84fa5d5736e8520 + () const noexcept + + + bool + is_floating_point + classtoml_1_1node__view.html + a43ea3eed7b0f133fa7d752a9322c758e + () const noexcept + + + bool + is_number + classtoml_1_1node__view.html + a107732370c62402b1101a78e7382fd8b + () const noexcept + + + bool + is_boolean + classtoml_1_1node__view.html + aa7ee0d1f396e1283c4a11d07b9400897 + () const noexcept + + + bool + is_date + classtoml_1_1node__view.html + a4dc7cf8a57db73fa799a939f7acd549d + () const noexcept + + + bool + is_time + classtoml_1_1node__view.html + a98a6bc33e3ba573c37a069126acf0b8c + () const noexcept + + + bool + is_date_time + classtoml_1_1node__view.html + a5a380f773ae291c942a03e45a88c94b0 + () const noexcept + + + bool + is_array_of_tables + classtoml_1_1node__view.html + a6cc459be36698ec5a9ac0d00b4480eae + () const noexcept + + + bool + is + classtoml_1_1node__view.html + a21d7c55a33aa1c868dde5cbaa7e54ec2 + () const noexcept + + + bool + is_homogeneous + classtoml_1_1node__view.html + a2a2902064421f401e80ea687cef536da + (node_type ntype, viewed_type *&first_nonmatch) const noexcept + + + bool + is_homogeneous + classtoml_1_1node__view.html + afe0abd51e0e108b306be2a3ee9561cca + (node_type ntype) const noexcept + + + bool + is_homogeneous + classtoml_1_1node__view.html + a29c82d83b1d64f016eb42f95fd37e346 + () const noexcept + + + auto * + as + classtoml_1_1node__view.html + ad0b0e78b0a99e5203ef5f4cee2f97a6d + () const noexcept + + + auto * + as_table + classtoml_1_1node__view.html + abe2afe2287fc18cbec8d2bd1dde06e0f + () const noexcept + + + auto * + as_array + classtoml_1_1node__view.html + a0ba99f0804e4404c16c9cff3ddaa957b + () const noexcept + + + auto * + as_string + classtoml_1_1node__view.html + af4815c9d0e297a7b913ccad3a9244dc5 + () const noexcept + + + auto * + as_integer + classtoml_1_1node__view.html + a3a0bdda3ec36acfd617d8a80c80d66c9 + () const noexcept + + + auto * + as_floating_point + classtoml_1_1node__view.html + a5fe8fedbe082235feee275b7f7d9c253 + () const noexcept + + + auto * + as_boolean + classtoml_1_1node__view.html + a402558e0b0d31d6558204783a0e98e99 + () const noexcept + + + auto * + as_date + classtoml_1_1node__view.html + aef363a1d54bbf4bff8afb25f2118f652 + () const noexcept + + + auto * + as_time + classtoml_1_1node__view.html + a868f22ea8f393c05b322695e28b8fdf3 + () const noexcept + + + auto * + as_date_time + classtoml_1_1node__view.html + a30e7a7464eff9367804682ed631d35bc + () const noexcept + + + optional< T > + value_exact + classtoml_1_1node__view.html + aea1e782a755ede1e255e3c5d5caeb01f + () const noexcept(impl::value_retrieval_is_nothrow< T >) + + + optional< T > + value + classtoml_1_1node__view.html + a0e836a2e0debb35f9a2bedb70c2f6dad + () const noexcept(impl::value_retrieval_is_nothrow< T >) + + + auto + value_or + classtoml_1_1node__view.html + a314e5d666dcda3493ff9aa2c0816f53c + (T &&default_value) const noexcept(impl::value_retrieval_is_nothrow< T >) + + + decltype(auto) + ref + classtoml_1_1node__view.html + aec5c764293a7eeb20009a484b34d7c3a + () const noexcept + + + decltype(auto) + visit + classtoml_1_1node__view.html + aa5f84bfab779c71a07b04ca0b2db863f + (Func &&visitor) const noexcept(visit_is_nothrow< Func && >) + + + node_view + operator[] + classtoml_1_1node__view.html + a2dde12894f70530d80de45a03eae78fa + (std::string_view key) const noexcept + + + node_view + operator[] + classtoml_1_1node__view.html + a44b94290029477305f0b6720d72bf965 + (const toml::path &path) const noexcept + + + node_view + at_path + classtoml_1_1node__view.html + a59c5432fb77b50ef22098e17d4f956d5 + (std::string_view path) const noexcept + + + node_view + at_path + classtoml_1_1node__view.html + ab265c6f0304647bcd8074ad081f2bf17 + (const toml::path &path) const noexcept + + + node_view + operator[] + classtoml_1_1node__view.html + a35021e65758dc0be505916532b69a7d8 + (std::wstring_view key) const + + + node_view + at_path + classtoml_1_1node__view.html + a157c1eafb7bdf8f33398106017d1b20c + (std::wstring_view path) const + + + node_view + operator[] + classtoml_1_1node__view.html + a5d13b026efcd31812415ead30eeb69db + (size_t index) const noexcept + + + friend std::ostream & + operator<< + classtoml_1_1node__view.html + a9b7bbd5fb1e1b45ca2284056bec5e8fe + (std::ostream &os, const node_view &nv) + + + friend bool + operator== + classtoml_1_1node__view.html + a191820d030035d564fe09f5eb251b927 + (const node_view &lhs, const node_view< T > &rhs) noexcept + + + friend bool + operator!= + classtoml_1_1node__view.html + a3dc82b95849d7e6bd89b5496fe96beaa + (const node_view &lhs, const node_view< T > &rhs) noexcept + + + friend bool + operator== + classtoml_1_1node__view.html + a754bdba78869afe6bccb4b51e0a77e45 + (const node_view &lhs, const table &rhs) noexcept + + + friend bool + operator== + classtoml_1_1node__view.html + a3b39aedbada6221a4e3857b0f0235843 + (const node_view &lhs, const array &rhs) noexcept + + + friend bool + operator== + classtoml_1_1node__view.html + ad9fd96826fcee43cd1ea1ccf6e22c895 + (const node_view &lhs, const toml::value< T > &rhs) noexcept + + + friend bool + operator== + classtoml_1_1node__view.html + a4dba3ed7356704669e4175fa7c8f5c34 + (const node_view &lhs, const T &rhs) noexcept(!impl::is_wide_string< T >) + + + friend bool + operator== + classtoml_1_1node__view.html + abe826c97f2b451ee287ecf37f46517fb + (const node_view &lhs, const std::initializer_list< T > &rhs) noexcept(!impl::is_wide_string< T >) + + + friend bool + operator== + classtoml_1_1node__view.html + ad4b4144f8033c78e5410f701e5ae7e30 + (const node_view &lhs, const std::vector< T > &rhs) noexcept(!impl::is_wide_string< T >) + + + friend bool + operator== + classtoml_1_1node__view.html + a191820d030035d564fe09f5eb251b927 + (const node_view &lhs, const node_view< T > &rhs) noexcept + + + friend bool + operator!= + classtoml_1_1node__view.html + a3dc82b95849d7e6bd89b5496fe96beaa + (const node_view &lhs, const node_view< T > &rhs) noexcept + + + friend bool + operator== + classtoml_1_1node__view.html + a754bdba78869afe6bccb4b51e0a77e45 + (const node_view &lhs, const table &rhs) noexcept + + + friend bool + operator== + classtoml_1_1node__view.html + a3b39aedbada6221a4e3857b0f0235843 + (const node_view &lhs, const array &rhs) noexcept + + + friend bool + operator== + classtoml_1_1node__view.html + ad9fd96826fcee43cd1ea1ccf6e22c895 + (const node_view &lhs, const toml::value< T > &rhs) noexcept + + + friend bool + operator== + classtoml_1_1node__view.html + a4dba3ed7356704669e4175fa7c8f5c34 + (const node_view &lhs, const T &rhs) noexcept(!impl::is_wide_string< T >) + + + friend bool + operator== + classtoml_1_1node__view.html + abe826c97f2b451ee287ecf37f46517fb + (const node_view &lhs, const std::initializer_list< T > &rhs) noexcept(!impl::is_wide_string< T >) + + + friend bool + operator== + classtoml_1_1node__view.html + ad4b4144f8033c78e5410f701e5ae7e30 + (const node_view &lhs, const std::vector< T > &rhs) noexcept(!impl::is_wide_string< T >) + + + node_type + type + classtoml_1_1node__view.html + a2483cf1a8314661919b9066ce62c9621 + () const noexcept + + + bool + is_table + classtoml_1_1node__view.html + a70b567ea582c472fe95a89b5b842cee6 + () const noexcept + + + bool + is_array + classtoml_1_1node__view.html + a879d945d2880fc216085d7deb087ad38 + () const noexcept + + + bool + is_value + classtoml_1_1node__view.html + aa58f8de47be5f53738b1a04d7e9d05af + () const noexcept + + + bool + is_string + classtoml_1_1node__view.html + a79b47268155d955b8e2c027b0c2ae983 + () const noexcept + + + bool + is_integer + classtoml_1_1node__view.html + ab9c835ddf017f250d84fa5d5736e8520 + () const noexcept + + + bool + is_floating_point + classtoml_1_1node__view.html + a43ea3eed7b0f133fa7d752a9322c758e + () const noexcept + + + bool + is_number + classtoml_1_1node__view.html + a107732370c62402b1101a78e7382fd8b + () const noexcept + + + bool + is_boolean + classtoml_1_1node__view.html + aa7ee0d1f396e1283c4a11d07b9400897 + () const noexcept + + + bool + is_date + classtoml_1_1node__view.html + a4dc7cf8a57db73fa799a939f7acd549d + () const noexcept + + + bool + is_time + classtoml_1_1node__view.html + a98a6bc33e3ba573c37a069126acf0b8c + () const noexcept + + + bool + is_date_time + classtoml_1_1node__view.html + a5a380f773ae291c942a03e45a88c94b0 + () const noexcept + + + bool + is_array_of_tables + classtoml_1_1node__view.html + a6cc459be36698ec5a9ac0d00b4480eae + () const noexcept + + + bool + is + classtoml_1_1node__view.html + a21d7c55a33aa1c868dde5cbaa7e54ec2 + () const noexcept + + + bool + is_homogeneous + classtoml_1_1node__view.html + a2a2902064421f401e80ea687cef536da + (node_type ntype, viewed_type *&first_nonmatch) const noexcept + + + bool + is_homogeneous + classtoml_1_1node__view.html + afe0abd51e0e108b306be2a3ee9561cca + (node_type ntype) const noexcept + + + bool + is_homogeneous + classtoml_1_1node__view.html + a29c82d83b1d64f016eb42f95fd37e346 + () const noexcept + + + auto * + as + classtoml_1_1node__view.html + ad0b0e78b0a99e5203ef5f4cee2f97a6d + () const noexcept + + + auto * + as_table + classtoml_1_1node__view.html + abe2afe2287fc18cbec8d2bd1dde06e0f + () const noexcept + + + auto * + as_array + classtoml_1_1node__view.html + a0ba99f0804e4404c16c9cff3ddaa957b + () const noexcept + + + auto * + as_string + classtoml_1_1node__view.html + af4815c9d0e297a7b913ccad3a9244dc5 + () const noexcept + + + auto * + as_integer + classtoml_1_1node__view.html + a3a0bdda3ec36acfd617d8a80c80d66c9 + () const noexcept + + + auto * + as_floating_point + classtoml_1_1node__view.html + a5fe8fedbe082235feee275b7f7d9c253 + () const noexcept + + + auto * + as_boolean + classtoml_1_1node__view.html + a402558e0b0d31d6558204783a0e98e99 + () const noexcept + + + auto * + as_date + classtoml_1_1node__view.html + aef363a1d54bbf4bff8afb25f2118f652 + () const noexcept + + + auto * + as_time + classtoml_1_1node__view.html + a868f22ea8f393c05b322695e28b8fdf3 + () const noexcept + + + auto * + as_date_time + classtoml_1_1node__view.html + a30e7a7464eff9367804682ed631d35bc + () const noexcept + + + optional< T > + value_exact + classtoml_1_1node__view.html + aea1e782a755ede1e255e3c5d5caeb01f + () const noexcept(impl::value_retrieval_is_nothrow< T >) + + + optional< T > + value + classtoml_1_1node__view.html + a0e836a2e0debb35f9a2bedb70c2f6dad + () const noexcept(impl::value_retrieval_is_nothrow< T >) + + + auto + value_or + classtoml_1_1node__view.html + a314e5d666dcda3493ff9aa2c0816f53c + (T &&default_value) const noexcept(impl::value_retrieval_is_nothrow< T >) + + + decltype(auto) + ref + classtoml_1_1node__view.html + aec5c764293a7eeb20009a484b34d7c3a + () const noexcept + + + decltype(auto) + visit + classtoml_1_1node__view.html + aa5f84bfab779c71a07b04ca0b2db863f + (Func &&visitor) const noexcept(visit_is_nothrow< Func && >) + + + node_view + operator[] + classtoml_1_1node__view.html + a2dde12894f70530d80de45a03eae78fa + (std::string_view key) const noexcept + + + node_view + operator[] + classtoml_1_1node__view.html + a44b94290029477305f0b6720d72bf965 + (const toml::path &path) const noexcept + + + node_view + at_path + classtoml_1_1node__view.html + a59c5432fb77b50ef22098e17d4f956d5 + (std::string_view path) const noexcept + + + node_view + at_path + classtoml_1_1node__view.html + ab265c6f0304647bcd8074ad081f2bf17 + (const toml::path &path) const noexcept + + + node_view + operator[] + classtoml_1_1node__view.html + a35021e65758dc0be505916532b69a7d8 + (std::wstring_view key) const + + + node_view + at_path + classtoml_1_1node__view.html + a157c1eafb7bdf8f33398106017d1b20c + (std::wstring_view path) const + + + node_view + operator[] + classtoml_1_1node__view.html + a5d13b026efcd31812415ead30eeb69db + (size_t index) const noexcept + + + + toml::parse_error + classtoml_1_1parse__error.html + + std::string_view + description + classtoml_1_1parse__error.html + a5582e9d66f8aa3f6ef442c0a04d5282f + () const noexcept + + + const source_region & + source + classtoml_1_1parse__error.html + acaa5f85a7cc3f4c3c0596ed1dc4eae36 + () const noexcept + + + friend std::ostream & + operator<< + classtoml_1_1parse__error.html + a3708b936f4344b8ca8a0e6a0de70f687 + (std::ostream &lhs, const parse_error &rhs) + + + + toml::parse_result + classtoml_1_1parse__result.html + + + parse_result + classtoml_1_1parse__result.html + a49f926286dae7ed5a6298f5a3656548b + () noexcept + + + + parse_result + classtoml_1_1parse__result.html + a058b76f39fb5a971585538f2d4098ba5 + (parse_result &&res) noexcept + + + parse_result & + operator= + classtoml_1_1parse__result.html + aa0e17c1bc41e0904289d9d9ad63e4e92 + (parse_result &&rhs) noexcept + + + + ~parse_result + classtoml_1_1parse__result.html + ad9e22f09854af4c36860d61e0c0f25b1 + () noexcept + + + bool + succeeded + classtoml_1_1parse__result.html + ab5bfcd6ed385016395029bd69ad78a3c + () const noexcept + + + bool + failed + classtoml_1_1parse__result.html + a9097bc552007537f840602ceca00e99b + () const noexcept + + + + operator bool + classtoml_1_1parse__result.html + af66ea78a6dd881521ce865a372298e12 + () const noexcept + + + toml::table & + table + classtoml_1_1parse__result.html + acb584071a535b94531a5f282ca4289b9 + () &noexcept + + + toml::table && + table + classtoml_1_1parse__result.html + a456fd2dda64ba2e58fc7988539ad91fe + () &&noexcept + + + const toml::table & + table + classtoml_1_1parse__result.html + a2d6cc574acb39511d2a9cc70bda54ef2 + () const &noexcept + + + + operator toml::table & + classtoml_1_1parse__result.html + a5e14e22d4d68b27c11711a3319dc6bf9 + () noexcept + + + + operator toml::table && + classtoml_1_1parse__result.html + a8dca1600886954b38b99a4a4f9cb77c4 + () noexcept + + + + operator const toml::table & + classtoml_1_1parse__result.html + a9d059289edaf6c7fb71916b21a2f9c9f + () const noexcept + + + parse_error & + error + classtoml_1_1parse__result.html + a6081fd130634af79731868563f2dd68a + () &noexcept + + + parse_error && + error + classtoml_1_1parse__result.html + a9512ddb380d1beea922f97e77c7afb9b + () &&noexcept + + + const parse_error & + error + classtoml_1_1parse__result.html + a1affe5137dc6583fa0aa045c6210f1b2 + () const &noexcept + + + + operator parse_error & + classtoml_1_1parse__result.html + abc8a693cb538441b5974eff38c716669 + () noexcept + + + + operator parse_error && + classtoml_1_1parse__result.html + a9f70aa665d84aaf5f936dd27f6c95c4a + () noexcept + + + + operator const parse_error & + classtoml_1_1parse__result.html + a43df64e02443b2abfd9d2c86c5e4c30a + () const noexcept + + + node_view< node > + at_path + classtoml_1_1parse__result.html + ae76db7e0cb5e0cc476ec6e543e3eebca + (std::string_view path) noexcept + + + node_view< const node > + at_path + classtoml_1_1parse__result.html + aee03c4a72a18a6963b03b4177c512dcf + (std::string_view path) const noexcept + + + node_view< node > + at_path + classtoml_1_1parse__result.html + aa75dc8490b6d96bbdfbf1d411b66f5a9 + (const toml::path &path) noexcept + + + node_view< const node > + at_path + classtoml_1_1parse__result.html + a0c21ea5606879ce2aa9f893756b77a3d + (const toml::path &path) const noexcept + + + node_view< node > + at_path + classtoml_1_1parse__result.html + a21fe1e5619697c98cacebeb1067a0fdc + (std::wstring_view path) + + + node_view< const node > + at_path + classtoml_1_1parse__result.html + a586c9505afa2cf5c42557bfdce76cf4b + (std::wstring_view path) const + + + node_view< node > + operator[] + classtoml_1_1parse__result.html + abd1b788e9d4114a8503bf414b9c8044f + (const toml::path &path) noexcept + + + node_view< const node > + operator[] + classtoml_1_1parse__result.html + a2ebc18f8d1f760efc8ed7e25ac041fd5 + (const toml::path &path) const noexcept + + + node_view< node > + operator[] + classtoml_1_1parse__result.html + a58e09a417a668227d255160bbe4c3466 + (std::string_view key) noexcept + + + node_view< const node > + operator[] + classtoml_1_1parse__result.html + a071ff3d61afcaae68dc1b944ab50b9ea + (std::string_view key) const noexcept + + + node_view< node > + operator[] + classtoml_1_1parse__result.html + a9bc1371acd5a58d0c2ca5b35302d9318 + (std::wstring_view key) + + + node_view< const node > + operator[] + classtoml_1_1parse__result.html + ad50e34eafa9ae387e6444d2cb93c3b90 + (std::wstring_view key) const + + + friend std::ostream & + operator<< + classtoml_1_1parse__result.html + a24e2d0cb20f183774c91ca48e9033aa5 + (std::ostream &os, const parse_result &result) + + + table_iterator + iterator + classtoml_1_1parse__result.html + aae503c11e9f9162de5cbef5e2c9f4863 + + + + const_table_iterator + const_iterator + classtoml_1_1parse__result.html + abf92ffb48c1f4d0f129f4032708d4ab0 + + + + table_iterator + begin + classtoml_1_1parse__result.html + a3f641e942f1518dffad6fcc7dc13893d + () noexcept + + + const_table_iterator + begin + classtoml_1_1parse__result.html + a910f13933a0547a2920404287829781f + () const noexcept + + + const_table_iterator + cbegin + classtoml_1_1parse__result.html + af58212d8a367e5c1d38eb5d58708754b + () const noexcept + + + table_iterator + end + classtoml_1_1parse__result.html + a336d398e329f08195d714ff02fdffca6 + () noexcept + + + const_table_iterator + end + classtoml_1_1parse__result.html + a154d32bca3ea50dc5030372675a85a65 + () const noexcept + + + const_table_iterator + cend + classtoml_1_1parse__result.html + afa4f821ad60ceb06327cec6b42b05071 + () const noexcept + + + bool + succeeded + classtoml_1_1parse__result.html + ab5bfcd6ed385016395029bd69ad78a3c + () const noexcept + + + bool + failed + classtoml_1_1parse__result.html + a9097bc552007537f840602ceca00e99b + () const noexcept + + + + operator bool + classtoml_1_1parse__result.html + af66ea78a6dd881521ce865a372298e12 + () const noexcept + + + toml::table & + table + classtoml_1_1parse__result.html + acb584071a535b94531a5f282ca4289b9 + () &noexcept + + + toml::table && + table + classtoml_1_1parse__result.html + a456fd2dda64ba2e58fc7988539ad91fe + () &&noexcept + + + const toml::table & + table + classtoml_1_1parse__result.html + a2d6cc574acb39511d2a9cc70bda54ef2 + () const &noexcept + + + + operator toml::table & + classtoml_1_1parse__result.html + a5e14e22d4d68b27c11711a3319dc6bf9 + () noexcept + + + + operator toml::table && + classtoml_1_1parse__result.html + a8dca1600886954b38b99a4a4f9cb77c4 + () noexcept + + + + operator const toml::table & + classtoml_1_1parse__result.html + a9d059289edaf6c7fb71916b21a2f9c9f + () const noexcept + + + parse_error & + error + classtoml_1_1parse__result.html + a6081fd130634af79731868563f2dd68a + () &noexcept + + + parse_error && + error + classtoml_1_1parse__result.html + a9512ddb380d1beea922f97e77c7afb9b + () &&noexcept + + + const parse_error & + error + classtoml_1_1parse__result.html + a1affe5137dc6583fa0aa045c6210f1b2 + () const &noexcept + + + + operator parse_error & + classtoml_1_1parse__result.html + abc8a693cb538441b5974eff38c716669 + () noexcept + + + + operator parse_error && + classtoml_1_1parse__result.html + a9f70aa665d84aaf5f936dd27f6c95c4a + () noexcept + + + + operator const parse_error & + classtoml_1_1parse__result.html + a43df64e02443b2abfd9d2c86c5e4c30a + () const noexcept + + + node_view< node > + at_path + classtoml_1_1parse__result.html + ae76db7e0cb5e0cc476ec6e543e3eebca + (std::string_view path) noexcept + + + node_view< const node > + at_path + classtoml_1_1parse__result.html + aee03c4a72a18a6963b03b4177c512dcf + (std::string_view path) const noexcept + + + node_view< node > + at_path + classtoml_1_1parse__result.html + aa75dc8490b6d96bbdfbf1d411b66f5a9 + (const toml::path &path) noexcept + + + node_view< const node > + at_path + classtoml_1_1parse__result.html + a0c21ea5606879ce2aa9f893756b77a3d + (const toml::path &path) const noexcept + + + node_view< node > + at_path + classtoml_1_1parse__result.html + a21fe1e5619697c98cacebeb1067a0fdc + (std::wstring_view path) + + + node_view< const node > + at_path + classtoml_1_1parse__result.html + a586c9505afa2cf5c42557bfdce76cf4b + (std::wstring_view path) const + + + node_view< node > + operator[] + classtoml_1_1parse__result.html + abd1b788e9d4114a8503bf414b9c8044f + (const toml::path &path) noexcept + + + node_view< const node > + operator[] + classtoml_1_1parse__result.html + a2ebc18f8d1f760efc8ed7e25ac041fd5 + (const toml::path &path) const noexcept + + + node_view< node > + operator[] + classtoml_1_1parse__result.html + a58e09a417a668227d255160bbe4c3466 + (std::string_view key) noexcept + + + node_view< const node > + operator[] + classtoml_1_1parse__result.html + a071ff3d61afcaae68dc1b944ab50b9ea + (std::string_view key) const noexcept + + + node_view< node > + operator[] + classtoml_1_1parse__result.html + a9bc1371acd5a58d0c2ca5b35302d9318 + (std::wstring_view key) + + + node_view< const node > + operator[] + classtoml_1_1parse__result.html + ad50e34eafa9ae387e6444d2cb93c3b90 + (std::wstring_view key) const + + + + toml::path + classtoml_1_1path.html + + + path + classtoml_1_1path.html + accc6964f93bc7990f38263894d4daae6 + () noexcept=default + + + + path + classtoml_1_1path.html + aabc43d93056c759d389085b32935ec2a + (std::string_view) + + + + path + classtoml_1_1path.html + a4f340e37cfb32ca1fdfebf24e5b842b4 + (std::wstring_view) + + + + ~path + classtoml_1_1path.html + ad585b73db97202e2b4841a64773046e5 + () noexcept=default + + + + path + classtoml_1_1path.html + a3b120d3a25c2f3caffaba984ecf19bdc + (const path &)=default + + + + path + classtoml_1_1path.html + a4b65042b43757e2d509d1563f4ee5342 + (path &&) noexcept=default + + + size_t + size + classtoml_1_1path.html + a129b1539ef880b97468f26ac53538120 + () const noexcept + + + + operator bool + classtoml_1_1path.html + ac482e0b0187449abdbaf74830e0f1e48 + () const noexcept + + + bool + empty + classtoml_1_1path.html + af22c11324f36da827d4256b904d6e421 + () const noexcept + + + path_component & + operator[] + classtoml_1_1path.html + a494db7a9a8c230fac3c7243309168372 + (size_t index) noexcept + + + const path_component & + operator[] + classtoml_1_1path.html + aeadc566b18975d93cee7b69990625242 + (size_t index) const noexcept + + + path & + operator= + classtoml_1_1path.html + a5d1d199eeeb01a6fd700a3536bb6f21e + (const path &)=default + + + path & + operator= + classtoml_1_1path.html + a2405cc1dccd0507b80a923e6f49b4799 + (path &&) noexcept=default + + + path & + operator= + classtoml_1_1path.html + a42183133bdd2e1cde0105ad0741a8c17 + (std::string_view) + + + path & + operator= + classtoml_1_1path.html + a71a4a525dd2e33946ad6d6809fceba10 + (std::wstring_view) + + + path & + assign + classtoml_1_1path.html + a5782774d7ccc50c93b8773a4e7fcf6f0 + (const path &p) + + + path & + assign + classtoml_1_1path.html + aabc69545a1e9f7aad045c61ada0ffdec + (path &&p) noexcept + + + path & + assign + classtoml_1_1path.html + ad1adfd53833c333b63476554a8218167 + (std::string_view str) + + + path & + assign + classtoml_1_1path.html + a75b4239f7901d2979e7a828794cf11c1 + (std::wstring_view str) + + + path & + operator+= + classtoml_1_1path.html + ab68331642a9d309aed27776d02407319 + (const path &) + + + path & + operator+= + classtoml_1_1path.html + aa2b48fb15e3d5843b19d71118536752d + (path &&) + + + path & + operator+= + classtoml_1_1path.html + a94c55b5261e57914c2adf1a8ccdf95d8 + (std::string_view) + + + path & + operator+= + classtoml_1_1path.html + a2c20266ca7dea93506cf4225ede09003 + (std::wstring_view) + + + path & + append + classtoml_1_1path.html + a59e08a1a6d87f46b7a6605c164b8705f + (const path &p) + + + path & + append + classtoml_1_1path.html + ad6908de519364f52046dc5d6b3636b19 + (path &&p) + + + path & + append + classtoml_1_1path.html + ac1977cc290a8c06b55352fc609d2f97c + (std::string_view str) + + + path & + append + classtoml_1_1path.html + af682a3bbac05c38e5d60b37c5f6924a9 + (std::wstring_view str) + + + path & + prepend + classtoml_1_1path.html + a387fdf6712f4280e6295e8f3f73620d6 + (const path &) + + + path & + prepend + classtoml_1_1path.html + ac734db72f7030aa206ab39a8a8b40a90 + (path &&) + + + path & + prepend + classtoml_1_1path.html + af3c7f3160ae2c2f9fb8a7d89f3206f08 + (std::string_view) + + + path & + prepend + classtoml_1_1path.html + ac1c3fe68aaf1e77f2e959259f32d175d + (std::wstring_view) + + + void + clear + classtoml_1_1path.html + a109a0d82839904cd0808388023305dc4 + () noexcept + + + path & + truncate + classtoml_1_1path.html + a4fb7f73d84aa72bd8f28532b1e95068a + (size_t n) + + + path + truncated + classtoml_1_1path.html + a2f4f4b86e0a06edd27668dc12410e86b + (size_t n) const + + + path + parent + classtoml_1_1path.html + a0efb28707c4366481ca6e549c1d31a78 + () const + + + path + leaf + classtoml_1_1path.html + ace0a076c96fb0b46828de5d4f59ade5d + (size_t n=1) const + + + path + subpath + classtoml_1_1path.html + afc5f7494ca4cd2a574619d7ffb080cd3 + (const_iterator start, const_iterator end) const + + + path + subpath + classtoml_1_1path.html + aa7e62837fc83f9a78e942c5f4105b8f0 + (size_t start, size_t length) const + + + friend path + operator+ + classtoml_1_1path.html + a8595d795b316e2ec04e2257cecd2aa7c + (const path &lhs, const path &rhs) + + + friend path + operator+ + classtoml_1_1path.html + aa752dbb500cd4fa6efe4195266852ada + (const path &lhs, std::string_view rhs) + + + friend path + operator+ + classtoml_1_1path.html + a238f3a1d147825f4596718983ff4eea2 + (std::string_view lhs, const path &rhs) + + + friend path + operator+ + classtoml_1_1path.html + af6cb0b10895f5308e1b02aec607cb5a0 + (const path &lhs, std::wstring_view rhs) + + + friend path + operator+ + classtoml_1_1path.html + ae4c30c186c418ed4e7c9cc0ce1c2d167 + (std::wstring_view lhs, const path &rhs) + + + friend bool + operator== + classtoml_1_1path.html + a5d23cf873bac38cf71970fa3710a8cc2 + (const path &lhs, const path &rhs) noexcept + + + friend bool + operator!= + classtoml_1_1path.html + a7c09a0a727d62a8a0526df213bf609f2 + (const path &lhs, const path &rhs) noexcept + + + friend bool + operator== + classtoml_1_1path.html + a85f0a0111e2b80bebe29d4ce0085e4a6 + (const path &lhs, std::string_view rhs) + + + friend bool + operator== + classtoml_1_1path.html + acaa57e919274df170a42fb906fe2b5a4 + (std::string_view lhs, const path &rhs) + + + friend bool + operator!= + classtoml_1_1path.html + a4aac6128cf3096aad26b0b0a96c2146b + (const path &lhs, std::string_view rhs) + + + friend bool + operator!= + classtoml_1_1path.html + ac52129303944b45af80b81ad7661f0b9 + (std::string_view lhs, const path &rhs) + + + friend bool + operator== + classtoml_1_1path.html + a87379c0582c782cff4740608e0343158 + (const path &lhs, std::wstring_view rhs) + + + friend bool + operator== + classtoml_1_1path.html + a2149371c079844c9891a92fa74a89d38 + (std::wstring_view lhs, const path &rhs) + + + friend bool + operator!= + classtoml_1_1path.html + a6151f164638727d9c4df34087ec43044 + (const path &lhs, std::wstring_view rhs) + + + friend bool + operator!= + classtoml_1_1path.html + a6c525194daf7a573eae71f4b9e33ee58 + (std::wstring_view lhs, const path &rhs) + + + std::vector< path_component >::iterator + iterator + classtoml_1_1path.html + ad752d8838221c179af93c94d8a7ed3d2 + + + + std::vector< path_component >::const_iterator + const_iterator + classtoml_1_1path.html + aaed31ecb434c644dc316042b744a6a59 + + + + iterator + begin + classtoml_1_1path.html + a4d44a1165c0b5dc1b3171db952b56afd + () noexcept + + + iterator + end + classtoml_1_1path.html + a884ed05a1f4ad2a2d4fe9133eb72a391 + () noexcept + + + const_iterator + begin + classtoml_1_1path.html + ad757a451dd6902f26a8d2ad3c3f15194 + () const noexcept + + + const_iterator + end + classtoml_1_1path.html + add0dbda00d37c1838b55de73f31c2dc6 + () const noexcept + + + const_iterator + cbegin + classtoml_1_1path.html + adc73ea43ee4542041c58186691f665e8 + () const noexcept + + + const_iterator + cend + classtoml_1_1path.html + aae5ffcde5edfbe8ae33cadafdac34bfa + () const noexcept + + + path & + operator= + classtoml_1_1path.html + a5d1d199eeeb01a6fd700a3536bb6f21e + (const path &)=default + + + path & + operator= + classtoml_1_1path.html + a2405cc1dccd0507b80a923e6f49b4799 + (path &&) noexcept=default + + + path & + operator= + classtoml_1_1path.html + a42183133bdd2e1cde0105ad0741a8c17 + (std::string_view) + + + path & + operator= + classtoml_1_1path.html + a71a4a525dd2e33946ad6d6809fceba10 + (std::wstring_view) + + + path & + assign + classtoml_1_1path.html + a5782774d7ccc50c93b8773a4e7fcf6f0 + (const path &p) + + + path & + assign + classtoml_1_1path.html + aabc69545a1e9f7aad045c61ada0ffdec + (path &&p) noexcept + + + path & + assign + classtoml_1_1path.html + ad1adfd53833c333b63476554a8218167 + (std::string_view str) + + + path & + assign + classtoml_1_1path.html + a75b4239f7901d2979e7a828794cf11c1 + (std::wstring_view str) + + + path & + operator+= + classtoml_1_1path.html + ab68331642a9d309aed27776d02407319 + (const path &) + + + path & + operator+= + classtoml_1_1path.html + aa2b48fb15e3d5843b19d71118536752d + (path &&) + + + path & + operator+= + classtoml_1_1path.html + a94c55b5261e57914c2adf1a8ccdf95d8 + (std::string_view) + + + path & + operator+= + classtoml_1_1path.html + a2c20266ca7dea93506cf4225ede09003 + (std::wstring_view) + + + path & + append + classtoml_1_1path.html + a59e08a1a6d87f46b7a6605c164b8705f + (const path &p) + + + path & + append + classtoml_1_1path.html + ad6908de519364f52046dc5d6b3636b19 + (path &&p) + + + path & + append + classtoml_1_1path.html + ac1977cc290a8c06b55352fc609d2f97c + (std::string_view str) + + + path & + append + classtoml_1_1path.html + af682a3bbac05c38e5d60b37c5f6924a9 + (std::wstring_view str) + + + path & + prepend + classtoml_1_1path.html + a387fdf6712f4280e6295e8f3f73620d6 + (const path &) + + + path & + prepend + classtoml_1_1path.html + ac734db72f7030aa206ab39a8a8b40a90 + (path &&) + + + path & + prepend + classtoml_1_1path.html + af3c7f3160ae2c2f9fb8a7d89f3206f08 + (std::string_view) + + + path & + prepend + classtoml_1_1path.html + ac1c3fe68aaf1e77f2e959259f32d175d + (std::wstring_view) + + + std::string + str + classtoml_1_1path.html + a8d70d707cbd38ffc03fcb3b6f81069fa + () const + + + + operator std::string + classtoml_1_1path.html + a48e8847229969e912855c71a8c59c094 + () const + + + std::wstring + wide_str + classtoml_1_1path.html + a0a824034b0ef08cb2e497af21858a574 + () const + + + + operator std::wstring + classtoml_1_1path.html + ac77a8dffca78bd3091b7db123837097b + () const + + + friend std::ostream & + operator<< + classtoml_1_1path.html + a0c95549719afaf6e62a641c2bdc33c6e + (std::ostream &os, const path &rhs) + + + void + clear + classtoml_1_1path.html + a109a0d82839904cd0808388023305dc4 + () noexcept + + + path & + truncate + classtoml_1_1path.html + a4fb7f73d84aa72bd8f28532b1e95068a + (size_t n) + + + path + truncated + classtoml_1_1path.html + a2f4f4b86e0a06edd27668dc12410e86b + (size_t n) const + + + path + parent + classtoml_1_1path.html + a0efb28707c4366481ca6e549c1d31a78 + () const + + + path + leaf + classtoml_1_1path.html + ace0a076c96fb0b46828de5d4f59ade5d + (size_t n=1) const + + + path + subpath + classtoml_1_1path.html + afc5f7494ca4cd2a574619d7ffb080cd3 + (const_iterator start, const_iterator end) const + + + path + subpath + classtoml_1_1path.html + aa7e62837fc83f9a78e942c5f4105b8f0 + (size_t start, size_t length) const + + + friend path + operator+ + classtoml_1_1path.html + a8595d795b316e2ec04e2257cecd2aa7c + (const path &lhs, const path &rhs) + + + friend path + operator+ + classtoml_1_1path.html + aa752dbb500cd4fa6efe4195266852ada + (const path &lhs, std::string_view rhs) + + + friend path + operator+ + classtoml_1_1path.html + a238f3a1d147825f4596718983ff4eea2 + (std::string_view lhs, const path &rhs) + + + friend path + operator+ + classtoml_1_1path.html + af6cb0b10895f5308e1b02aec607cb5a0 + (const path &lhs, std::wstring_view rhs) + + + friend path + operator+ + classtoml_1_1path.html + ae4c30c186c418ed4e7c9cc0ce1c2d167 + (std::wstring_view lhs, const path &rhs) + + + friend bool + operator== + classtoml_1_1path.html + a5d23cf873bac38cf71970fa3710a8cc2 + (const path &lhs, const path &rhs) noexcept + + + friend bool + operator!= + classtoml_1_1path.html + a7c09a0a727d62a8a0526df213bf609f2 + (const path &lhs, const path &rhs) noexcept + + + friend bool + operator== + classtoml_1_1path.html + a85f0a0111e2b80bebe29d4ce0085e4a6 + (const path &lhs, std::string_view rhs) + + + friend bool + operator== + classtoml_1_1path.html + acaa57e919274df170a42fb906fe2b5a4 + (std::string_view lhs, const path &rhs) + + + friend bool + operator!= + classtoml_1_1path.html + a4aac6128cf3096aad26b0b0a96c2146b + (const path &lhs, std::string_view rhs) + + + friend bool + operator!= + classtoml_1_1path.html + ac52129303944b45af80b81ad7661f0b9 + (std::string_view lhs, const path &rhs) + + + friend bool + operator== + classtoml_1_1path.html + a87379c0582c782cff4740608e0343158 + (const path &lhs, std::wstring_view rhs) + + + friend bool + operator== + classtoml_1_1path.html + a2149371c079844c9891a92fa74a89d38 + (std::wstring_view lhs, const path &rhs) + + + friend bool + operator!= + classtoml_1_1path.html + a6151f164638727d9c4df34087ec43044 + (const path &lhs, std::wstring_view rhs) + + + friend bool + operator!= + classtoml_1_1path.html + a6c525194daf7a573eae71f4b9e33ee58 + (std::wstring_view lhs, const path &rhs) + + + + toml::path_component + classtoml_1_1path__component.html + + + path_component + classtoml_1_1path__component.html + a71021caeadfba986add66776fde75afc + () + + + + path_component + classtoml_1_1path__component.html + ae8588444d8e20eedda3c7c9de020211d + (size_t index) noexcept + + + + path_component + classtoml_1_1path__component.html + a0a43eb66501060d7904e92ce83992231 + (std::string_view key) + + + + path_component + classtoml_1_1path__component.html + ae5cabcb9ca01c6fe1a523ebaf27b8203 + (std::wstring_view key) + + + + path_component + classtoml_1_1path__component.html + a7b6ed29a247bfb453e67e84c4000ad32 + (const path_component &pc) + + + + path_component + classtoml_1_1path__component.html + a8510261dadffa958e0dd334fc442bff2 + (path_component &&pc) noexcept + + + path_component & + operator= + classtoml_1_1path__component.html + ab4411fc0fa822591ef4adf0a35d16518 + (const path_component &rhs) + + + path_component & + operator= + classtoml_1_1path__component.html + a500c0fe2100f162f01b6b91165a1fd19 + (path_component &&rhs) noexcept + + + path_component & + operator= + classtoml_1_1path__component.html + a176bb0d528b4b60010f013724183b12d + (size_t new_index) noexcept + + + path_component & + operator= + classtoml_1_1path__component.html + a14fcb83942dc34d3fb3d035eb7dc35ed + (std::string_view new_key) + + + path_component & + operator= + classtoml_1_1path__component.html + af2031c3540a29e3282339512f11fc42d + (std::wstring_view new_key) + + + + ~path_component + classtoml_1_1path__component.html + a9023bc344bbf001fb54661491d52ed21 + () noexcept + + + path_component_type + type + classtoml_1_1path__component.html + a59858d261f3e4e9e67d83835163312d5 + () const noexcept + + + size_t + index + classtoml_1_1path__component.html + aa2c540242b230123321196a87267fd58 + () const noexcept + + + + operator size_t + classtoml_1_1path__component.html + a0776d976060500ceba2491dbcffa04e8 + () const noexcept + + + const std::string & + key + classtoml_1_1path__component.html + aee2170006b043b32344c841d88c94519 + () const noexcept + + + + operator const std::string & + classtoml_1_1path__component.html + aa6f05d78ce148082e85ac7f648ef1b6a + () const noexcept + + + friend bool + operator== + classtoml_1_1path__component.html + a9aef313f246e34a691c7e7475a62f3dd + (const path_component &lhs, const path_component &rhs) noexcept + + + friend bool + operator!= + classtoml_1_1path__component.html + a6ebe7d221b72eff60b9570c9e87aaa9a + (const path_component &lhs, const path_component &rhs) noexcept + + + size_t + index + classtoml_1_1path__component.html + aa2c540242b230123321196a87267fd58 + () const noexcept + + + + operator size_t + classtoml_1_1path__component.html + a0776d976060500ceba2491dbcffa04e8 + () const noexcept + + + const std::string & + key + classtoml_1_1path__component.html + aee2170006b043b32344c841d88c94519 + () const noexcept + + + + operator const std::string & + classtoml_1_1path__component.html + aa6f05d78ce148082e85ac7f648ef1b6a + () const noexcept + + + friend bool + operator== + classtoml_1_1path__component.html + a9aef313f246e34a691c7e7475a62f3dd + (const path_component &lhs, const path_component &rhs) noexcept + + + friend bool + operator!= + classtoml_1_1path__component.html + a6ebe7d221b72eff60b9570c9e87aaa9a + (const path_component &lhs, const path_component &rhs) noexcept + + + + toml::source_position + structtoml_1_1source__position.html + + constexpr + operator bool + structtoml_1_1source__position.html + accba2f34a07d8b453b8f2f6baf2d73cf + () const noexcept + + + source_index + line + structtoml_1_1source__position.html + ab21cac59798d70e25fe97ac7433763cc + + + + source_index + column + structtoml_1_1source__position.html + a1ca6d0db40c69d2784703011f7cf5434 + + + + friend constexpr bool + operator== + structtoml_1_1source__position.html + ad4600cc2d6ede282c93a8bdc5bb7a2fe + (const source_position &lhs, const source_position &rhs) noexcept + + + friend constexpr bool + operator!= + structtoml_1_1source__position.html + a8c3d253eb50b2b908cf1a7514a1d1dcb + (const source_position &lhs, const source_position &rhs) noexcept + + + friend constexpr bool + operator< + structtoml_1_1source__position.html + a1c7ae741097e2fba03cceb36b7aed973 + (const source_position &lhs, const source_position &rhs) noexcept + + + friend constexpr bool + operator<= + structtoml_1_1source__position.html + a1f5525a304df6157cd0f41378c0773e2 + (const source_position &lhs, const source_position &rhs) noexcept + + + friend constexpr bool + operator> + structtoml_1_1source__position.html + a47e81424785ec01a50c012ca66a66136 + (const source_position &lhs, const source_position &rhs) noexcept + + + friend constexpr bool + operator>= + structtoml_1_1source__position.html + af8fc1d83087df475b7bb0209744a9c3d + (const source_position &lhs, const source_position &rhs) noexcept + + + friend std::ostream & + operator<< + structtoml_1_1source__position.html + adff6ba2a042bbaa4be4eaf88c4b58062 + (std::ostream &lhs, const source_position &rhs) + + + + toml::source_region + structtoml_1_1source__region.html + + optional< std::wstring > + wide_path + structtoml_1_1source__region.html + a4b75bd6d1d71a03b093661ad3bdd9220 + () const + + + source_position + begin + structtoml_1_1source__region.html + ab36a5db15201864a13fb628f331196d0 + + + + source_position + end + structtoml_1_1source__region.html + a054940b42dcf83391697ec2b8690531d + + + + source_path_ptr + path + structtoml_1_1source__region.html + a25fc23f579edb8afc0818c013c5ac5d7 + + + + friend std::ostream & + operator<< + structtoml_1_1source__region.html + a0c599ab0b1f64a1ba95a0a90b95888fa + (std::ostream &lhs, const source_region &rhs) + + + + toml::table + classtoml_1_1table.html + toml::node + + + table + classtoml_1_1table.html + a823f0d3385d2d8d8320a72f78c677a35 + () noexcept + + + + table + classtoml_1_1table.html + a8c06941e05e31602d46f26ba84d14b23 + (const table &) + + + + table + classtoml_1_1table.html + ab47a76ab242afa13f1a74e5e2bcded44 + (table &&other) noexcept + + + + table + classtoml_1_1table.html + a7fdc52c0aa1bd67ae6738f029787bc2f + (std::initializer_list< impl::table_init_pair > kvps) + + + table & + operator= + classtoml_1_1table.html + af9c04317296cdda78c97e4cc92463cd6 + (const table &) + + + table & + operator= + classtoml_1_1table.html + ab39996f51aad45970e8bcb34883710df + (table &&rhs) noexcept + + + node_type + type + classtoml_1_1table.html + a03d15150652176b1714b70fb035cdeb0 + () const noexcept final + + + bool + is_homogeneous + classtoml_1_1table.html + abe1cc42533dc108b2062de2666471faa + (node_type ntype) const noexcept final + + + bool + is_homogeneous + classtoml_1_1table.html + af1a2f48edbb3afa9363c392595830846 + (node_type ntype, node *&first_nonmatch) noexcept final + + + bool + is_homogeneous + classtoml_1_1table.html + a8a0a8d4e44883a2467798dad07ddcb43 + (node_type ntype, const node *&first_nonmatch) const noexcept final + + + bool + is_table + classtoml_1_1table.html + a2cdfa1fd3e9d5c64cb5d4089a1d4344e + () const noexcept final + + + bool + is_array + classtoml_1_1table.html + a56d186a17d8e24bfa90fa6578e7b3872 + () const noexcept final + + + bool + is_array_of_tables + classtoml_1_1table.html + a52e6d4f667e464a49ac4928c8ed31fec + () const noexcept final + + + bool + is_value + classtoml_1_1table.html + aae222bf8089461dd4954311d1e403386 + () const noexcept final + + + bool + is_string + classtoml_1_1table.html + a6bf5f3666709891c5c6beba70835604a + () const noexcept final + + + bool + is_integer + classtoml_1_1table.html + a1a8b05c8de343cff20b47189d309862b + () const noexcept final + + + bool + is_floating_point + classtoml_1_1table.html + a6eafaab181b8ce2632b5c0556941fb76 + () const noexcept final + + + bool + is_number + classtoml_1_1table.html + a89392000e892868540f0513f4be45ba2 + () const noexcept final + + + bool + is_boolean + classtoml_1_1table.html + a60c4177e5d411c2f8be30f0b99b68189 + () const noexcept final + + + bool + is_date + classtoml_1_1table.html + a3052f7b2bce6add8ef50ea77c59338c4 + () const noexcept final + + + bool + is_time + classtoml_1_1table.html + a1fc645d975ce2b07348e1e9f8029d0c1 + () const noexcept final + + + bool + is_date_time + classtoml_1_1table.html + a38d82efe9d6fc89b5140e5abdde9127d + () const noexcept final + + + table * + as_table + classtoml_1_1table.html + ac44e9b5d6a35e7e01164eedd98a84a53 + () noexcept final + + + array * + as_array + classtoml_1_1table.html + af8402379f1520f01668c1bfab1c9e660 + () noexcept final + + + toml::value< std::string > * + as_string + classtoml_1_1table.html + a9b53cf40866c96e9d5000db9f1aa0ca8 + () noexcept final + + + toml::value< int64_t > * + as_integer + classtoml_1_1table.html + a8470cf6808ee2a6120601858f4850fa0 + () noexcept final + + + toml::value< double > * + as_floating_point + classtoml_1_1table.html + acaa1f4abda97d8d94e0678c16b87574a + () noexcept final + + + toml::value< bool > * + as_boolean + classtoml_1_1table.html + a2c0385baf8601fe815d5539d9c592dd4 + () noexcept final + + + toml::value< date > * + as_date + classtoml_1_1table.html + ac8d60cb31793907c8a4efaa3e0e3b44f + () noexcept final + + + toml::value< time > * + as_time + classtoml_1_1table.html + afd7e0ee6d0a60cf6225900e2df18d5e5 + () noexcept final + + + toml::value< date_time > * + as_date_time + classtoml_1_1table.html + a3f4e748afe3f126227c90e27723d531b + () noexcept final + + + const table * + as_table + classtoml_1_1table.html + a420935d7a61a6f6f4ba3dc36c0c899f0 + () const noexcept final + + + const array * + as_array + classtoml_1_1table.html + ab52ddb2d83eeda0e71dfbfea90166f0d + () const noexcept final + + + const toml::value< std::string > * + as_string + classtoml_1_1table.html + acb3169face92245c2bc1942812402b0f + () const noexcept final + + + const toml::value< int64_t > * + as_integer + classtoml_1_1table.html + a95db58f9e4aa7dbd2cd83805bf4a9c09 + () const noexcept final + + + const toml::value< double > * + as_floating_point + classtoml_1_1table.html + adf84acb6fc6d43f39dc0bc41184d6eba + () const noexcept final + + + const toml::value< bool > * + as_boolean + classtoml_1_1table.html + a77583d7a9ba51f5d32258e71cb342a95 + () const noexcept final + + + const toml::value< date > * + as_date + classtoml_1_1table.html + a8a7e47edb8437b3323603d18b9bc15e6 + () const noexcept final + + + const toml::value< time > * + as_time + classtoml_1_1table.html + affe7c572724a2bf20e7f7fa24310db68 + () const noexcept final + + + const toml::value< date_time > * + as_date_time + classtoml_1_1table.html + adc229e82c234c3b791c5b36be7cb679d + () const noexcept final + + + bool + is_inline + classtoml_1_1table.html + a53be1b93aa90608ed378323df835a2f3 + () const noexcept + + + void + is_inline + classtoml_1_1table.html + a8e797a683ff2bacd14d7e7461ecd2780 + (bool val) noexcept + + + node * + get + classtoml_1_1table.html + afb43a06fdd11582f15761b120aa47fb4 + (std::string_view key) noexcept + + + const node * + get + classtoml_1_1table.html + a1deab1c0a2bac487aab72d3c8600731a + (std::string_view key) const noexcept + + + node * + get + classtoml_1_1table.html + ae55cdab18b2ffbc4e9595146c381f33c + (std::wstring_view key) + + + const node * + get + classtoml_1_1table.html + acda4b270e990e5050c17d1adc1103ca1 + (std::wstring_view key) const + + + impl::wrap_node< T > * + get_as + classtoml_1_1table.html + aeb22667ff65f38e307f17858e83334f2 + (std::string_view key) noexcept + + + const impl::wrap_node< T > * + get_as + classtoml_1_1table.html + a0e0601b96ec314050183d122224320b1 + (std::string_view key) const noexcept + + + impl::wrap_node< T > * + get_as + classtoml_1_1table.html + af7c8a036c579652f5121420940352cb7 + (std::wstring_view key) + + + const impl::wrap_node< T > * + get_as + classtoml_1_1table.html + a19f80eb38716bd2aa9825db44038bc4e + (std::wstring_view key) const + + + node & + at + classtoml_1_1table.html + a09e2c0437700b2a4e5c031e046a07b90 + (std::string_view key) + + + const node & + at + classtoml_1_1table.html + acc57a41e07010edc8b351df267dc6fd0 + (std::string_view key) const + + + node & + at + classtoml_1_1table.html + afcecd9ea2e9c96c34def4471a2d689b4 + (std::wstring_view key) + + + const node & + at + classtoml_1_1table.html + a896761c1925d5ed3bdd1d92446b3d655 + (std::wstring_view key) const + + + bool + empty + classtoml_1_1table.html + a554f495f6f2ebc993be1bd0379447051 + () const noexcept + + + size_t + size + classtoml_1_1table.html + ad7c4105854cc817bf6e781fa7fb1b6d6 + () const noexcept + + + iterator + lower_bound + classtoml_1_1table.html + acc5180d0f3b1a78f45962f246a5d9605 + (std::string_view key) noexcept + + + const_iterator + lower_bound + classtoml_1_1table.html + a3b678ac60d00790308b96f5e51da4274 + (std::string_view key) const noexcept + + + iterator + lower_bound + classtoml_1_1table.html + aaaffca1b5d53d7b72d2f29c14f06d75e + (std::wstring_view key) + + + const_iterator + lower_bound + classtoml_1_1table.html + a2799383d484028ef5f466f8d1d34f315 + (std::wstring_view key) const + + + iterator + find + classtoml_1_1table.html + a087ecb9d9fd4562d79f83341f0c643c0 + (std::string_view key) noexcept + + + const_iterator + find + classtoml_1_1table.html + a65a894481bab5dd2bd00690931ed2692 + (std::string_view key) const noexcept + + + bool + contains + classtoml_1_1table.html + aacf6efa6e7865211f7a1283f79a88ee0 + (std::string_view key) const noexcept + + + iterator + find + classtoml_1_1table.html + ab1f12a827212d23ee0895fda92a5113c + (std::wstring_view key) + + + const_iterator + find + classtoml_1_1table.html + a25f8f4a8c4672042d75b810856bd676f + (std::wstring_view key) const + + + bool + contains + classtoml_1_1table.html + a7bec8d45353adeac918668a9fc5cb6a2 + (std::wstring_view key) const + + + iterator + erase + classtoml_1_1table.html + a1a90984876ccdd03aaa9e0f9801a839f + (iterator pos) noexcept + + + iterator + erase + classtoml_1_1table.html + a4dafb4ae116d92add973e5f27f880a9d + (const_iterator pos) noexcept + + + iterator + erase + classtoml_1_1table.html + a59f4dd9e42b73c9c1ec43134bef7e113 + (const_iterator begin, const_iterator end) noexcept + + + size_t + erase + classtoml_1_1table.html + ac6064df3f6f23b022884390a9963c1bc + (std::string_view key) noexcept + + + size_t + erase + classtoml_1_1table.html + add732807ee5e8fde81ceaa33acbaa7c6 + (std::wstring_view key) + + + table & + prune + classtoml_1_1table.html + a21d4876e86a9ecec65592de2ff268c6d + (bool recursive=true) &noexcept + + + table && + prune + classtoml_1_1table.html + a0d9ea14bacd9d8c945dd9aaca7463aa8 + (bool recursive=true) &&noexcept + + + void + clear + classtoml_1_1table.html + aa710f85c588a1b00c3192d1553de4eef + () noexcept + + + iterator + emplace_hint + classtoml_1_1table.html + a0d2378b5d13432bf8e325c388c650189 + (const_iterator hint, KeyType &&key, ValueArgs &&... args) + + + std::pair< iterator, bool > + insert + classtoml_1_1table.html + a13253524853457ea75b7e03463d32a4a + (KeyType &&key, ValueType &&val, value_flags flags=preserve_source_value_flags) + + + void + insert + classtoml_1_1table.html + a331eb6de04d95c3f76bf64e6f84d4ad6 + (Iter begin, Iter end, value_flags flags=preserve_source_value_flags) + + + std::pair< iterator, bool > + insert_or_assign + classtoml_1_1table.html + ad4e7f2d1251bd46e914229440cb88752 + (KeyType &&key, ValueType &&val, value_flags flags=preserve_source_value_flags) + + + std::pair< iterator, bool > + emplace + classtoml_1_1table.html + adc85e5b7fead18689270e5d106d5c7bd + (KeyType &&key, ValueArgs &&... args) + + + node_view< node > + operator[] + classtoml_1_1table.html + a8e587921807c280c2e03587b3363351b + (std::string_view key) noexcept + + + node_view< const node > + operator[] + classtoml_1_1table.html + ae7e850b38aaa5bb11e45ebe1e7dc6b81 + (std::string_view key) const noexcept + + + node_view< node > + operator[] + classtoml_1_1table.html + ad9c94b1ec007ae3931499c5fca31835e + (std::wstring_view key) + + + node_view< const node > + operator[] + classtoml_1_1table.html + acec9c41eb50b807c7d2c8d2063bf58bd + (std::wstring_view key) const + + + bool + is_homogeneous + classtoml_1_1node.html + a7d2b7360a2ea44282890e1ded3d3946a + () const noexcept + + + bool + is + classtoml_1_1node.html + a03e1bbe1a0640953b7105fe40c733118 + () const noexcept + + + impl::wrap_node< T > * + as + classtoml_1_1node.html + a42b952e50ab41b39c1c5340c010d07f0 + () noexcept + + + const impl::wrap_node< T > * + as + classtoml_1_1node.html + a4013d8bf01b87e77643bef7cdf818a5a + () const noexcept + + + optional< T > + value_exact + classtoml_1_1node.html + a11f4ae869670d876f704f676f0ead81b + () const noexcept(impl::value_retrieval_is_nothrow< T >) + + + optional< T > + value + classtoml_1_1node.html + a302e5bc2e4796e9b1ae60b002911a007 + () const noexcept(impl::value_retrieval_is_nothrow< T >) + + + auto + value_or + classtoml_1_1node.html + ad1c332ae403fade90216726105419efc + (T &&default_value) const noexcept(impl::value_retrieval_is_nothrow< T >) + + + decltype(auto) + ref + classtoml_1_1node.html + a58fde40ef0b172d36bf293c251b25130 + () &noexcept + + + decltype(auto) + ref + classtoml_1_1node.html + aca651e7fe7f377fe958b20678d08ef14 + () &&noexcept + + + decltype(auto) + ref + classtoml_1_1node.html + a9794ed57d952d8293ed3278a11e54ca2 + () const &noexcept + + + decltype(auto) + ref + classtoml_1_1node.html + a937af29dc15ef8e1af7950d925341cc3 + () const &&noexcept + + + const source_region & + source + classtoml_1_1node.html + a4a30e611eeddce99e5c48fd80e79b134 + () const noexcept + + + decltype(auto) + visit + classtoml_1_1node.html + ad47390f3832260db7bf06cd282598240 + (Func &&visitor) &noexcept(visit_is_nothrow< Func &&, node & >) + + + decltype(auto) + visit + classtoml_1_1node.html + a371a03c4b91cfbb8d9ee785c1eacf836 + (Func &&visitor) &&noexcept(visit_is_nothrow< Func &&, node && >) + + + decltype(auto) + visit + classtoml_1_1node.html + ad4a42e50f923b0fe1efff0a6719dab90 + (Func &&visitor) const &noexcept(visit_is_nothrow< Func &&, const node & >) + + + decltype(auto) + visit + classtoml_1_1node.html + ac387cb04111addc0c291ecdd6f299666 + (Func &&visitor) const &&noexcept(visit_is_nothrow< Func &&, const node && >) + + + + operator node_view< node > + classtoml_1_1node.html + a04d800d6ec9342d2ee2a364f05317573 + () noexcept + + + + operator node_view< const node > + classtoml_1_1node.html + ac7d6979c7246d7faee8ca48aadfcee68 + () const noexcept + + + node_view< node > + at_path + classtoml_1_1node.html + a21f64d68f408033ee6610f34d3bf0bcd + (std::string_view path) noexcept + + + node_view< const node > + at_path + classtoml_1_1node.html + ab17e0ffeb05b2ec34b87bc33375c6dce + (std::string_view path) const noexcept + + + node_view< node > + at_path + classtoml_1_1node.html + a6c6df9f8faa18019e01ea778a802700f + (const toml::path &path) noexcept + + + node_view< const node > + at_path + classtoml_1_1node.html + a09b4206b0e980fe961c8f9ba1c503b86 + (const toml::path &path) const noexcept + + + node_view< node > + at_path + classtoml_1_1node.html + a06f8134c629450c0a308798271e98d64 + (std::wstring_view path) + + + node_view< const node > + at_path + classtoml_1_1node.html + a9fb5f28c07c345f55687dfcb681b33c4 + (std::wstring_view path) const + + + node_view< node > + operator[] + classtoml_1_1node.html + af3e492bf3406fb79d50308f5be974c3e + (const toml::path &path) noexcept + + + node_view< const node > + operator[] + classtoml_1_1node.html + a462a55fc6e4f7da1108b747165fe17db + (const toml::path &path) const noexcept + + + friend std::ostream & + operator<< + classtoml_1_1table.html + a82b6ece5db050fa6c468b08fa514a7dc + (std::ostream &lhs, const table &rhs) + + + friend bool + operator== + classtoml_1_1table.html + af8ebaed8105e5de2098992764f2d534a + (const table &lhs, const table &rhs) noexcept + + + friend bool + operator!= + classtoml_1_1table.html + abdeb5d9d9fc23c031c78e544c6196ea6 + (const table &lhs, const table &rhs) noexcept + + + toml::table_iterator + iterator + classtoml_1_1table.html + a87e055bad435d5332dc496c518733a4d + + + + toml::const_table_iterator + const_iterator + classtoml_1_1table.html + a68fea8ca9b1018f9675fd346b9f4512e + + + + iterator + begin + classtoml_1_1table.html + a334f050427eb20c8530254f4cd6dddf3 + () noexcept + + + const_iterator + begin + classtoml_1_1table.html + a3352f9954e03087b6f596ae23283bd3c + () const noexcept + + + const_iterator + cbegin + classtoml_1_1table.html + a15a5f8bd6d194fcbe925a24e5b73b1fb + () const noexcept + + + iterator + end + classtoml_1_1table.html + a96da67654c5ca131cfec2e3c07aa2730 + () noexcept + + + const_iterator + end + classtoml_1_1table.html + a40c72e81de1da66b7083cad11442cb05 + () const noexcept + + + const_iterator + cend + classtoml_1_1table.html + a311451209f990931ea25828c6091714f + () const noexcept + + + table & + for_each + classtoml_1_1table.html + a3eca61af0c4b7e6131f33b2f3fac6c05 + (Func &&visitor) &noexcept(for_each_is_nothrow< Func &&, table & >::value) + + + table && + for_each + classtoml_1_1table.html + a2d653eb4ff79dd7a2c2f63d147c01503 + (Func &&visitor) &&noexcept(for_each_is_nothrow< Func &&, table && >::value) + + + const table & + for_each + classtoml_1_1table.html + a0c911d29708d253a42bce893401427ba + (Func &&visitor) const &noexcept(for_each_is_nothrow< Func &&, const table & >::value) + + + const table && + for_each + classtoml_1_1table.html + a5b6913d33b535cab08b84ef2b0e58b34 + (Func &&visitor) const &&noexcept(for_each_is_nothrow< Func &&, const table && >::value) + + + node_type + type + classtoml_1_1table.html + a03d15150652176b1714b70fb035cdeb0 + () const noexcept final + + + bool + is_homogeneous + classtoml_1_1table.html + abe1cc42533dc108b2062de2666471faa + (node_type ntype) const noexcept final + + + bool + is_homogeneous + classtoml_1_1table.html + af1a2f48edbb3afa9363c392595830846 + (node_type ntype, node *&first_nonmatch) noexcept final + + + bool + is_homogeneous + classtoml_1_1table.html + a8a0a8d4e44883a2467798dad07ddcb43 + (node_type ntype, const node *&first_nonmatch) const noexcept final + + + bool + is_table + classtoml_1_1table.html + a2cdfa1fd3e9d5c64cb5d4089a1d4344e + () const noexcept final + + + bool + is_array + classtoml_1_1table.html + a56d186a17d8e24bfa90fa6578e7b3872 + () const noexcept final + + + bool + is_array_of_tables + classtoml_1_1table.html + a52e6d4f667e464a49ac4928c8ed31fec + () const noexcept final + + + bool + is_value + classtoml_1_1table.html + aae222bf8089461dd4954311d1e403386 + () const noexcept final + + + bool + is_string + classtoml_1_1table.html + a6bf5f3666709891c5c6beba70835604a + () const noexcept final + + + bool + is_integer + classtoml_1_1table.html + a1a8b05c8de343cff20b47189d309862b + () const noexcept final + + + bool + is_floating_point + classtoml_1_1table.html + a6eafaab181b8ce2632b5c0556941fb76 + () const noexcept final + + + bool + is_number + classtoml_1_1table.html + a89392000e892868540f0513f4be45ba2 + () const noexcept final + + + bool + is_boolean + classtoml_1_1table.html + a60c4177e5d411c2f8be30f0b99b68189 + () const noexcept final + + + bool + is_date + classtoml_1_1table.html + a3052f7b2bce6add8ef50ea77c59338c4 + () const noexcept final + + + bool + is_time + classtoml_1_1table.html + a1fc645d975ce2b07348e1e9f8029d0c1 + () const noexcept final + + + bool + is_date_time + classtoml_1_1table.html + a38d82efe9d6fc89b5140e5abdde9127d + () const noexcept final + + + table * + as_table + classtoml_1_1table.html + ac44e9b5d6a35e7e01164eedd98a84a53 + () noexcept final + + + array * + as_array + classtoml_1_1table.html + af8402379f1520f01668c1bfab1c9e660 + () noexcept final + + + toml::value< std::string > * + as_string + classtoml_1_1table.html + a9b53cf40866c96e9d5000db9f1aa0ca8 + () noexcept final + + + toml::value< int64_t > * + as_integer + classtoml_1_1table.html + a8470cf6808ee2a6120601858f4850fa0 + () noexcept final + + + toml::value< double > * + as_floating_point + classtoml_1_1table.html + acaa1f4abda97d8d94e0678c16b87574a + () noexcept final + + + toml::value< bool > * + as_boolean + classtoml_1_1table.html + a2c0385baf8601fe815d5539d9c592dd4 + () noexcept final + + + toml::value< date > * + as_date + classtoml_1_1table.html + ac8d60cb31793907c8a4efaa3e0e3b44f + () noexcept final + + + toml::value< time > * + as_time + classtoml_1_1table.html + afd7e0ee6d0a60cf6225900e2df18d5e5 + () noexcept final + + + toml::value< date_time > * + as_date_time + classtoml_1_1table.html + a3f4e748afe3f126227c90e27723d531b + () noexcept final + + + const table * + as_table + classtoml_1_1table.html + a420935d7a61a6f6f4ba3dc36c0c899f0 + () const noexcept final + + + const array * + as_array + classtoml_1_1table.html + ab52ddb2d83eeda0e71dfbfea90166f0d + () const noexcept final + + + const toml::value< std::string > * + as_string + classtoml_1_1table.html + acb3169face92245c2bc1942812402b0f + () const noexcept final + + + const toml::value< int64_t > * + as_integer + classtoml_1_1table.html + a95db58f9e4aa7dbd2cd83805bf4a9c09 + () const noexcept final + + + const toml::value< double > * + as_floating_point + classtoml_1_1table.html + adf84acb6fc6d43f39dc0bc41184d6eba + () const noexcept final + + + const toml::value< bool > * + as_boolean + classtoml_1_1table.html + a77583d7a9ba51f5d32258e71cb342a95 + () const noexcept final + + + const toml::value< date > * + as_date + classtoml_1_1table.html + a8a7e47edb8437b3323603d18b9bc15e6 + () const noexcept final + + + const toml::value< time > * + as_time + classtoml_1_1table.html + affe7c572724a2bf20e7f7fa24310db68 + () const noexcept final + + + const toml::value< date_time > * + as_date_time + classtoml_1_1table.html + adc229e82c234c3b791c5b36be7cb679d + () const noexcept final + + + bool + is_inline + classtoml_1_1table.html + a53be1b93aa90608ed378323df835a2f3 + () const noexcept + + + void + is_inline + classtoml_1_1table.html + a8e797a683ff2bacd14d7e7461ecd2780 + (bool val) noexcept + + + node * + get + classtoml_1_1table.html + afb43a06fdd11582f15761b120aa47fb4 + (std::string_view key) noexcept + + + const node * + get + classtoml_1_1table.html + a1deab1c0a2bac487aab72d3c8600731a + (std::string_view key) const noexcept + + + node * + get + classtoml_1_1table.html + ae55cdab18b2ffbc4e9595146c381f33c + (std::wstring_view key) + + + const node * + get + classtoml_1_1table.html + acda4b270e990e5050c17d1adc1103ca1 + (std::wstring_view key) const + + + impl::wrap_node< T > * + get_as + classtoml_1_1table.html + aeb22667ff65f38e307f17858e83334f2 + (std::string_view key) noexcept + + + const impl::wrap_node< T > * + get_as + classtoml_1_1table.html + a0e0601b96ec314050183d122224320b1 + (std::string_view key) const noexcept + + + impl::wrap_node< T > * + get_as + classtoml_1_1table.html + af7c8a036c579652f5121420940352cb7 + (std::wstring_view key) + + + const impl::wrap_node< T > * + get_as + classtoml_1_1table.html + a19f80eb38716bd2aa9825db44038bc4e + (std::wstring_view key) const + + + node & + at + classtoml_1_1table.html + a09e2c0437700b2a4e5c031e046a07b90 + (std::string_view key) + + + const node & + at + classtoml_1_1table.html + acc57a41e07010edc8b351df267dc6fd0 + (std::string_view key) const + + + node & + at + classtoml_1_1table.html + afcecd9ea2e9c96c34def4471a2d689b4 + (std::wstring_view key) + + + const node & + at + classtoml_1_1table.html + a896761c1925d5ed3bdd1d92446b3d655 + (std::wstring_view key) const + + + bool + empty + classtoml_1_1table.html + a554f495f6f2ebc993be1bd0379447051 + () const noexcept + + + size_t + size + classtoml_1_1table.html + ad7c4105854cc817bf6e781fa7fb1b6d6 + () const noexcept + + + iterator + lower_bound + classtoml_1_1table.html + acc5180d0f3b1a78f45962f246a5d9605 + (std::string_view key) noexcept + + + const_iterator + lower_bound + classtoml_1_1table.html + a3b678ac60d00790308b96f5e51da4274 + (std::string_view key) const noexcept + + + iterator + lower_bound + classtoml_1_1table.html + aaaffca1b5d53d7b72d2f29c14f06d75e + (std::wstring_view key) + + + const_iterator + lower_bound + classtoml_1_1table.html + a2799383d484028ef5f466f8d1d34f315 + (std::wstring_view key) const + + + iterator + find + classtoml_1_1table.html + a087ecb9d9fd4562d79f83341f0c643c0 + (std::string_view key) noexcept + + + const_iterator + find + classtoml_1_1table.html + a65a894481bab5dd2bd00690931ed2692 + (std::string_view key) const noexcept + + + bool + contains + classtoml_1_1table.html + aacf6efa6e7865211f7a1283f79a88ee0 + (std::string_view key) const noexcept + + + iterator + find + classtoml_1_1table.html + ab1f12a827212d23ee0895fda92a5113c + (std::wstring_view key) + + + const_iterator + find + classtoml_1_1table.html + a25f8f4a8c4672042d75b810856bd676f + (std::wstring_view key) const + + + bool + contains + classtoml_1_1table.html + a7bec8d45353adeac918668a9fc5cb6a2 + (std::wstring_view key) const + + + iterator + erase + classtoml_1_1table.html + a1a90984876ccdd03aaa9e0f9801a839f + (iterator pos) noexcept + + + iterator + erase + classtoml_1_1table.html + a4dafb4ae116d92add973e5f27f880a9d + (const_iterator pos) noexcept + + + iterator + erase + classtoml_1_1table.html + a59f4dd9e42b73c9c1ec43134bef7e113 + (const_iterator begin, const_iterator end) noexcept + + + size_t + erase + classtoml_1_1table.html + ac6064df3f6f23b022884390a9963c1bc + (std::string_view key) noexcept + + + size_t + erase + classtoml_1_1table.html + add732807ee5e8fde81ceaa33acbaa7c6 + (std::wstring_view key) + + + table & + prune + classtoml_1_1table.html + a21d4876e86a9ecec65592de2ff268c6d + (bool recursive=true) &noexcept + + + table && + prune + classtoml_1_1table.html + a0d9ea14bacd9d8c945dd9aaca7463aa8 + (bool recursive=true) &&noexcept + + + void + clear + classtoml_1_1table.html + aa710f85c588a1b00c3192d1553de4eef + () noexcept + + + iterator + emplace_hint + classtoml_1_1table.html + a0d2378b5d13432bf8e325c388c650189 + (const_iterator hint, KeyType &&key, ValueArgs &&... args) + + + std::pair< iterator, bool > + insert + classtoml_1_1table.html + a13253524853457ea75b7e03463d32a4a + (KeyType &&key, ValueType &&val, value_flags flags=preserve_source_value_flags) + + + void + insert + classtoml_1_1table.html + a331eb6de04d95c3f76bf64e6f84d4ad6 + (Iter begin, Iter end, value_flags flags=preserve_source_value_flags) + + + std::pair< iterator, bool > + insert_or_assign + classtoml_1_1table.html + ad4e7f2d1251bd46e914229440cb88752 + (KeyType &&key, ValueType &&val, value_flags flags=preserve_source_value_flags) + + + std::pair< iterator, bool > + emplace + classtoml_1_1table.html + adc85e5b7fead18689270e5d106d5c7bd + (KeyType &&key, ValueArgs &&... args) + + + node_view< node > + operator[] + classtoml_1_1table.html + a8e587921807c280c2e03587b3363351b + (std::string_view key) noexcept + + + node_view< const node > + operator[] + classtoml_1_1table.html + ae7e850b38aaa5bb11e45ebe1e7dc6b81 + (std::string_view key) const noexcept + + + node_view< node > + operator[] + classtoml_1_1table.html + ad9c94b1ec007ae3931499c5fca31835e + (std::wstring_view key) + + + node_view< const node > + operator[] + classtoml_1_1table.html + acec9c41eb50b807c7d2c8d2063bf58bd + (std::wstring_view key) const + + + bool + is_homogeneous + classtoml_1_1node.html + a7d2b7360a2ea44282890e1ded3d3946a + () const noexcept + + + bool + is + classtoml_1_1node.html + a03e1bbe1a0640953b7105fe40c733118 + () const noexcept + + + impl::wrap_node< T > * + as + classtoml_1_1node.html + a42b952e50ab41b39c1c5340c010d07f0 + () noexcept + + + const impl::wrap_node< T > * + as + classtoml_1_1node.html + a4013d8bf01b87e77643bef7cdf818a5a + () const noexcept + + + optional< T > + value_exact + classtoml_1_1node.html + a11f4ae869670d876f704f676f0ead81b + () const noexcept(impl::value_retrieval_is_nothrow< T >) + + + optional< T > + value + classtoml_1_1node.html + a302e5bc2e4796e9b1ae60b002911a007 + () const noexcept(impl::value_retrieval_is_nothrow< T >) + + + auto + value_or + classtoml_1_1node.html + ad1c332ae403fade90216726105419efc + (T &&default_value) const noexcept(impl::value_retrieval_is_nothrow< T >) + + + decltype(auto) + ref + classtoml_1_1node.html + a58fde40ef0b172d36bf293c251b25130 + () &noexcept + + + decltype(auto) + ref + classtoml_1_1node.html + aca651e7fe7f377fe958b20678d08ef14 + () &&noexcept + + + decltype(auto) + ref + classtoml_1_1node.html + a9794ed57d952d8293ed3278a11e54ca2 + () const &noexcept + + + decltype(auto) + ref + classtoml_1_1node.html + a937af29dc15ef8e1af7950d925341cc3 + () const &&noexcept + + + const source_region & + source + classtoml_1_1node.html + a4a30e611eeddce99e5c48fd80e79b134 + () const noexcept + + + decltype(auto) + visit + classtoml_1_1node.html + ad47390f3832260db7bf06cd282598240 + (Func &&visitor) &noexcept(visit_is_nothrow< Func &&, node & >) + + + decltype(auto) + visit + classtoml_1_1node.html + a371a03c4b91cfbb8d9ee785c1eacf836 + (Func &&visitor) &&noexcept(visit_is_nothrow< Func &&, node && >) + + + decltype(auto) + visit + classtoml_1_1node.html + ad4a42e50f923b0fe1efff0a6719dab90 + (Func &&visitor) const &noexcept(visit_is_nothrow< Func &&, const node & >) + + + decltype(auto) + visit + classtoml_1_1node.html + ac387cb04111addc0c291ecdd6f299666 + (Func &&visitor) const &&noexcept(visit_is_nothrow< Func &&, const node && >) + + + + operator node_view< node > + classtoml_1_1node.html + a04d800d6ec9342d2ee2a364f05317573 + () noexcept + + + + operator node_view< const node > + classtoml_1_1node.html + ac7d6979c7246d7faee8ca48aadfcee68 + () const noexcept + + + node_view< node > + at_path + classtoml_1_1node.html + a21f64d68f408033ee6610f34d3bf0bcd + (std::string_view path) noexcept + + + node_view< const node > + at_path + classtoml_1_1node.html + ab17e0ffeb05b2ec34b87bc33375c6dce + (std::string_view path) const noexcept + + + node_view< node > + at_path + classtoml_1_1node.html + a6c6df9f8faa18019e01ea778a802700f + (const toml::path &path) noexcept + + + node_view< const node > + at_path + classtoml_1_1node.html + a09b4206b0e980fe961c8f9ba1c503b86 + (const toml::path &path) const noexcept + + + node_view< node > + at_path + classtoml_1_1node.html + a06f8134c629450c0a308798271e98d64 + (std::wstring_view path) + + + node_view< const node > + at_path + classtoml_1_1node.html + a9fb5f28c07c345f55687dfcb681b33c4 + (std::wstring_view path) const + + + node_view< node > + operator[] + classtoml_1_1node.html + af3e492bf3406fb79d50308f5be974c3e + (const toml::path &path) noexcept + + + node_view< const node > + operator[] + classtoml_1_1node.html + a462a55fc6e4f7da1108b747165fe17db + (const toml::path &path) const noexcept + + + friend bool + operator== + classtoml_1_1table.html + af8ebaed8105e5de2098992764f2d534a + (const table &lhs, const table &rhs) noexcept + + + friend bool + operator!= + classtoml_1_1table.html + abdeb5d9d9fc23c031c78e544c6196ea6 + (const table &lhs, const table &rhs) noexcept + + + + toml::time + structtoml_1_1time.html + + + time + structtoml_1_1time.html + a460d6626a20b992f38c676bf5ee62a20 + () noexcept=default + + + constexpr + time + structtoml_1_1time.html + acaec3dc6784706c57cc712ab403123e6 + (H h, M m, S s=S{}, NS ns=NS{}) noexcept + + + uint8_t + hour + structtoml_1_1time.html + a18f32a58846d333f9e866b725b7b7ae4 + + + + uint8_t + minute + structtoml_1_1time.html + a02de4fe041dfa9535eb4df60d86f7fb4 + + + + uint8_t + second + structtoml_1_1time.html + a8ae0ab849a761543207ca86a2e1d0fdf + + + + uint32_t + nanosecond + structtoml_1_1time.html + a3e9c60650ccd21f1e47132b777547185 + + + + friend constexpr bool + operator== + structtoml_1_1time.html + a7ffc48378c7a8c1651afe4c7cca9c054 + (const time &lhs, const time &rhs) noexcept + + + friend constexpr bool + operator!= + structtoml_1_1time.html + a779eb04b76147675a373fb702f54de75 + (const time &lhs, const time &rhs) noexcept + + + friend constexpr bool + operator< + structtoml_1_1time.html + a640fb738131cd50808a7781df0f57f4f + (const time &lhs, const time &rhs) noexcept + + + friend constexpr bool + operator<= + structtoml_1_1time.html + a4214cfd149972269cfaea39ec2280832 + (const time &lhs, const time &rhs) noexcept + + + friend constexpr bool + operator> + structtoml_1_1time.html + a8c9b9e61d32a2cbf9cf9249e5c5b21d2 + (const time &lhs, const time &rhs) noexcept + + + friend constexpr bool + operator>= + structtoml_1_1time.html + aa4d76ea98dab8266666eafe8cc79b72e + (const time &lhs, const time &rhs) noexcept + + + friend std::ostream & + operator<< + structtoml_1_1time.html + af108427371dd0c0321e5bcbb3f547842 + (std::ostream &lhs, const time &rhs) + + + + toml::time_offset + structtoml_1_1time__offset.html + + + time_offset + structtoml_1_1time__offset.html + a49af2cb136f213443f15e108657f5f0e + () noexcept=default + + + constexpr + time_offset + structtoml_1_1time__offset.html + a9e963488f164473ee9af35ddf7d4f93e + (H h, M m) noexcept + + + int16_t + minutes + structtoml_1_1time__offset.html + a2f4cd0259300e318defc0c5efde592dd + + + + friend constexpr bool + operator== + structtoml_1_1time__offset.html + a724fcd380742ef6fd2581e4d94bdecbb + (time_offset lhs, time_offset rhs) noexcept + + + friend constexpr bool + operator!= + structtoml_1_1time__offset.html + a337d8610dcca51598cb54bca6831c0a8 + (time_offset lhs, time_offset rhs) noexcept + + + friend constexpr bool + operator< + structtoml_1_1time__offset.html + ad5180d14b229562acb94ad8e5f9a3828 + (time_offset lhs, time_offset rhs) noexcept + + + friend constexpr bool + operator<= + structtoml_1_1time__offset.html + a63c4153f870f374e6363d177d75db7c8 + (time_offset lhs, time_offset rhs) noexcept + + + friend constexpr bool + operator> + structtoml_1_1time__offset.html + a343c943c3fc47e279a2cf9978bacbc53 + (time_offset lhs, time_offset rhs) noexcept + + + friend constexpr bool + operator>= + structtoml_1_1time__offset.html + aba474cd6d6ddb2d2bb8f143889a8440d + (time_offset lhs, time_offset rhs) noexcept + + + friend std::ostream & + operator<< + structtoml_1_1time__offset.html + a0f8d2f1d0d3dd81facb17ae58dd3df6d + (std::ostream &lhs, const time_offset &rhs) + + + + toml::toml_formatter + classtoml_1_1toml__formatter.html + + + toml_formatter + classtoml_1_1toml__formatter.html + a8110aaa1057d7633428f6795ac14983a + (const toml::node &source, format_flags flags=default_flags) noexcept + + + + toml_formatter + classtoml_1_1toml__formatter.html + a3af0ca99139edbd30845a5cd7d2c0137 + (const toml::parse_result &result, format_flags flags=default_flags) noexcept + + + static constexpr format_flags + default_flags + classtoml_1_1toml__formatter.html + a0aa00006896f1b23e8bb2ec1a6842845 + + + + friend std::ostream & + operator<< + classtoml_1_1toml__formatter.html + a346eba1d265a7d031061371d8c3860af + (std::ostream &lhs, toml_formatter &rhs) + + + friend std::ostream & + operator<< + classtoml_1_1toml__formatter.html + a3e8256f043ef9cf3ac73c03cee2097b4 + (std::ostream &lhs, toml_formatter &&rhs) + + + + toml::value + classtoml_1_1value.html + typename ValueType + toml::node + + ValueType + value_type + classtoml_1_1value.html + ad87b8c7ec465c424b861aba2d4cd5526 + + + + poxyimplementationdetailimplplaceholder + value_arg + classtoml_1_1value.html + ae2ff26c3e1a69d18a35bfbf8b191ed70 + + + + + value + classtoml_1_1value.html + ab7aa8ba30bd6ead7db1e9cadbff39e22 + (Args &&... args) noexcept(noexcept(value_type(impl::native_value_maker< value_type, std::decay_t< Args >... >::make(static_cast< Args && >(args)...)))) + + + + value + classtoml_1_1value.html + a62ace5d37c6cf09fdc589efa5e0a0905 + (const value &other) noexcept + + + + value + classtoml_1_1value.html + a65e6e8fa27455d83ad3ada020e11cf91 + (const value &other, value_flags flags) noexcept + + + + value + classtoml_1_1value.html + adfb0250a9769fea9d585609db77bc64a + (value &&other) noexcept + + + + value + classtoml_1_1value.html + a5f6f5a83b2dc3f5842f7fd5fbc0e4f59 + (value &&other, value_flags flags) noexcept + + + value & + operator= + classtoml_1_1value.html + a42a52a860570643cd76a7e03604ad55b + (const value &rhs) noexcept + + + value & + operator= + classtoml_1_1value.html + a635bbc71edd6303beced451126ecc39d + (value &&rhs) noexcept + + + value & + operator= + classtoml_1_1value.html + adc6a6c311465f87e5a04bb04cae9c5ad + (value_arg rhs) noexcept + + + node_type + type + classtoml_1_1value.html + a69ed0d45e2de5929fea3375cd68960eb + () const noexcept final + + + bool + is_homogeneous + classtoml_1_1value.html + a66f31db0fe4aa1a65fff1ce3bb8be1eb + (node_type ntype) const noexcept final + + + bool + is_homogeneous + classtoml_1_1value.html + a5097925569d4e2f581907dc692aefe02 + (node_type ntype, node *&first_nonmatch) noexcept final + + + bool + is_homogeneous + classtoml_1_1value.html + a40d4ea2ff0d393245fc31dfc6a0f27fb + (node_type ntype, const node *&first_nonmatch) const noexcept final + + + bool + is_table + classtoml_1_1value.html + a4169ed284f3a6d31e838f117dc2f3df0 + () const noexcept final + + + bool + is_array + classtoml_1_1value.html + a160b4dd33afd4d8c02b1a4c7bc48f17f + () const noexcept final + + + bool + is_array_of_tables + classtoml_1_1value.html + a6676776ebf94891825c658432252cab0 + () const noexcept final + + + bool + is_value + classtoml_1_1value.html + a5d1d988a74ab5c6e6cae9706891083f3 + () const noexcept final + + + bool + is_string + classtoml_1_1value.html + a98d477b7ee151d7fc68c49ea7c52a314 + () const noexcept final + + + bool + is_integer + classtoml_1_1value.html + ad5b1844c180a0fb2de06ed4cdbb259a4 + () const noexcept final + + + bool + is_floating_point + classtoml_1_1value.html + aa5b3aac577c60b24f31550f8b7add69f + () const noexcept final + + + bool + is_number + classtoml_1_1value.html + ad40ad64d9a8f0256e550a9226dbed121 + () const noexcept final + + + bool + is_boolean + classtoml_1_1value.html + a6816cd2fbae35e21990d3d5616da595a + () const noexcept final + + + bool + is_date + classtoml_1_1value.html + a47ebc97c4b51999c81eb053d453ac916 + () const noexcept final + + + bool + is_time + classtoml_1_1value.html + a9a1a2e0a15181c6677d14a2812e34878 + () const noexcept final + + + bool + is_date_time + classtoml_1_1value.html + a1e8fb6a37f65fff99a631ade34ab6db4 + () const noexcept final + + + table * + as_table + classtoml_1_1value.html + a548032cf178a7208f051179a4ea435c1 + () noexcept final + + + array * + as_array + classtoml_1_1value.html + ab2345ff50130dac057d906a65bf2b9c6 + () noexcept final + + + value< std::string > * + as_string + classtoml_1_1value.html + a88b09be4dd237d20565f67bab080ec30 + () noexcept final + + + value< int64_t > * + as_integer + classtoml_1_1value.html + acea8bf8ca6b1766c009002fd87cdb7ac + () noexcept final + + + value< double > * + as_floating_point + classtoml_1_1value.html + a8f05a811dd7f845e3e906b41edab299b + () noexcept final + + + value< bool > * + as_boolean + classtoml_1_1value.html + ae2d8195984a167add6fec03afa5cd8a3 + () noexcept final + + + value< date > * + as_date + classtoml_1_1value.html + afe7c3536f240417873025a0123e696c7 + () noexcept final + + + value< time > * + as_time + classtoml_1_1value.html + ada3d2850a98413de5d8016d252519cca + () noexcept final + + + value< date_time > * + as_date_time + classtoml_1_1value.html + a1c8ef20eabfe5e63d38c0b7e9b3fa0d9 + () noexcept final + + + const table * + as_table + classtoml_1_1value.html + a1e798ca9e586175659405d75535f61f7 + () const noexcept final + + + const array * + as_array + classtoml_1_1value.html + a242e8e3d8946056b9cce1d58cad2a000 + () const noexcept final + + + const value< std::string > * + as_string + classtoml_1_1value.html + adb91267966f54b652c4ff90ab2f0dea0 + () const noexcept final + + + const value< int64_t > * + as_integer + classtoml_1_1value.html + a4fabbba1330866c7f93030a0b180d4ac + () const noexcept final + + + const value< double > * + as_floating_point + classtoml_1_1value.html + ab7b57da35b91fe52d4fef390b73a096f + () const noexcept final + + + const value< bool > * + as_boolean + classtoml_1_1value.html + aed7757cebdf1292c88ed02a362817266 + () const noexcept final + + + const value< date > * + as_date + classtoml_1_1value.html + abf5e15d8c9970ece796a32a5aa37c77f + () const noexcept final + + + const value< time > * + as_time + classtoml_1_1value.html + aa85a3aefd21c7656a7814dbaf0128f38 + () const noexcept final + + + const value< date_time > * + as_date_time + classtoml_1_1value.html + aeff1f0499b90fc6060bd7da2b0e296af + () const noexcept final + + + value_type & + get + classtoml_1_1value.html + aeb879401a651ddbf721bfe6d94b3fd8d + () &noexcept + + + value_type && + get + classtoml_1_1value.html + aefc6bd93a20e1683922c6499913cc0cf + () &&noexcept + + + const value_type & + get + classtoml_1_1value.html + a5b47583e493e738d22a0fdeb14a3c091 + () const &noexcept + + + const value_type && + get + classtoml_1_1value.html + abae7c5fa6c6c1cc429763b3b6c601318 + () const &&noexcept + + + value_type & + operator* + classtoml_1_1value.html + a6b50e3a6fc1335b779cfe75e88014193 + () &noexcept + + + value_type && + operator* + classtoml_1_1value.html + a38c830d85b1129dbf887fcd2792739d2 + () &&noexcept + + + const value_type & + operator* + classtoml_1_1value.html + afeef59a0cb492374ea25b1f99c1ca8bb + () const &noexcept + + + const value_type && + operator* + classtoml_1_1value.html + ac9a224ac341563c8b2de9c7cf4939061 + () const &&noexcept + + + + operator value_type & + classtoml_1_1value.html + adaf04b51fea2bdc3da39fbf63c240b3b + () &noexcept + + + + operator value_type && + classtoml_1_1value.html + ad5d4a1c818d7004bc4c42219edf84dd9 + () &&noexcept + + + + operator const value_type & + classtoml_1_1value.html + aeaa7f385c753bc7f11f0758d8ae325b6 + () const &noexcept + + + + operator const value_type && + classtoml_1_1value.html + aef9bb783e7c8ba475838742b7cfc3178 + () &&noexcept + + + value_type * + operator-> + classtoml_1_1value.html + a8e9df5bdfc1b2ea3f039b7ba20712ed1 + () noexcept + + + const value_type * + operator-> + classtoml_1_1value.html + acb6f4b2f69a4a6ae47667c363b8ce048 + () const noexcept + + + value_flags + flags + classtoml_1_1value.html + a1a213908a7297491a07e647967897fcb + () const noexcept + + + value & + flags + classtoml_1_1value.html + a33344888484746d4106968973bcf088f + (value_flags new_flags) noexcept + + + bool + is_homogeneous + classtoml_1_1node.html + a7d2b7360a2ea44282890e1ded3d3946a + () const noexcept + + + bool + is + classtoml_1_1node.html + a03e1bbe1a0640953b7105fe40c733118 + () const noexcept + + + impl::wrap_node< T > * + as + classtoml_1_1node.html + a42b952e50ab41b39c1c5340c010d07f0 + () noexcept + + + const impl::wrap_node< T > * + as + classtoml_1_1node.html + a4013d8bf01b87e77643bef7cdf818a5a + () const noexcept + + + optional< T > + value_exact + classtoml_1_1node.html + a11f4ae869670d876f704f676f0ead81b + () const noexcept(impl::value_retrieval_is_nothrow< T >) + + + optional< T > + value + classtoml_1_1node.html + a302e5bc2e4796e9b1ae60b002911a007 + () const noexcept(impl::value_retrieval_is_nothrow< T >) + + + auto + value_or + classtoml_1_1node.html + ad1c332ae403fade90216726105419efc + (T &&default_value) const noexcept(impl::value_retrieval_is_nothrow< T >) + + + decltype(auto) + ref + classtoml_1_1node.html + a58fde40ef0b172d36bf293c251b25130 + () &noexcept + + + decltype(auto) + ref + classtoml_1_1node.html + aca651e7fe7f377fe958b20678d08ef14 + () &&noexcept + + + decltype(auto) + ref + classtoml_1_1node.html + a9794ed57d952d8293ed3278a11e54ca2 + () const &noexcept + + + decltype(auto) + ref + classtoml_1_1node.html + a937af29dc15ef8e1af7950d925341cc3 + () const &&noexcept + + + const source_region & + source + classtoml_1_1node.html + a4a30e611eeddce99e5c48fd80e79b134 + () const noexcept + + + decltype(auto) + visit + classtoml_1_1node.html + ad47390f3832260db7bf06cd282598240 + (Func &&visitor) &noexcept(visit_is_nothrow< Func &&, node & >) + + + decltype(auto) + visit + classtoml_1_1node.html + a371a03c4b91cfbb8d9ee785c1eacf836 + (Func &&visitor) &&noexcept(visit_is_nothrow< Func &&, node && >) + + + decltype(auto) + visit + classtoml_1_1node.html + ad4a42e50f923b0fe1efff0a6719dab90 + (Func &&visitor) const &noexcept(visit_is_nothrow< Func &&, const node & >) + + + decltype(auto) + visit + classtoml_1_1node.html + ac387cb04111addc0c291ecdd6f299666 + (Func &&visitor) const &&noexcept(visit_is_nothrow< Func &&, const node && >) + + + + operator node_view< node > + classtoml_1_1node.html + a04d800d6ec9342d2ee2a364f05317573 + () noexcept + + + + operator node_view< const node > + classtoml_1_1node.html + ac7d6979c7246d7faee8ca48aadfcee68 + () const noexcept + + + node_view< node > + at_path + classtoml_1_1node.html + a21f64d68f408033ee6610f34d3bf0bcd + (std::string_view path) noexcept + + + node_view< const node > + at_path + classtoml_1_1node.html + ab17e0ffeb05b2ec34b87bc33375c6dce + (std::string_view path) const noexcept + + + node_view< node > + at_path + classtoml_1_1node.html + a6c6df9f8faa18019e01ea778a802700f + (const toml::path &path) noexcept + + + node_view< const node > + at_path + classtoml_1_1node.html + a09b4206b0e980fe961c8f9ba1c503b86 + (const toml::path &path) const noexcept + + + node_view< node > + at_path + classtoml_1_1node.html + a06f8134c629450c0a308798271e98d64 + (std::wstring_view path) + + + node_view< const node > + at_path + classtoml_1_1node.html + a9fb5f28c07c345f55687dfcb681b33c4 + (std::wstring_view path) const + + + node_view< node > + operator[] + classtoml_1_1node.html + af3e492bf3406fb79d50308f5be974c3e + (const toml::path &path) noexcept + + + node_view< const node > + operator[] + classtoml_1_1node.html + a462a55fc6e4f7da1108b747165fe17db + (const toml::path &path) const noexcept + + + friend std::ostream & + operator<< + classtoml_1_1value.html + a71ce98214aac12bc976038d13342f0d8 + (std::ostream &lhs, const value &rhs) + + + friend bool + operator== + classtoml_1_1value.html + a0b90e4f85ecaf2c81e4ba8b42aa5ce34 + (const value &lhs, value_arg rhs) noexcept + + + friend bool + operator< + classtoml_1_1value.html + a1771aa33bd2d425b542d0b9d0e90866d + (const value &lhs, value_arg rhs) noexcept + + + friend bool + operator< + classtoml_1_1value.html + a6bbe09942bd6046fa94addb911940491 + (value_arg lhs, const value &rhs) noexcept + + + friend bool + operator<= + classtoml_1_1value.html + a7d02565c608c663afc8f3d2102639740 + (const value &lhs, value_arg rhs) noexcept + + + friend bool + operator<= + classtoml_1_1value.html + a2f37f69d3e477c0c2e2ba16f6919815e + (value_arg lhs, const value &rhs) noexcept + + + friend bool + operator> + classtoml_1_1value.html + ace8c00e345c69ee93e5d2bd2df694340 + (const value &lhs, value_arg rhs) noexcept + + + friend bool + operator> + classtoml_1_1value.html + af200f2be4273ed0923743f4b918f86e6 + (value_arg lhs, const value &rhs) noexcept + + + friend bool + operator>= + classtoml_1_1value.html + a80417b5055072f20d3a6985d1b78af21 + (const value &lhs, value_arg rhs) noexcept + + + friend bool + operator>= + classtoml_1_1value.html + a727e2acd21edf04a144918d174706ba6 + (value_arg lhs, const value &rhs) noexcept + + + friend bool + operator== + classtoml_1_1value.html + a2fa446100047d052d0cca2c1f3f60085 + (const value &lhs, const value< T > &rhs) noexcept + + + friend bool + operator!= + classtoml_1_1value.html + a872e565adfbcd201f2ab1e3103699758 + (const value &lhs, const value< T > &rhs) noexcept + + + friend bool + operator< + classtoml_1_1value.html + a7fdc4f87f9ec3efb896cc3e09694328b + (const value &lhs, const value< T > &rhs) noexcept + + + friend bool + operator<= + classtoml_1_1value.html + ac6af15f59d537d95d1afe887b12b697e + (const value &lhs, const value< T > &rhs) noexcept + + + friend bool + operator> + classtoml_1_1value.html + ab95d07a7f48e44baefbacbf5f6072837 + (const value &lhs, const value< T > &rhs) noexcept + + + friend bool + operator>= + classtoml_1_1value.html + a0ebdea821d98546de4b686f450506637 + (const value &lhs, const value< T > &rhs) noexcept + + + node_type + type + classtoml_1_1value.html + a69ed0d45e2de5929fea3375cd68960eb + () const noexcept final + + + bool + is_homogeneous + classtoml_1_1value.html + a66f31db0fe4aa1a65fff1ce3bb8be1eb + (node_type ntype) const noexcept final + + + bool + is_homogeneous + classtoml_1_1value.html + a5097925569d4e2f581907dc692aefe02 + (node_type ntype, node *&first_nonmatch) noexcept final + + + bool + is_homogeneous + classtoml_1_1value.html + a40d4ea2ff0d393245fc31dfc6a0f27fb + (node_type ntype, const node *&first_nonmatch) const noexcept final + + + bool + is_table + classtoml_1_1value.html + a4169ed284f3a6d31e838f117dc2f3df0 + () const noexcept final + + + bool + is_array + classtoml_1_1value.html + a160b4dd33afd4d8c02b1a4c7bc48f17f + () const noexcept final + + + bool + is_array_of_tables + classtoml_1_1value.html + a6676776ebf94891825c658432252cab0 + () const noexcept final + + + bool + is_value + classtoml_1_1value.html + a5d1d988a74ab5c6e6cae9706891083f3 + () const noexcept final + + + bool + is_string + classtoml_1_1value.html + a98d477b7ee151d7fc68c49ea7c52a314 + () const noexcept final + + + bool + is_integer + classtoml_1_1value.html + ad5b1844c180a0fb2de06ed4cdbb259a4 + () const noexcept final + + + bool + is_floating_point + classtoml_1_1value.html + aa5b3aac577c60b24f31550f8b7add69f + () const noexcept final + + + bool + is_number + classtoml_1_1value.html + ad40ad64d9a8f0256e550a9226dbed121 + () const noexcept final + + + bool + is_boolean + classtoml_1_1value.html + a6816cd2fbae35e21990d3d5616da595a + () const noexcept final + + + bool + is_date + classtoml_1_1value.html + a47ebc97c4b51999c81eb053d453ac916 + () const noexcept final + + + bool + is_time + classtoml_1_1value.html + a9a1a2e0a15181c6677d14a2812e34878 + () const noexcept final + + + bool + is_date_time + classtoml_1_1value.html + a1e8fb6a37f65fff99a631ade34ab6db4 + () const noexcept final + + + table * + as_table + classtoml_1_1value.html + a548032cf178a7208f051179a4ea435c1 + () noexcept final + + + array * + as_array + classtoml_1_1value.html + ab2345ff50130dac057d906a65bf2b9c6 + () noexcept final + + + value< std::string > * + as_string + classtoml_1_1value.html + a88b09be4dd237d20565f67bab080ec30 + () noexcept final + + + value< int64_t > * + as_integer + classtoml_1_1value.html + acea8bf8ca6b1766c009002fd87cdb7ac + () noexcept final + + + value< double > * + as_floating_point + classtoml_1_1value.html + a8f05a811dd7f845e3e906b41edab299b + () noexcept final + + + value< bool > * + as_boolean + classtoml_1_1value.html + ae2d8195984a167add6fec03afa5cd8a3 + () noexcept final + + + value< date > * + as_date + classtoml_1_1value.html + afe7c3536f240417873025a0123e696c7 + () noexcept final + + + value< time > * + as_time + classtoml_1_1value.html + ada3d2850a98413de5d8016d252519cca + () noexcept final + + + value< date_time > * + as_date_time + classtoml_1_1value.html + a1c8ef20eabfe5e63d38c0b7e9b3fa0d9 + () noexcept final + + + const table * + as_table + classtoml_1_1value.html + a1e798ca9e586175659405d75535f61f7 + () const noexcept final + + + const array * + as_array + classtoml_1_1value.html + a242e8e3d8946056b9cce1d58cad2a000 + () const noexcept final + + + const value< std::string > * + as_string + classtoml_1_1value.html + adb91267966f54b652c4ff90ab2f0dea0 + () const noexcept final + + + const value< int64_t > * + as_integer + classtoml_1_1value.html + a4fabbba1330866c7f93030a0b180d4ac + () const noexcept final + + + const value< double > * + as_floating_point + classtoml_1_1value.html + ab7b57da35b91fe52d4fef390b73a096f + () const noexcept final + + + const value< bool > * + as_boolean + classtoml_1_1value.html + aed7757cebdf1292c88ed02a362817266 + () const noexcept final + + + const value< date > * + as_date + classtoml_1_1value.html + abf5e15d8c9970ece796a32a5aa37c77f + () const noexcept final + + + const value< time > * + as_time + classtoml_1_1value.html + aa85a3aefd21c7656a7814dbaf0128f38 + () const noexcept final + + + const value< date_time > * + as_date_time + classtoml_1_1value.html + aeff1f0499b90fc6060bd7da2b0e296af + () const noexcept final + + + value_type & + get + classtoml_1_1value.html + aeb879401a651ddbf721bfe6d94b3fd8d + () &noexcept + + + value_type && + get + classtoml_1_1value.html + aefc6bd93a20e1683922c6499913cc0cf + () &&noexcept + + + const value_type & + get + classtoml_1_1value.html + a5b47583e493e738d22a0fdeb14a3c091 + () const &noexcept + + + const value_type && + get + classtoml_1_1value.html + abae7c5fa6c6c1cc429763b3b6c601318 + () const &&noexcept + + + value_type & + operator* + classtoml_1_1value.html + a6b50e3a6fc1335b779cfe75e88014193 + () &noexcept + + + value_type && + operator* + classtoml_1_1value.html + a38c830d85b1129dbf887fcd2792739d2 + () &&noexcept + + + const value_type & + operator* + classtoml_1_1value.html + afeef59a0cb492374ea25b1f99c1ca8bb + () const &noexcept + + + const value_type && + operator* + classtoml_1_1value.html + ac9a224ac341563c8b2de9c7cf4939061 + () const &&noexcept + + + + operator value_type & + classtoml_1_1value.html + adaf04b51fea2bdc3da39fbf63c240b3b + () &noexcept + + + + operator value_type && + classtoml_1_1value.html + ad5d4a1c818d7004bc4c42219edf84dd9 + () &&noexcept + + + + operator const value_type & + classtoml_1_1value.html + aeaa7f385c753bc7f11f0758d8ae325b6 + () const &noexcept + + + + operator const value_type && + classtoml_1_1value.html + aef9bb783e7c8ba475838742b7cfc3178 + () &&noexcept + + + value_type * + operator-> + classtoml_1_1value.html + a8e9df5bdfc1b2ea3f039b7ba20712ed1 + () noexcept + + + const value_type * + operator-> + classtoml_1_1value.html + acb6f4b2f69a4a6ae47667c363b8ce048 + () const noexcept + + + value_flags + flags + classtoml_1_1value.html + a1a213908a7297491a07e647967897fcb + () const noexcept + + + value & + flags + classtoml_1_1value.html + a33344888484746d4106968973bcf088f + (value_flags new_flags) noexcept + + + bool + is_homogeneous + classtoml_1_1node.html + a7d2b7360a2ea44282890e1ded3d3946a + () const noexcept + + + bool + is + classtoml_1_1node.html + a03e1bbe1a0640953b7105fe40c733118 + () const noexcept + + + impl::wrap_node< T > * + as + classtoml_1_1node.html + a42b952e50ab41b39c1c5340c010d07f0 + () noexcept + + + const impl::wrap_node< T > * + as + classtoml_1_1node.html + a4013d8bf01b87e77643bef7cdf818a5a + () const noexcept + + + optional< T > + value_exact + classtoml_1_1node.html + a11f4ae869670d876f704f676f0ead81b + () const noexcept(impl::value_retrieval_is_nothrow< T >) + + + optional< T > + value + classtoml_1_1node.html + a302e5bc2e4796e9b1ae60b002911a007 + () const noexcept(impl::value_retrieval_is_nothrow< T >) + + + auto + value_or + classtoml_1_1node.html + ad1c332ae403fade90216726105419efc + (T &&default_value) const noexcept(impl::value_retrieval_is_nothrow< T >) + + + decltype(auto) + ref + classtoml_1_1node.html + a58fde40ef0b172d36bf293c251b25130 + () &noexcept + + + decltype(auto) + ref + classtoml_1_1node.html + aca651e7fe7f377fe958b20678d08ef14 + () &&noexcept + + + decltype(auto) + ref + classtoml_1_1node.html + a9794ed57d952d8293ed3278a11e54ca2 + () const &noexcept + + + decltype(auto) + ref + classtoml_1_1node.html + a937af29dc15ef8e1af7950d925341cc3 + () const &&noexcept + + + const source_region & + source + classtoml_1_1node.html + a4a30e611eeddce99e5c48fd80e79b134 + () const noexcept + + + decltype(auto) + visit + classtoml_1_1node.html + ad47390f3832260db7bf06cd282598240 + (Func &&visitor) &noexcept(visit_is_nothrow< Func &&, node & >) + + + decltype(auto) + visit + classtoml_1_1node.html + a371a03c4b91cfbb8d9ee785c1eacf836 + (Func &&visitor) &&noexcept(visit_is_nothrow< Func &&, node && >) + + + decltype(auto) + visit + classtoml_1_1node.html + ad4a42e50f923b0fe1efff0a6719dab90 + (Func &&visitor) const &noexcept(visit_is_nothrow< Func &&, const node & >) + + + decltype(auto) + visit + classtoml_1_1node.html + ac387cb04111addc0c291ecdd6f299666 + (Func &&visitor) const &&noexcept(visit_is_nothrow< Func &&, const node && >) + + + + operator node_view< node > + classtoml_1_1node.html + a04d800d6ec9342d2ee2a364f05317573 + () noexcept + + + + operator node_view< const node > + classtoml_1_1node.html + ac7d6979c7246d7faee8ca48aadfcee68 + () const noexcept + + + node_view< node > + at_path + classtoml_1_1node.html + a21f64d68f408033ee6610f34d3bf0bcd + (std::string_view path) noexcept + + + node_view< const node > + at_path + classtoml_1_1node.html + ab17e0ffeb05b2ec34b87bc33375c6dce + (std::string_view path) const noexcept + + + node_view< node > + at_path + classtoml_1_1node.html + a6c6df9f8faa18019e01ea778a802700f + (const toml::path &path) noexcept + + + node_view< const node > + at_path + classtoml_1_1node.html + a09b4206b0e980fe961c8f9ba1c503b86 + (const toml::path &path) const noexcept + + + node_view< node > + at_path + classtoml_1_1node.html + a06f8134c629450c0a308798271e98d64 + (std::wstring_view path) + + + node_view< const node > + at_path + classtoml_1_1node.html + a9fb5f28c07c345f55687dfcb681b33c4 + (std::wstring_view path) const + + + node_view< node > + operator[] + classtoml_1_1node.html + af3e492bf3406fb79d50308f5be974c3e + (const toml::path &path) noexcept + + + node_view< const node > + operator[] + classtoml_1_1node.html + a462a55fc6e4f7da1108b747165fe17db + (const toml::path &path) const noexcept + + + friend bool + operator== + classtoml_1_1value.html + a0b90e4f85ecaf2c81e4ba8b42aa5ce34 + (const value &lhs, value_arg rhs) noexcept + + + friend bool + operator< + classtoml_1_1value.html + a1771aa33bd2d425b542d0b9d0e90866d + (const value &lhs, value_arg rhs) noexcept + + + friend bool + operator< + classtoml_1_1value.html + a6bbe09942bd6046fa94addb911940491 + (value_arg lhs, const value &rhs) noexcept + + + friend bool + operator<= + classtoml_1_1value.html + a7d02565c608c663afc8f3d2102639740 + (const value &lhs, value_arg rhs) noexcept + + + friend bool + operator<= + classtoml_1_1value.html + a2f37f69d3e477c0c2e2ba16f6919815e + (value_arg lhs, const value &rhs) noexcept + + + friend bool + operator> + classtoml_1_1value.html + ace8c00e345c69ee93e5d2bd2df694340 + (const value &lhs, value_arg rhs) noexcept + + + friend bool + operator> + classtoml_1_1value.html + af200f2be4273ed0923743f4b918f86e6 + (value_arg lhs, const value &rhs) noexcept + + + friend bool + operator>= + classtoml_1_1value.html + a80417b5055072f20d3a6985d1b78af21 + (const value &lhs, value_arg rhs) noexcept + + + friend bool + operator>= + classtoml_1_1value.html + a727e2acd21edf04a144918d174706ba6 + (value_arg lhs, const value &rhs) noexcept + + + friend bool + operator== + classtoml_1_1value.html + a2fa446100047d052d0cca2c1f3f60085 + (const value &lhs, const value< T > &rhs) noexcept + + + friend bool + operator!= + classtoml_1_1value.html + a872e565adfbcd201f2ab1e3103699758 + (const value &lhs, const value< T > &rhs) noexcept + + + friend bool + operator< + classtoml_1_1value.html + a7fdc4f87f9ec3efb896cc3e09694328b + (const value &lhs, const value< T > &rhs) noexcept + + + friend bool + operator<= + classtoml_1_1value.html + ac6af15f59d537d95d1afe887b12b697e + (const value &lhs, const value< T > &rhs) noexcept + + + friend bool + operator> + classtoml_1_1value.html + ab95d07a7f48e44baefbacbf5f6072837 + (const value &lhs, const value< T > &rhs) noexcept + + + friend bool + operator>= + classtoml_1_1value.html + a0ebdea821d98546de4b686f450506637 + (const value &lhs, const value< T > &rhs) noexcept + + + + toml::yaml_formatter + classtoml_1_1yaml__formatter.html + + + yaml_formatter + classtoml_1_1yaml__formatter.html + a0089cdd517d9f6641ed10c8ddb5b1c11 + (const toml::node &source, format_flags flags=default_flags) noexcept + + + + yaml_formatter + classtoml_1_1yaml__formatter.html + a2eb50c4983f7ec26a417befeface23bf + (const toml::parse_result &result, format_flags flags=default_flags) noexcept + + + static constexpr format_flags + default_flags + classtoml_1_1yaml__formatter.html + af161f0a6c794945e85b210ee85cb78e9 + + + + friend std::ostream & + operator<< + classtoml_1_1yaml__formatter.html + a55b839f979add962931d2ccd5f462bad + (std::ostream &lhs, yaml_formatter &rhs) + + + friend std::ostream & + operator<< + classtoml_1_1yaml__formatter.html + a750f11b016548b8e8cb78cbf944fb02c + (std::ostream &lhs, yaml_formatter &&rhs) + + + + toml + namespacetoml.html + toml::literals + toml::array + toml::date + toml::date_time + toml::inserter + toml::json_formatter + toml::key + toml::node + toml::node_view + toml::parse_error + toml::parse_result + toml::path + toml::path_component + toml::source_position + toml::source_region + toml::table + toml::time + toml::time_offset + toml::toml_formatter + toml::value + toml::yaml_formatter + + poxyimplementationdetailimplplaceholder + array_iterator + namespacetoml.html + a29f7024613d87f4c439bcfe069a4a3e6 + + + + poxyimplementationdetailimplplaceholder + const_array_iterator + namespacetoml.html + af895b4da4a93355537c7fce73b8a38ab + + + + toml_formatter + default_formatter + namespacetoml.html + a2b87b5d257f54773683328031f453e76 + + + + poxyimplementationdetailimplplaceholder + inserted_type_of + namespacetoml.html + a98d783a1c89ce747982c2d24a5329882 + + + + uint32_t + source_index + namespacetoml.html + afb852fa22a8b3ea9d200d645b9d5c308 + + + + std::shared_ptr< const std::string > + source_path_ptr + namespacetoml.html + ac6cf446b480546ae1f71f5b86442368d + + + + std::optional< T > + optional + namespacetoml.html + af34a9fb3305e419784104609e6bbb7ac + + + + poxyimplementationdetailimplplaceholder + table_iterator + namespacetoml.html + aaed1da38e7ed361e105fae086cf7b0c1 + + + + poxyimplementationdetailimplplaceholder + const_table_iterator + namespacetoml.html + aebe170823fa068b873aa4c775d597993 + + + + + node_type + namespacetoml.html + abac3e84bbf1f2c90717fca107055f48d + + none + table + array + string + integer + floating_point + boolean + date + time + date_time + + + + value_flags + namespacetoml.html + a73eba6a34e7c7c4a4d311100800e1bb5 + + none + format_as_binary + format_as_octal + format_as_hexadecimal + + + + format_flags + namespacetoml.html + a2102aa80bc57783d96180f36e1f64f6a + + none + quote_dates_and_times + quote_infinities_and_nans + allow_literal_strings + allow_multi_line_strings + allow_real_tabs_in_strings + allow_unicode_strings + allow_binary_integers + allow_octal_integers + allow_hexadecimal_integers + indent_sub_tables + indent_array_elements + indentation + relaxed_float_precision + terse_key_value_pairs + force_multiline_arrays + + + + path_component_type + namespacetoml.html + a05daf3902d4363b06fb467a3292c0bc5 + + key + array_index + + + node_view< node > + at_path + namespacetoml.html + a3024ba7b40cb19fa565b5ac80ac72c2d + (node &root, std::string_view path) noexcept + + + node_view< const node > + at_path + namespacetoml.html + aad864d99bf53e2b53a8fee28c2299d43 + (const node &root, std::string_view path) noexcept + + + node_view< node > + at_path + namespacetoml.html + af388e5adca27fada36874c8b9bc795ee + (node &root, std::wstring_view path) + + + node_view< const node > + at_path + namespacetoml.html + a42b45f76519136534c835cc210b5220f + (const node &root, std::wstring_view path) + + + std::basic_ostream< Char > & + operator<< + namespacetoml.html + a8a37f07ea9c0a841be1352143b3cbc52 + (std::basic_ostream< Char > &lhs, node_type rhs) + + + parse_result + parse + namespacetoml.html + ada8654fb4ceef15c20fc1d5e0cc734dd + (std::string_view doc, std::string_view source_path={}) + + + parse_result + parse + namespacetoml.html + a20fa3e08d72759083fb17c772a357043 + (std::string_view doc, std::string &&source_path) + + + parse_result + parse_file + namespacetoml.html + a8dbc58dad43c3b66f4476a7131f5741a + (std::string_view file_path) + + + parse_result + parse + namespacetoml.html + ae9ee4300ddfbd72b7237283ab8d97618 + (std::u8string_view doc, std::string_view source_path={}) + + + parse_result + parse + namespacetoml.html + a02a2724564149ad8439c0457357308b8 + (std::u8string_view doc, std::string &&source_path) + + + parse_result + parse_file + namespacetoml.html + acdbabd4b771d221fe98b0053d848d69d + (std::u8string_view file_path) + + + parse_result + parse + namespacetoml.html + a01565f26a7982d162949bac3b554a334 + (std::string_view doc, std::wstring_view source_path) + + + parse_result + parse + namespacetoml.html + ac7767943620762c22b6341dc6682cc2d + (std::istream &doc, std::wstring_view source_path) + + + parse_result + parse_file + namespacetoml.html + ad425af491341206589ca6acc37c3b19e + (std::wstring_view file_path) + + + parse_result + parse + namespacetoml.html + a38852451309f406db281f17334ea8dfe + (std::u8string_view doc, std::wstring_view source_path) + + + parse_result + parse + namespacetoml.html + a2ee84ffccded737ab40afcb8122d8277 + (std::istream &doc, std::string_view source_path={}) + + + parse_result + parse + namespacetoml.html + a8079e71bd86722701ca91828c6709305 + (std::istream &doc, std::string &&source_path) + + + node_view< node > + at_path + namespacetoml.html + a402a1973caa5c848ca494cac31d1085d + (node &root, const toml::path &path) noexcept + + + node_view< const node > + at_path + namespacetoml.html + a3655200a65b1974b8bd13c1a4b5e45c1 + (const node &root, const toml::path &path) noexcept + + + constexpr optional< std::string_view > + get_line + namespacetoml.html + a7a137fbfb3f257680292c20bce18a55d + (std::string_view doc, source_index line_num) noexcept + + + constexpr value_flags + preserve_source_value_flags + namespacetoml.html + a32f700b152e15c357801e905d626a4fb + + + + constexpr bool + is_table + namespacetoml.html + ad11c8c8a8286d6931e40658679aa7ddb + + + + constexpr bool + is_array + namespacetoml.html + a2251b703f3ec4d1a3036c82ead3d69cc + + + + constexpr bool + is_container + namespacetoml.html + ad6c6e1677e1cc564d40efa89af2514a2 + + + + constexpr bool + is_string + namespacetoml.html + aea14621807afe92a840d82c7139cde07 + + + + constexpr bool + is_integer + namespacetoml.html + a513bdc4a19071f0be70e92bb6cb1a1a3 + + + + constexpr bool + is_floating_point + namespacetoml.html + a1aaaa0e264cdd4f43518571f2f61ac36 + + + + constexpr bool + is_number + namespacetoml.html + a64ce7ed6974d2b17823565bc67c40873 + + + + constexpr bool + is_boolean + namespacetoml.html + a8e79820651cc9a835082cf9abd47d885 + + + + constexpr bool + is_date + namespacetoml.html + a3c5daa4563e3aff2b5e6460aa97d28df + + + + constexpr bool + is_time + namespacetoml.html + a87aee32768a32bb838150421e4e3cf97 + + + + constexpr bool + is_date_time + namespacetoml.html + a3285caf012789a607851026f9827a33d + + + + constexpr bool + is_chronological + namespacetoml.html + a7f8764060ca7dccb7e829f67d82c0485 + + + + constexpr bool + is_value + namespacetoml.html + a0d9cd265e448130b95305ccd68d2f508 + + + + constexpr bool + is_node + namespacetoml.html + a4e4126f63ba560963de095cd9bee0704 + + + + constexpr bool + is_node_view + namespacetoml.html + ab5b06dac8c1e0de9e06411917e10b618 + + + + constexpr bool + is_key + namespacetoml.html + a7b8ef907d9629d139a30d874b345b195 + + + + constexpr bool + is_key_or_convertible + namespacetoml.html + a052fafde71907ef3a8590ef7ec2455d8 + + + + + toml::literals + namespacetoml_1_1literals.html + + parse_result + operator""_toml + namespacetoml_1_1literals.html + a401530e560c2dc540729af01e10b2a74 + (const char *str, size_t len) + + + parse_result + operator""_toml + namespacetoml_1_1literals.html + abb2307d66538d0d43dd074040f83224c + (const char8_t *str, size_t len) + + + path + operator""_tpath + namespacetoml_1_1literals.html + ad406c84d960dd5bda91564f738f67d47 + (const char *str, size_t len) + + + + configuration + Library Configuration + group__configuration.html + + #define + TOML_CONFIG_HEADER + group__configuration.html + ga09204feb4a3ff5534623c2bd052dcec0 + + + + #define + TOML_HEADER_ONLY + group__configuration.html + ga8219bfd7e75587516385b6022b28abc2 + + + + #define + TOML_HEADER_ONLY + group__configuration.html + ga8219bfd7e75587516385b6022b28abc2 + + + + #define + TOML_IMPLEMENTATION + group__configuration.html + ga27ee69835a1ddff9dbaf3015b4b08a11 + + + + #define + TOML_EXPORTED_CLASS + group__configuration.html + ga3d7aebf91431575688d573f09a17559a + + + + #define + TOML_EXPORTED_MEMBER_FUNCTION + group__configuration.html + gadf515bb7a6b8ce6b14bf86c8961a63cb + + + + #define + TOML_EXPORTED_STATIC_FUNCTION + group__configuration.html + ga8436c6f378c73f3446a3b6f1e2c5e81c + + + + #define + TOML_EXPORTED_FREE_FUNCTION + group__configuration.html + gac40a454cde06de4e76df3d6d460a3544 + + + + #define + TOML_ENABLE_UNRELEASED_FEATURES + group__configuration.html + ga1110ff7d189a7738b9109d120f568b6b + + + + #define + TOML_ENABLE_PARSER + group__configuration.html + ga121912d75d4624de6ab6854e41d8a852 + + + + #define + TOML_ENABLE_FORMATTERS + group__configuration.html + ga9fc77582d9de77f59d2ddc9ae1f748ca + + + + #define + TOML_ENABLE_WINDOWS_COMPAT + group__configuration.html + ga94867db67c98e0e9d4fbb70690951fbf + + + + #define + TOML_OPTIONAL_TYPE + group__configuration.html + ga9c2c03f867eb6d76a5f65b06eeb1186e + + + + #define + TOML_EXCEPTIONS + group__configuration.html + ga93097ecd88ca4bca393f60a78bda643b + + + + #define + TOML_CALLCONV + group__configuration.html + ga2bfc7ae4747f15378d92249aadce019e + + + + #define + TOML_SMALL_FLOAT_TYPE + group__configuration.html + ga11a3368da40938a6b5cfd898320706f7 + + + + #define + TOML_ASSERT + group__configuration.html + ga8c407a8f6fe52a795db35be3f00393f8 + (expr) + + + #define + TOML_SMALL_INT_TYPE + group__configuration.html + ga0722fa2c57da6360c7f2ba08c60e1a81 + + + + #define + TOML_ENABLE_FLOAT16 + group__configuration.html + ga56ab81041897681ac38ceba52a380b97 + + + + #define + TOML_DISABLE_CONDITIONAL_NOEXCEPT_LAMBDA + group__configuration.html + ga5c13a4a38e4b663c78ab84b7c99845f4 + + + + #define + TOML_DISABLE_NOEXCEPT_NOEXCEPT + group__configuration.html + gac69eea7bc0905d58a6afc199982ed7ad + + + + + poxy_changelog + Changelog + poxy_changelog.html + + + index + toml++ + index.html + mainpage-features + mainpage-api-documentation + mainpage-example + mainpage-example-parsing-files + mainpage-example-parsing-strings + mainpage-example-parsing-without-exceptions + mainpage-example-custom-error-formatting + mainpage-example-manipulations + mainpage-example-serialization + mainpage-example-speed-up-compilation + mainpage-adding-lib + mainpage-adding-lib-old-school + mainpage-adding-lib-conan + mainpage-adding-lib-dds + mainpage-adding-lib-meson + mainpage-adding-lib-tipi + mainpage-adding-lib-vcpkg + mainpage-adding-lib-cmake-fetch-content + mainpage-adding-lib-git-submodules + mainpage-adding-lib-other + mainpage-adding-lib-python + mainpage-configuration + mainpage-contributing + mainpage-license + mainpage-contact + + -- cgit 0.0.5-2-1-g0f52