| // mojo/public/mojom/base/values.mojom.h is auto generated by mojom_bindings_generator.py, do not edit |
| |
| // Copyright 2013 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef MOJO_PUBLIC_MOJOM_BASE_VALUES_MOJOM_H_ |
| #define MOJO_PUBLIC_MOJOM_BASE_VALUES_MOJOM_H_ |
| |
| #include <stdint.h> |
| |
| #include <limits> |
| #include <optional> |
| #include <type_traits> |
| #include <utility> |
| |
| #include "base/types/cxx23_to_underlying.h" |
| #include "mojo/public/cpp/bindings/clone_traits.h" |
| #include "mojo/public/cpp/bindings/equals_traits.h" |
| #include "mojo/public/cpp/bindings/lib/serialization.h" |
| #include "mojo/public/cpp/bindings/struct_ptr.h" |
| #include "mojo/public/cpp/bindings/struct_traits.h" |
| #include "mojo/public/cpp/bindings/union_traits.h" |
| |
| #include "third_party/perfetto/include/perfetto/tracing/traced_value_forward.h" |
| |
| #include "mojo/public/mojom/base/values.mojom-features.h" |
| #include "mojo/public/mojom/base/values.mojom-shared.h" |
| #include "mojo/public/mojom/base/values.mojom-forward.h" |
| #include <string> |
| #include <vector> |
| |
| |
| |
| |
| #include "mojo/public/cpp/base/values_mojom_traits.h" |
| #include "base/component_export.h" |
| |
| #ifdef KYTHE_IS_RUNNING |
| #pragma kythe_inline_metadata "Metadata comment" |
| #endif |
| |
| |
| namespace mojo_base::mojom { |
| |
| |
| |
| |
| |
| |
| |
| // @generated_from: mojo_base.mojom.Value |
| class COMPONENT_EXPORT(MOJO_BASE_MOJOM) Value { |
| public: |
| using DataView = ValueDataView; |
| using Data_ = internal::Value_Data; |
| using Tag = Data_::Value_Tag; |
| |
| template <typename... Args> |
| static ValuePtr New(Args&&... args) { |
| static_assert( |
| sizeof...(args) < 0, |
| "Do not use Union::New(); to create a union of a given subtype, use " |
| "New<SubType>(), not New() followed by set_<sub_type>(). To represent " |
| "an empty union, mark the field or parameter as nullable in the mojom " |
| "definition."); |
| return nullptr; |
| } |
| // Construct an instance holding |null_value|. |
| static ValuePtr |
| NewNullValue( |
| uint8_t value) { |
| auto result = ValuePtr(std::in_place); |
| result->set_null_value(std::move(value)); |
| return result; |
| } |
| // Construct an instance holding |bool_value|. |
| static ValuePtr |
| NewBoolValue( |
| bool value) { |
| auto result = ValuePtr(std::in_place); |
| result->set_bool_value(std::move(value)); |
| return result; |
| } |
| // Construct an instance holding |int_value|. |
| static ValuePtr |
| NewIntValue( |
| int32_t value) { |
| auto result = ValuePtr(std::in_place); |
| result->set_int_value(std::move(value)); |
| return result; |
| } |
| // Construct an instance holding |double_value|. |
| static ValuePtr |
| NewDoubleValue( |
| double value) { |
| auto result = ValuePtr(std::in_place); |
| result->set_double_value(std::move(value)); |
| return result; |
| } |
| // Construct an instance holding |string_value|. |
| static ValuePtr |
| NewStringValue( |
| const std::string& value) { |
| auto result = ValuePtr(std::in_place); |
| result->set_string_value(std::move(value)); |
| return result; |
| } |
| // Construct an instance holding |binary_value|. |
| static ValuePtr |
| NewBinaryValue( |
| std::vector<uint8_t> value) { |
| auto result = ValuePtr(std::in_place); |
| result->set_binary_value(std::move(value)); |
| return result; |
| } |
| // Construct an instance holding |dictionary_value|. |
| static ValuePtr |
| NewDictionaryValue( |
| ::base::Value::Dict value) { |
| auto result = ValuePtr(std::in_place); |
| result->set_dictionary_value(std::move(value)); |
| return result; |
| } |
| // Construct an instance holding |list_value|. |
| static ValuePtr |
| NewListValue( |
| ::base::Value::List value) { |
| auto result = ValuePtr(std::in_place); |
| result->set_list_value(std::move(value)); |
| return result; |
| } |
| |
| template <typename U> |
| static ValuePtr From(const U& u) { |
| return mojo::TypeConverter<ValuePtr, U>::Convert(u); |
| } |
| |
| template <typename U> |
| U To() const { |
| return mojo::TypeConverter<U, Value>::Convert(*this); |
| } |
| |
| Value(); |
| ~Value(); |
| // Delete the copy constructor and copy assignment operators because `data_` |
| // contains raw pointers that must not be copied. |
| Value(const Value& other) = delete; |
| Value& operator=(const Value& other) = delete; |
| |
| // Clone() is a template so it is only instantiated if it is used. Thus, the |
| // bindings generator does not need to know whether Clone() or copy |
| // constructor/assignment are available for members. |
| template <typename UnionPtrType = ValuePtr> |
| ValuePtr Clone() const; |
| |
| // Equals() is a template so it is only instantiated if it is used. Thus, the |
| // bindings generator does not need to know whether Equals() or == operator |
| // are available for members. |
| template <typename T, |
| typename std::enable_if<std::is_same< |
| T, Value>::value>::type* = nullptr> |
| bool Equals(const T& other) const; |
| |
| template <typename T, |
| typename std::enable_if<std::is_same< |
| T, Value>::value>::type* = nullptr> |
| bool operator==(const T& rhs) const { return Equals(rhs); } |
| |
| Tag which() const { |
| return tag_; |
| } |
| |
| |
| |
| // @generated_from: mojo_base.mojom.Value.null_value |
| bool is_null_value() const { return tag_ == Tag::kNullValue; } |
| |
| |
| // @generated_from: mojo_base.mojom.Value.null_value |
| uint8_t get_null_value() const { |
| CHECK(tag_ == Tag::kNullValue); |
| return data_.null_value; |
| } |
| |
| |
| // @generated_from: mojo_base.mojom.Value.null_value |
| void set_null_value( |
| uint8_t null_value); |
| |
| // @generated_from: mojo_base.mojom.Value.bool_value |
| bool is_bool_value() const { return tag_ == Tag::kBoolValue; } |
| |
| |
| // @generated_from: mojo_base.mojom.Value.bool_value |
| bool get_bool_value() const { |
| CHECK(tag_ == Tag::kBoolValue); |
| return data_.bool_value; |
| } |
| |
| |
| // @generated_from: mojo_base.mojom.Value.bool_value |
| void set_bool_value( |
| bool bool_value); |
| |
| // @generated_from: mojo_base.mojom.Value.int_value |
| bool is_int_value() const { return tag_ == Tag::kIntValue; } |
| |
| |
| // @generated_from: mojo_base.mojom.Value.int_value |
| int32_t get_int_value() const { |
| CHECK(tag_ == Tag::kIntValue); |
| return data_.int_value; |
| } |
| |
| |
| // @generated_from: mojo_base.mojom.Value.int_value |
| void set_int_value( |
| int32_t int_value); |
| |
| // @generated_from: mojo_base.mojom.Value.double_value |
| bool is_double_value() const { return tag_ == Tag::kDoubleValue; } |
| |
| |
| // @generated_from: mojo_base.mojom.Value.double_value |
| double get_double_value() const { |
| CHECK(tag_ == Tag::kDoubleValue); |
| return data_.double_value; |
| } |
| |
| |
| // @generated_from: mojo_base.mojom.Value.double_value |
| void set_double_value( |
| double double_value); |
| |
| // @generated_from: mojo_base.mojom.Value.string_value |
| bool is_string_value() const { return tag_ == Tag::kStringValue; } |
| |
| |
| // @generated_from: mojo_base.mojom.Value.string_value |
| std::string& get_string_value() const { |
| CHECK(tag_ == Tag::kStringValue); |
| return *(data_.string_value); |
| } |
| |
| |
| // @generated_from: mojo_base.mojom.Value.string_value |
| void set_string_value( |
| const std::string& string_value); |
| |
| // @generated_from: mojo_base.mojom.Value.binary_value |
| bool is_binary_value() const { return tag_ == Tag::kBinaryValue; } |
| |
| |
| // @generated_from: mojo_base.mojom.Value.binary_value |
| std::vector<uint8_t>& get_binary_value() const { |
| CHECK(tag_ == Tag::kBinaryValue); |
| return *(data_.binary_value); |
| } |
| |
| |
| // @generated_from: mojo_base.mojom.Value.binary_value |
| void set_binary_value( |
| std::vector<uint8_t> binary_value); |
| |
| // @generated_from: mojo_base.mojom.Value.dictionary_value |
| bool is_dictionary_value() const { return tag_ == Tag::kDictionaryValue; } |
| |
| |
| // @generated_from: mojo_base.mojom.Value.dictionary_value |
| ::base::Value::Dict& get_dictionary_value() const { |
| CHECK(tag_ == Tag::kDictionaryValue); |
| return *(data_.dictionary_value); |
| } |
| |
| |
| // @generated_from: mojo_base.mojom.Value.dictionary_value |
| void set_dictionary_value( |
| ::base::Value::Dict dictionary_value); |
| |
| // @generated_from: mojo_base.mojom.Value.list_value |
| bool is_list_value() const { return tag_ == Tag::kListValue; } |
| |
| |
| // @generated_from: mojo_base.mojom.Value.list_value |
| ::base::Value::List& get_list_value() const { |
| CHECK(tag_ == Tag::kListValue); |
| return *(data_.list_value); |
| } |
| |
| |
| // @generated_from: mojo_base.mojom.Value.list_value |
| void set_list_value( |
| ::base::Value::List list_value); |
| |
| template <typename UserType> |
| static mojo::Message SerializeAsMessage(UserType* input) { |
| return mojo::internal::SerializeAsMessageImpl< |
| Value::DataView>(input); |
| } |
| |
| template <typename UserType> |
| static bool DeserializeFromMessage(mojo::Message input, |
| UserType* output) { |
| return mojo::internal::DeserializeImpl<Value::DataView>( |
| input, input.payload(), input.payload_num_bytes(), output, Validate); |
| } |
| |
| private: |
| union Union_ { |
| Union_() = default; |
| ~Union_() = default; |
| uint8_t null_value; |
| bool bool_value; |
| int32_t int_value; |
| double double_value; |
| std::string* string_value; |
| std::vector<uint8_t>* binary_value; |
| ::base::Value::Dict* dictionary_value; |
| ::base::Value::List* list_value; |
| }; |
| |
| static bool Validate(const void* data, |
| mojo::internal::ValidationContext* validation_context); |
| |
| void DestroyActive(); |
| Tag tag_; |
| Union_ data_; |
| }; |
| |
| |
| |
| |
| |
| // @generated_from: mojo_base.mojom.DictionaryValue |
| class COMPONENT_EXPORT(MOJO_BASE_MOJOM) DictionaryValue { |
| public: |
| template <typename T> |
| using EnableIfSame = std::enable_if_t<std::is_same<DictionaryValue, T>::value>; |
| using DataView = DictionaryValueDataView; |
| using Data_ = internal::DictionaryValue_Data; |
| |
| template <typename... Args> |
| static DictionaryValuePtr New(Args&&... args) { |
| return DictionaryValuePtr( |
| std::in_place, std::forward<Args>(args)...); |
| } |
| |
| template <typename U> |
| static DictionaryValuePtr From(const U& u) { |
| return mojo::TypeConverter<DictionaryValuePtr, U>::Convert(u); |
| } |
| |
| template <typename U> |
| U To() const { |
| return mojo::TypeConverter<U, DictionaryValue>::Convert(*this); |
| } |
| |
| |
| DictionaryValue(); |
| |
| explicit DictionaryValue( |
| base::flat_map<std::string, ::base::Value> storage); |
| |
| DictionaryValue(const DictionaryValue&) = delete; |
| DictionaryValue& operator=(const DictionaryValue&) = delete; |
| |
| ~DictionaryValue(); |
| |
| // Clone() is a template so it is only instantiated if it is used. Thus, the |
| // bindings generator does not need to know whether Clone() or copy |
| // constructor/assignment are available for members. |
| template <typename StructPtrType = DictionaryValuePtr> |
| DictionaryValuePtr Clone() const; |
| |
| // Equals() is a template so it is only instantiated if it is used. Thus, the |
| // bindings generator does not need to know whether Equals() or == operator |
| // are available for members. |
| template <typename T, DictionaryValue::EnableIfSame<T>* = nullptr> |
| bool Equals(const T& other) const; |
| |
| template <typename T, DictionaryValue::EnableIfSame<T>* = nullptr> |
| bool operator==(const T& rhs) const { return Equals(rhs); } |
| |
| template <typename T, DictionaryValue::EnableIfSame<T>* = nullptr> |
| bool operator!=(const T& rhs) const { return !operator==(rhs); } |
| template <typename UserType> |
| static std::vector<uint8_t> Serialize(UserType* input) { |
| return mojo::internal::SerializeImpl< |
| DictionaryValue::DataView, std::vector<uint8_t>>(input); |
| } |
| |
| template <typename UserType> |
| static mojo::Message SerializeAsMessage(UserType* input) { |
| return mojo::internal::SerializeAsMessageImpl< |
| DictionaryValue::DataView>(input); |
| } |
| |
| // The returned Message is serialized only if the message is moved |
| // cross-process or cross-language. Otherwise if the message is Deserialized |
| // as the same UserType |input| will just be moved to |output| in |
| // DeserializeFromMessage. |
| template <typename UserType> |
| static mojo::Message WrapAsMessage(UserType input) { |
| return mojo::Message(std::make_unique< |
| internal::DictionaryValue_UnserializedMessageContext< |
| UserType, DictionaryValue::DataView>>(0, 0, std::move(input)), |
| MOJO_CREATE_MESSAGE_FLAG_NONE); |
| } |
| |
| template <typename UserType> |
| static bool Deserialize(const void* data, |
| size_t data_num_bytes, |
| UserType* output) { |
| mojo::Message message; |
| return mojo::internal::DeserializeImpl<DictionaryValue::DataView>( |
| message, data, data_num_bytes, output, Validate); |
| } |
| |
| template <typename UserType> |
| static bool Deserialize(const std::vector<uint8_t>& input, |
| UserType* output) { |
| return DictionaryValue::Deserialize( |
| input.size() == 0 ? nullptr : &input.front(), input.size(), output); |
| } |
| |
| template <typename UserType> |
| static bool DeserializeFromMessage(mojo::Message input, |
| UserType* output) { |
| auto context = input.TakeUnserializedContext< |
| internal::DictionaryValue_UnserializedMessageContext< |
| UserType, DictionaryValue::DataView>>(); |
| if (context) { |
| *output = std::move(context->TakeData()); |
| return true; |
| } |
| input.SerializeIfNecessary(); |
| return mojo::internal::DeserializeImpl<DictionaryValue::DataView>( |
| input, input.payload(), input.payload_num_bytes(), output, Validate); |
| } |
| |
| |
| // @generated_from: mojo_base.mojom.DictionaryValue.storage |
| base::flat_map<std::string, ::base::Value> storage; |
| |
| // Serialise this struct into a trace. |
| void WriteIntoTrace(perfetto::TracedValue traced_context) const; |
| |
| private: |
| static bool Validate(const void* data, |
| mojo::internal::ValidationContext* validation_context); |
| }; |
| |
| // The comparison operators are templates, so they are only instantiated if they |
| // are used. Thus, the bindings generator does not need to know whether |
| // comparison operators are available for members. |
| template <typename T, DictionaryValue::EnableIfSame<T>* = nullptr> |
| bool operator<(const T& lhs, const T& rhs); |
| |
| template <typename T, DictionaryValue::EnableIfSame<T>* = nullptr> |
| bool operator<=(const T& lhs, const T& rhs) { |
| return !(rhs < lhs); |
| } |
| |
| template <typename T, DictionaryValue::EnableIfSame<T>* = nullptr> |
| bool operator>(const T& lhs, const T& rhs) { |
| return rhs < lhs; |
| } |
| |
| template <typename T, DictionaryValue::EnableIfSame<T>* = nullptr> |
| bool operator>=(const T& lhs, const T& rhs) { |
| return !(lhs < rhs); |
| } |
| |
| |
| |
| |
| |
| // @generated_from: mojo_base.mojom.ListValue |
| class COMPONENT_EXPORT(MOJO_BASE_MOJOM) ListValue { |
| public: |
| template <typename T> |
| using EnableIfSame = std::enable_if_t<std::is_same<ListValue, T>::value>; |
| using DataView = ListValueDataView; |
| using Data_ = internal::ListValue_Data; |
| |
| template <typename... Args> |
| static ListValuePtr New(Args&&... args) { |
| return ListValuePtr( |
| std::in_place, std::forward<Args>(args)...); |
| } |
| |
| template <typename U> |
| static ListValuePtr From(const U& u) { |
| return mojo::TypeConverter<ListValuePtr, U>::Convert(u); |
| } |
| |
| template <typename U> |
| U To() const { |
| return mojo::TypeConverter<U, ListValue>::Convert(*this); |
| } |
| |
| |
| ListValue(); |
| |
| explicit ListValue( |
| std::vector<::base::Value> storage); |
| |
| ListValue(const ListValue&) = delete; |
| ListValue& operator=(const ListValue&) = delete; |
| |
| ~ListValue(); |
| |
| // Clone() is a template so it is only instantiated if it is used. Thus, the |
| // bindings generator does not need to know whether Clone() or copy |
| // constructor/assignment are available for members. |
| template <typename StructPtrType = ListValuePtr> |
| ListValuePtr Clone() const; |
| |
| // Equals() is a template so it is only instantiated if it is used. Thus, the |
| // bindings generator does not need to know whether Equals() or == operator |
| // are available for members. |
| template <typename T, ListValue::EnableIfSame<T>* = nullptr> |
| bool Equals(const T& other) const; |
| |
| template <typename T, ListValue::EnableIfSame<T>* = nullptr> |
| bool operator==(const T& rhs) const { return Equals(rhs); } |
| |
| template <typename T, ListValue::EnableIfSame<T>* = nullptr> |
| bool operator!=(const T& rhs) const { return !operator==(rhs); } |
| template <typename UserType> |
| static std::vector<uint8_t> Serialize(UserType* input) { |
| return mojo::internal::SerializeImpl< |
| ListValue::DataView, std::vector<uint8_t>>(input); |
| } |
| |
| template <typename UserType> |
| static mojo::Message SerializeAsMessage(UserType* input) { |
| return mojo::internal::SerializeAsMessageImpl< |
| ListValue::DataView>(input); |
| } |
| |
| // The returned Message is serialized only if the message is moved |
| // cross-process or cross-language. Otherwise if the message is Deserialized |
| // as the same UserType |input| will just be moved to |output| in |
| // DeserializeFromMessage. |
| template <typename UserType> |
| static mojo::Message WrapAsMessage(UserType input) { |
| return mojo::Message(std::make_unique< |
| internal::ListValue_UnserializedMessageContext< |
| UserType, ListValue::DataView>>(0, 0, std::move(input)), |
| MOJO_CREATE_MESSAGE_FLAG_NONE); |
| } |
| |
| template <typename UserType> |
| static bool Deserialize(const void* data, |
| size_t data_num_bytes, |
| UserType* output) { |
| mojo::Message message; |
| return mojo::internal::DeserializeImpl<ListValue::DataView>( |
| message, data, data_num_bytes, output, Validate); |
| } |
| |
| template <typename UserType> |
| static bool Deserialize(const std::vector<uint8_t>& input, |
| UserType* output) { |
| return ListValue::Deserialize( |
| input.size() == 0 ? nullptr : &input.front(), input.size(), output); |
| } |
| |
| template <typename UserType> |
| static bool DeserializeFromMessage(mojo::Message input, |
| UserType* output) { |
| auto context = input.TakeUnserializedContext< |
| internal::ListValue_UnserializedMessageContext< |
| UserType, ListValue::DataView>>(); |
| if (context) { |
| *output = std::move(context->TakeData()); |
| return true; |
| } |
| input.SerializeIfNecessary(); |
| return mojo::internal::DeserializeImpl<ListValue::DataView>( |
| input, input.payload(), input.payload_num_bytes(), output, Validate); |
| } |
| |
| |
| // @generated_from: mojo_base.mojom.ListValue.storage |
| std::vector<::base::Value> storage; |
| |
| // Serialise this struct into a trace. |
| void WriteIntoTrace(perfetto::TracedValue traced_context) const; |
| |
| private: |
| static bool Validate(const void* data, |
| mojo::internal::ValidationContext* validation_context); |
| }; |
| |
| // The comparison operators are templates, so they are only instantiated if they |
| // are used. Thus, the bindings generator does not need to know whether |
| // comparison operators are available for members. |
| template <typename T, ListValue::EnableIfSame<T>* = nullptr> |
| bool operator<(const T& lhs, const T& rhs); |
| |
| template <typename T, ListValue::EnableIfSame<T>* = nullptr> |
| bool operator<=(const T& lhs, const T& rhs) { |
| return !(rhs < lhs); |
| } |
| |
| template <typename T, ListValue::EnableIfSame<T>* = nullptr> |
| bool operator>(const T& lhs, const T& rhs) { |
| return rhs < lhs; |
| } |
| |
| template <typename T, ListValue::EnableIfSame<T>* = nullptr> |
| bool operator>=(const T& lhs, const T& rhs) { |
| return !(lhs < rhs); |
| } |
| |
| template <typename UnionPtrType> |
| ValuePtr Value::Clone() const { |
| switch (tag_) { |
| case Tag::kNullValue: |
| return NewNullValue( |
| mojo::Clone(data_.null_value)); |
| case Tag::kBoolValue: |
| return NewBoolValue( |
| mojo::Clone(data_.bool_value)); |
| case Tag::kIntValue: |
| return NewIntValue( |
| mojo::Clone(data_.int_value)); |
| case Tag::kDoubleValue: |
| return NewDoubleValue( |
| mojo::Clone(data_.double_value)); |
| case Tag::kStringValue: |
| return NewStringValue( |
| mojo::Clone(*data_.string_value)); |
| case Tag::kBinaryValue: |
| return NewBinaryValue( |
| mojo::Clone(*data_.binary_value)); |
| case Tag::kDictionaryValue: |
| return NewDictionaryValue( |
| mojo::Clone(*data_.dictionary_value)); |
| case Tag::kListValue: |
| return NewListValue( |
| mojo::Clone(*data_.list_value)); |
| } |
| return nullptr; |
| } |
| |
| template <typename T, |
| typename std::enable_if<std::is_same< |
| T, Value>::value>::type*> |
| bool Value::Equals(const T& other) const { |
| if (tag_ != other.which()) |
| return false; |
| |
| switch (tag_) { |
| case Tag::kNullValue: |
| return mojo::Equals(data_.null_value, other.data_.null_value); |
| case Tag::kBoolValue: |
| return mojo::Equals(data_.bool_value, other.data_.bool_value); |
| case Tag::kIntValue: |
| return mojo::Equals(data_.int_value, other.data_.int_value); |
| case Tag::kDoubleValue: |
| return mojo::Equals(data_.double_value, other.data_.double_value); |
| case Tag::kStringValue: |
| return mojo::Equals(*(data_.string_value), *(other.data_.string_value)); |
| case Tag::kBinaryValue: |
| return mojo::Equals(*(data_.binary_value), *(other.data_.binary_value)); |
| case Tag::kDictionaryValue: |
| return mojo::Equals(*(data_.dictionary_value), *(other.data_.dictionary_value)); |
| case Tag::kListValue: |
| return mojo::Equals(*(data_.list_value), *(other.data_.list_value)); |
| } |
| |
| return false; |
| } |
| template <typename StructPtrType> |
| DictionaryValuePtr DictionaryValue::Clone() const { |
| return New( |
| mojo::Clone(storage) |
| ); |
| } |
| |
| template <typename T, DictionaryValue::EnableIfSame<T>*> |
| bool DictionaryValue::Equals(const T& other_struct) const { |
| if (!mojo::Equals(this->storage, other_struct.storage)) |
| return false; |
| return true; |
| } |
| |
| template <typename T, DictionaryValue::EnableIfSame<T>*> |
| bool operator<(const T& lhs, const T& rhs) { |
| if (lhs.storage < rhs.storage) |
| return true; |
| if (rhs.storage < lhs.storage) |
| return false; |
| return false; |
| } |
| template <typename StructPtrType> |
| ListValuePtr ListValue::Clone() const { |
| return New( |
| mojo::Clone(storage) |
| ); |
| } |
| |
| template <typename T, ListValue::EnableIfSame<T>*> |
| bool ListValue::Equals(const T& other_struct) const { |
| if (!mojo::Equals(this->storage, other_struct.storage)) |
| return false; |
| return true; |
| } |
| |
| template <typename T, ListValue::EnableIfSame<T>*> |
| bool operator<(const T& lhs, const T& rhs) { |
| if (lhs.storage < rhs.storage) |
| return true; |
| if (rhs.storage < lhs.storage) |
| return false; |
| return false; |
| } |
| |
| |
| } // mojo_base::mojom |
| |
| namespace mojo { |
| |
| |
| template <> |
| struct COMPONENT_EXPORT(MOJO_BASE_MOJOM) StructTraits<::mojo_base::mojom::DictionaryValue::DataView, |
| ::mojo_base::mojom::DictionaryValuePtr> { |
| static bool IsNull(const ::mojo_base::mojom::DictionaryValuePtr& input) { return !input; } |
| static void SetToNull(::mojo_base::mojom::DictionaryValuePtr* output) { output->reset(); } |
| |
| static const decltype(::mojo_base::mojom::DictionaryValue::storage)& storage( |
| const ::mojo_base::mojom::DictionaryValuePtr& input) { |
| return input->storage; |
| } |
| |
| static bool Read(::mojo_base::mojom::DictionaryValue::DataView input, ::mojo_base::mojom::DictionaryValuePtr* output); |
| }; |
| |
| |
| template <> |
| struct COMPONENT_EXPORT(MOJO_BASE_MOJOM) StructTraits<::mojo_base::mojom::ListValue::DataView, |
| ::mojo_base::mojom::ListValuePtr> { |
| static bool IsNull(const ::mojo_base::mojom::ListValuePtr& input) { return !input; } |
| static void SetToNull(::mojo_base::mojom::ListValuePtr* output) { output->reset(); } |
| |
| static const decltype(::mojo_base::mojom::ListValue::storage)& storage( |
| const ::mojo_base::mojom::ListValuePtr& input) { |
| return input->storage; |
| } |
| |
| static bool Read(::mojo_base::mojom::ListValue::DataView input, ::mojo_base::mojom::ListValuePtr* output); |
| }; |
| |
| |
| template <> |
| struct COMPONENT_EXPORT(MOJO_BASE_MOJOM) UnionTraits<::mojo_base::mojom::Value::DataView, |
| ::mojo_base::mojom::ValuePtr> { |
| static bool IsNull(const ::mojo_base::mojom::ValuePtr& input) { return !input; } |
| static void SetToNull(::mojo_base::mojom::ValuePtr* output) { output->reset(); } |
| |
| static ::mojo_base::mojom::Value::Tag GetTag(const ::mojo_base::mojom::ValuePtr& input) { |
| return input->which(); |
| } |
| |
| static uint8_t null_value(const ::mojo_base::mojom::ValuePtr& input) { |
| return input->get_null_value(); |
| } |
| |
| static bool bool_value(const ::mojo_base::mojom::ValuePtr& input) { |
| return input->get_bool_value(); |
| } |
| |
| static int32_t int_value(const ::mojo_base::mojom::ValuePtr& input) { |
| return input->get_int_value(); |
| } |
| |
| static double double_value(const ::mojo_base::mojom::ValuePtr& input) { |
| return input->get_double_value(); |
| } |
| |
| static const std::string& string_value(const ::mojo_base::mojom::ValuePtr& input) { |
| return input->get_string_value(); |
| } |
| |
| static const std::vector<uint8_t>& binary_value(const ::mojo_base::mojom::ValuePtr& input) { |
| return input->get_binary_value(); |
| } |
| |
| static const ::base::Value::Dict& dictionary_value(const ::mojo_base::mojom::ValuePtr& input) { |
| return input->get_dictionary_value(); |
| } |
| |
| static const ::base::Value::List& list_value(const ::mojo_base::mojom::ValuePtr& input) { |
| return input->get_list_value(); |
| } |
| |
| static bool Read(::mojo_base::mojom::Value::DataView input, ::mojo_base::mojom::ValuePtr* output); |
| }; |
| |
| } // namespace mojo |
| |
| #endif // MOJO_PUBLIC_MOJOM_BASE_VALUES_MOJOM_H_
|
| /* Metadata comment
|
| eyJ0eXBlIjogImt5dGhlMCIsICJtZXRhIjogW3sidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJi
|
| ZWdpbiI6IDEzODMsICJlbmQiOiAxMzg4LCAidm5hbWUiOiB7Imxhbmd1YWdlIjogIm1vam9tIiwg
|
| ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVzZWFyY2gvY2hyb21pdW0v
|
| c3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJtb2pvX2Jhc2UubW9qb20uVmFsdWUifSwgImVkZ2Ui
|
| OiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAi
|
| YmVnaW4iOiA1MTI4LCAiZW5kIjogNTE0MSwgInZuYW1lIjogeyJsYW5ndWFnZSI6ICJtb2pvbSIs
|
| ICJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jb2Rlc2VhcmNoL2Nocm9taXVt
|
| L3NyYy8vbWFpbiIsICJzaWduYXR1cmUiOiAibW9qb19iYXNlLm1vam9tLlZhbHVlLm51bGxfdmFs
|
| dWUifSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5jaG9y
|
| X2RlZmluZXMiLCAiYmVnaW4iOiA1MjUzLCAiZW5kIjogNTI2NywgInZuYW1lIjogeyJsYW5ndWFn
|
| ZSI6ICJtb2pvbSIsICJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jb2Rlc2Vh
|
| cmNoL2Nocm9taXVtL3NyYy8vbWFpbiIsICJzaWduYXR1cmUiOiAibW9qb19iYXNlLm1vam9tLlZh
|
| bHVlLm51bGxfdmFsdWUifSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5
|
| cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAiYmVnaW4iOiA1NDExLCAiZW5kIjogNTQyNSwgInZuYW1l
|
| IjogeyJsYW5ndWFnZSI6ICJtb2pvbSIsICJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNl
|
| LmNvbS9jb2Rlc2VhcmNoL2Nocm9taXVtL3NyYy8vbWFpbiIsICJzaWduYXR1cmUiOiAibW9qb19i
|
| YXNlLm1vam9tLlZhbHVlLm51bGxfdmFsdWUifSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVy
|
| YXRlcyJ9LCB7InR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAiYmVnaW4iOiA1NTE3LCAiZW5kIjog
|
| NTUzMCwgInZuYW1lIjogeyJsYW5ndWFnZSI6ICJtb2pvbSIsICJjb3JwdXMiOiAiY2hyb21pdW0u
|
| Z29vZ2xlc291cmNlLmNvbS9jb2Rlc2VhcmNoL2Nocm9taXVtL3NyYy8vbWFpbiIsICJzaWduYXR1
|
| cmUiOiAibW9qb19iYXNlLm1vam9tLlZhbHVlLmJvb2xfdmFsdWUifSwgImVkZ2UiOiAiJS9reXRo
|
| ZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAiYmVnaW4iOiA1
|
| NjM5LCAiZW5kIjogNTY1MywgInZuYW1lIjogeyJsYW5ndWFnZSI6ICJtb2pvbSIsICJjb3JwdXMi
|
| OiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jb2Rlc2VhcmNoL2Nocm9taXVtL3NyYy8vbWFp
|
| biIsICJzaWduYXR1cmUiOiAibW9qb19iYXNlLm1vam9tLlZhbHVlLmJvb2xfdmFsdWUifSwgImVk
|
| Z2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5jaG9yX2RlZmluZXMi
|
| LCAiYmVnaW4iOiA1Nzk3LCAiZW5kIjogNTgxMSwgInZuYW1lIjogeyJsYW5ndWFnZSI6ICJtb2pv
|
| bSIsICJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jb2Rlc2VhcmNoL2Nocm9t
|
| aXVtL3NyYy8vbWFpbiIsICJzaWduYXR1cmUiOiAibW9qb19iYXNlLm1vam9tLlZhbHVlLmJvb2xf
|
| dmFsdWUifSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5j
|
| aG9yX2RlZmluZXMiLCAiYmVnaW4iOiA1ODk5LCAiZW5kIjogNTkxMSwgInZuYW1lIjogeyJsYW5n
|
| dWFnZSI6ICJtb2pvbSIsICJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jb2Rl
|
| c2VhcmNoL2Nocm9taXVtL3NyYy8vbWFpbiIsICJzaWduYXR1cmUiOiAibW9qb19iYXNlLm1vam9t
|
| LlZhbHVlLmludF92YWx1ZSJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsi
|
| dHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDYwMjEsICJlbmQiOiA2MDM0LCAidm5h
|
| bWUiOiB7Imxhbmd1YWdlIjogIm1vam9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3Vy
|
| Y2UuY29tL2NvZGVzZWFyY2gvY2hyb21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJtb2pv
|
| X2Jhc2UubW9qb20uVmFsdWUuaW50X3ZhbHVlIn0sICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5l
|
| cmF0ZXMifSwgeyJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgImJlZ2luIjogNjE3NSwgImVuZCI6
|
| IDYxODgsICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVt
|
| Lmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0
|
| dXJlIjogIm1vam9fYmFzZS5tb2pvbS5WYWx1ZS5pbnRfdmFsdWUifSwgImVkZ2UiOiAiJS9reXRo
|
| ZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAiYmVnaW4iOiA2
|
| MjgxLCAiZW5kIjogNjI5NiwgInZuYW1lIjogeyJsYW5ndWFnZSI6ICJtb2pvbSIsICJjb3JwdXMi
|
| OiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jb2Rlc2VhcmNoL2Nocm9taXVtL3NyYy8vbWFp
|
| biIsICJzaWduYXR1cmUiOiAibW9qb19iYXNlLm1vam9tLlZhbHVlLmRvdWJsZV92YWx1ZSJ9LCAi
|
| ZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3JfZGVmaW5l
|
| cyIsICJiZWdpbiI6IDY0MTEsICJlbmQiOiA2NDI3LCAidm5hbWUiOiB7Imxhbmd1YWdlIjogIm1v
|
| am9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVzZWFyY2gvY2hy
|
| b21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJtb2pvX2Jhc2UubW9qb20uVmFsdWUuZG91
|
| YmxlX3ZhbHVlIn0sICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMifSwgeyJ0eXBlIjog
|
| ImFuY2hvcl9kZWZpbmVzIiwgImJlZ2luIjogNjU3NywgImVuZCI6IDY1OTMsICJ2bmFtZSI6IHsi
|
| bGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20v
|
| Y29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogIm1vam9fYmFzZS5t
|
| b2pvbS5WYWx1ZS5kb3VibGVfdmFsdWUifSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRl
|
| cyJ9LCB7InR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAiYmVnaW4iOiA2Njg4LCAiZW5kIjogNjcw
|
| MywgInZuYW1lIjogeyJsYW5ndWFnZSI6ICJtb2pvbSIsICJjb3JwdXMiOiAiY2hyb21pdW0uZ29v
|
| Z2xlc291cmNlLmNvbS9jb2Rlc2VhcmNoL2Nocm9taXVtL3NyYy8vbWFpbiIsICJzaWduYXR1cmUi
|
| OiAibW9qb19iYXNlLm1vam9tLlZhbHVlLnN0cmluZ192YWx1ZSJ9LCAiZWRnZSI6ICIlL2t5dGhl
|
| L2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDY4
|
| MjQsICJlbmQiOiA2ODQwLCAidm5hbWUiOiB7Imxhbmd1YWdlIjogIm1vam9tIiwgImNvcnB1cyI6
|
| ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVzZWFyY2gvY2hyb21pdW0vc3JjLy9tYWlu
|
| IiwgInNpZ25hdHVyZSI6ICJtb2pvX2Jhc2UubW9qb20uVmFsdWUuc3RyaW5nX3ZhbHVlIn0sICJl
|
| ZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMifSwgeyJ0eXBlIjogImFuY2hvcl9kZWZpbmVz
|
| IiwgImJlZ2luIjogNjk5MywgImVuZCI6IDcwMDksICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9q
|
| b20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJv
|
| bWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogIm1vam9fYmFzZS5tb2pvbS5WYWx1ZS5zdHJp
|
| bmdfdmFsdWUifSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAi
|
| YW5jaG9yX2RlZmluZXMiLCAiYmVnaW4iOiA3MTE2LCAiZW5kIjogNzEzMSwgInZuYW1lIjogeyJs
|
| YW5ndWFnZSI6ICJtb2pvbSIsICJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9j
|
| b2Rlc2VhcmNoL2Nocm9taXVtL3NyYy8vbWFpbiIsICJzaWduYXR1cmUiOiAibW9qb19iYXNlLm1v
|
| am9tLlZhbHVlLmJpbmFyeV92YWx1ZSJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVz
|
| In0sIHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDcyNjEsICJlbmQiOiA3Mjc3
|
| LCAidm5hbWUiOiB7Imxhbmd1YWdlIjogIm1vam9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29n
|
| bGVzb3VyY2UuY29tL2NvZGVzZWFyY2gvY2hyb21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6
|
| ICJtb2pvX2Jhc2UubW9qb20uVmFsdWUuYmluYXJ5X3ZhbHVlIn0sICJlZGdlIjogIiUva3l0aGUv
|
| ZWRnZS9nZW5lcmF0ZXMifSwgeyJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgImJlZ2luIjogNzQz
|
| MCwgImVuZCI6IDc0NDYsICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjog
|
| ImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4i
|
| LCAic2lnbmF0dXJlIjogIm1vam9fYmFzZS5tb2pvbS5WYWx1ZS5iaW5hcnlfdmFsdWUifSwgImVk
|
| Z2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5jaG9yX2RlZmluZXMi
|
| LCAiYmVnaW4iOiA3NTU5LCAiZW5kIjogNzU3OCwgInZuYW1lIjogeyJsYW5ndWFnZSI6ICJtb2pv
|
| bSIsICJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jb2Rlc2VhcmNoL2Nocm9t
|
| aXVtL3NyYy8vbWFpbiIsICJzaWduYXR1cmUiOiAibW9qb19iYXNlLm1vam9tLlZhbHVlLmRpY3Rp
|
| b25hcnlfdmFsdWUifSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUi
|
| OiAiYW5jaG9yX2RlZmluZXMiLCAiYmVnaW4iOiA3NzE1LCAiZW5kIjogNzczNSwgInZuYW1lIjog
|
| eyJsYW5ndWFnZSI6ICJtb2pvbSIsICJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNv
|
| bS9jb2Rlc2VhcmNoL2Nocm9taXVtL3NyYy8vbWFpbiIsICJzaWduYXR1cmUiOiAibW9qb19iYXNl
|
| Lm1vam9tLlZhbHVlLmRpY3Rpb25hcnlfdmFsdWUifSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dl
|
| bmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAiYmVnaW4iOiA3OTAwLCAiZW5k
|
| IjogNzkyMCwgInZuYW1lIjogeyJsYW5ndWFnZSI6ICJtb2pvbSIsICJjb3JwdXMiOiAiY2hyb21p
|
| dW0uZ29vZ2xlc291cmNlLmNvbS9jb2Rlc2VhcmNoL2Nocm9taXVtL3NyYy8vbWFpbiIsICJzaWdu
|
| YXR1cmUiOiAibW9qb19iYXNlLm1vam9tLlZhbHVlLmRpY3Rpb25hcnlfdmFsdWUifSwgImVkZ2Ui
|
| OiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAi
|
| YmVnaW4iOiA4MDMwLCAiZW5kIjogODA0MywgInZuYW1lIjogeyJsYW5ndWFnZSI6ICJtb2pvbSIs
|
| ICJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jb2Rlc2VhcmNoL2Nocm9taXVt
|
| L3NyYy8vbWFpbiIsICJzaWduYXR1cmUiOiAibW9qb19iYXNlLm1vam9tLlZhbHVlLmxpc3RfdmFs
|
| dWUifSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5jaG9y
|
| X2RlZmluZXMiLCAiYmVnaW4iOiA4MTY4LCAiZW5kIjogODE4MiwgInZuYW1lIjogeyJsYW5ndWFn
|
| ZSI6ICJtb2pvbSIsICJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jb2Rlc2Vh
|
| cmNoL2Nocm9taXVtL3NyYy8vbWFpbiIsICJzaWduYXR1cmUiOiAibW9qb19iYXNlLm1vam9tLlZh
|
| bHVlLmxpc3RfdmFsdWUifSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5
|
| cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAiYmVnaW4iOiA4MzI5LCAiZW5kIjogODM0MywgInZuYW1l
|
| IjogeyJsYW5ndWFnZSI6ICJtb2pvbSIsICJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNl
|
| LmNvbS9jb2Rlc2VhcmNoL2Nocm9taXVtL3NyYy8vbWFpbiIsICJzaWduYXR1cmUiOiAibW9qb19i
|
| YXNlLm1vam9tLlZhbHVlLmxpc3RfdmFsdWUifSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVy
|
| YXRlcyJ9LCB7InR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAiYmVnaW4iOiA5NDU1LCAiZW5kIjog
|
| OTQ3MCwgInZuYW1lIjogeyJsYW5ndWFnZSI6ICJtb2pvbSIsICJjb3JwdXMiOiAiY2hyb21pdW0u
|
| Z29vZ2xlc291cmNlLmNvbS9jb2Rlc2VhcmNoL2Nocm9taXVtL3NyYy8vbWFpbiIsICJzaWduYXR1
|
| cmUiOiAibW9qb19iYXNlLm1vam9tLkRpY3Rpb25hcnlWYWx1ZSJ9LCAiZWRnZSI6ICIlL2t5dGhl
|
| L2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDEz
|
| NDU2LCAiZW5kIjogMTM0NjMsICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVz
|
| IjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21h
|
| aW4iLCAic2lnbmF0dXJlIjogIm1vam9fYmFzZS5tb2pvbS5EaWN0aW9uYXJ5VmFsdWUuc3RvcmFn
|
| ZSJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3Jf
|
| ZGVmaW5lcyIsICJiZWdpbiI6IDE0NTI4LCAiZW5kIjogMTQ1MzcsICJ2bmFtZSI6IHsibGFuZ3Vh
|
| Z2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNl
|
| YXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogIm1vam9fYmFzZS5tb2pvbS5M
|
| aXN0VmFsdWUifSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAi
|
| YW5jaG9yX2RlZmluZXMiLCAiYmVnaW4iOiAxODMxMSwgImVuZCI6IDE4MzE4LCAidm5hbWUiOiB7
|
| Imxhbmd1YWdlIjogIm1vam9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29t
|
| L2NvZGVzZWFyY2gvY2hyb21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJtb2pvX2Jhc2Uu
|
| bW9qb20uTGlzdFZhbHVlLnN0b3JhZ2UifSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRl
|
| cyJ9XX0=
|
| */ |