| // Copyright 2013 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef SERVICES_DEVICE_PUBLIC_MOJOM_SERIAL_MOJOM_H_ |
| #define SERVICES_DEVICE_PUBLIC_MOJOM_SERIAL_MOJOM_H_ |
| |
| #include <stdint.h> |
| |
| #include <limits> |
| #include <type_traits> |
| #include <utility> |
| |
| #include "base/callback.h" |
| #include "base/macros.h" |
| #include "base/optional.h" |
| |
| #include "mojo/public/cpp/bindings/mojo_buildflags.h" |
| #if BUILDFLAG(MOJO_TRACE_ENABLED) |
| #include "base/trace_event/trace_event.h" |
| #endif |
| #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 "services/device/public/mojom/serial.mojom-shared.h" |
| #include "services/device/public/mojom/serial.mojom-forward.h" |
| #include "mojo/public/mojom/base/file_path.mojom.h" |
| #include "mojo/public/mojom/base/unguessable_token.mojom.h" |
| #include <string> |
| #include <vector> |
| |
| #include "mojo/public/cpp/bindings/associated_interface_ptr.h" |
| #include "mojo/public/cpp/bindings/associated_interface_ptr_info.h" |
| #include "mojo/public/cpp/bindings/associated_interface_request.h" |
| #include "mojo/public/cpp/bindings/interface_ptr.h" |
| #include "mojo/public/cpp/bindings/interface_request.h" |
| #include "mojo/public/cpp/bindings/lib/control_message_handler.h" |
| #include "mojo/public/cpp/bindings/raw_ptr_impl_ref_traits.h" |
| #include "mojo/public/cpp/bindings/thread_safe_interface_ptr.h" |
| |
| |
| #include "mojo/public/cpp/bindings/lib/native_enum_serialization.h" |
| #include "mojo/public/cpp/bindings/lib/native_struct_serialization.h" |
| |
| #ifdef KYTHE_IS_RUNNING |
| #pragma kythe_inline_metadata "Metadata comment" |
| #endif |
| |
| |
| namespace device { |
| namespace mojom { |
| |
| class SerialPortManagerProxy; |
| |
| template <typename ImplRefTraits> |
| class SerialPortManagerStub; |
| |
| class SerialPortManagerRequestValidator; |
| class SerialPortManagerResponseValidator; |
| |
| |
| // @generated_from: device.mojom.SerialPortManager |
| class SerialPortManager |
| : public SerialPortManagerInterfaceBase { |
| public: |
| static const char Name_[]; |
| static constexpr uint32_t Version_ = 0; |
| static constexpr bool PassesAssociatedKinds_ = false; |
| static constexpr bool HasSyncMethods_ = false; |
| |
| using Base_ = SerialPortManagerInterfaceBase; |
| using Proxy_ = SerialPortManagerProxy; |
| |
| template <typename ImplRefTraits> |
| using Stub_ = SerialPortManagerStub<ImplRefTraits>; |
| |
| using RequestValidator_ = SerialPortManagerRequestValidator; |
| using ResponseValidator_ = SerialPortManagerResponseValidator; |
| enum MethodMinVersions : uint32_t { |
| kGetDevicesMinVersion = 0, |
| kGetPortMinVersion = 0, |
| }; |
| virtual ~SerialPortManager() {} |
| |
| |
| using GetDevicesCallback = base::OnceCallback<void(std::vector<SerialPortInfoPtr>)>; |
| |
| // @generated_from: device.mojom.SerialPortManager.GetDevices |
| virtual void GetDevices(GetDevicesCallback callback) = 0; |
| |
| |
| // @generated_from: device.mojom.SerialPortManager.GetPort |
| virtual void GetPort(const base::UnguessableToken& token, SerialPortRequest port_request, SerialPortConnectionWatcherPtr watcher) = 0; |
| }; |
| |
| class SerialPortProxy; |
| |
| template <typename ImplRefTraits> |
| class SerialPortStub; |
| |
| class SerialPortRequestValidator; |
| class SerialPortResponseValidator; |
| |
| |
| // @generated_from: device.mojom.SerialPort |
| class SerialPort |
| : public SerialPortInterfaceBase { |
| public: |
| static const char Name_[]; |
| static constexpr uint32_t Version_ = 0; |
| static constexpr bool PassesAssociatedKinds_ = false; |
| static constexpr bool HasSyncMethods_ = false; |
| |
| using Base_ = SerialPortInterfaceBase; |
| using Proxy_ = SerialPortProxy; |
| |
| template <typename ImplRefTraits> |
| using Stub_ = SerialPortStub<ImplRefTraits>; |
| |
| using RequestValidator_ = SerialPortRequestValidator; |
| using ResponseValidator_ = SerialPortResponseValidator; |
| enum MethodMinVersions : uint32_t { |
| kOpenMinVersion = 0, |
| kClearSendErrorMinVersion = 0, |
| kClearReadErrorMinVersion = 0, |
| kFlushMinVersion = 0, |
| kGetControlSignalsMinVersion = 0, |
| kSetControlSignalsMinVersion = 0, |
| kConfigurePortMinVersion = 0, |
| kGetPortInfoMinVersion = 0, |
| kSetBreakMinVersion = 0, |
| kClearBreakMinVersion = 0, |
| }; |
| virtual ~SerialPort() {} |
| |
| |
| using OpenCallback = base::OnceCallback<void(bool)>; |
| |
| // @generated_from: device.mojom.SerialPort.Open |
| virtual void Open(SerialConnectionOptionsPtr options, mojo::ScopedDataPipeConsumerHandle in_stream, mojo::ScopedDataPipeProducerHandle out_stream, SerialPortClientPtr client, OpenCallback callback) = 0; |
| |
| |
| // @generated_from: device.mojom.SerialPort.ClearSendError |
| virtual void ClearSendError(mojo::ScopedDataPipeConsumerHandle consumer) = 0; |
| |
| |
| // @generated_from: device.mojom.SerialPort.ClearReadError |
| virtual void ClearReadError(mojo::ScopedDataPipeProducerHandle producer) = 0; |
| |
| |
| using FlushCallback = base::OnceCallback<void(bool)>; |
| |
| // @generated_from: device.mojom.SerialPort.Flush |
| virtual void Flush(FlushCallback callback) = 0; |
| |
| |
| using GetControlSignalsCallback = base::OnceCallback<void(SerialPortControlSignalsPtr)>; |
| |
| // @generated_from: device.mojom.SerialPort.GetControlSignals |
| virtual void GetControlSignals(GetControlSignalsCallback callback) = 0; |
| |
| |
| using SetControlSignalsCallback = base::OnceCallback<void(bool)>; |
| |
| // @generated_from: device.mojom.SerialPort.SetControlSignals |
| virtual void SetControlSignals(SerialHostControlSignalsPtr signals, SetControlSignalsCallback callback) = 0; |
| |
| |
| using ConfigurePortCallback = base::OnceCallback<void(bool)>; |
| |
| // @generated_from: device.mojom.SerialPort.ConfigurePort |
| virtual void ConfigurePort(SerialConnectionOptionsPtr options, ConfigurePortCallback callback) = 0; |
| |
| |
| using GetPortInfoCallback = base::OnceCallback<void(SerialConnectionInfoPtr)>; |
| |
| // @generated_from: device.mojom.SerialPort.GetPortInfo |
| virtual void GetPortInfo(GetPortInfoCallback callback) = 0; |
| |
| |
| using SetBreakCallback = base::OnceCallback<void(bool)>; |
| |
| // @generated_from: device.mojom.SerialPort.SetBreak |
| virtual void SetBreak(SetBreakCallback callback) = 0; |
| |
| |
| using ClearBreakCallback = base::OnceCallback<void(bool)>; |
| |
| // @generated_from: device.mojom.SerialPort.ClearBreak |
| virtual void ClearBreak(ClearBreakCallback callback) = 0; |
| }; |
| |
| class SerialPortClientProxy; |
| |
| template <typename ImplRefTraits> |
| class SerialPortClientStub; |
| |
| class SerialPortClientRequestValidator; |
| |
| |
| // @generated_from: device.mojom.SerialPortClient |
| class SerialPortClient |
| : public SerialPortClientInterfaceBase { |
| public: |
| static const char Name_[]; |
| static constexpr uint32_t Version_ = 0; |
| static constexpr bool PassesAssociatedKinds_ = false; |
| static constexpr bool HasSyncMethods_ = false; |
| |
| using Base_ = SerialPortClientInterfaceBase; |
| using Proxy_ = SerialPortClientProxy; |
| |
| template <typename ImplRefTraits> |
| using Stub_ = SerialPortClientStub<ImplRefTraits>; |
| |
| using RequestValidator_ = SerialPortClientRequestValidator; |
| using ResponseValidator_ = mojo::PassThroughFilter; |
| enum MethodMinVersions : uint32_t { |
| kOnReadErrorMinVersion = 0, |
| kOnSendErrorMinVersion = 0, |
| }; |
| virtual ~SerialPortClient() {} |
| |
| |
| // @generated_from: device.mojom.SerialPortClient.OnReadError |
| virtual void OnReadError(SerialReceiveError error) = 0; |
| |
| |
| // @generated_from: device.mojom.SerialPortClient.OnSendError |
| virtual void OnSendError(SerialSendError error) = 0; |
| }; |
| |
| class SerialPortConnectionWatcherProxy; |
| |
| template <typename ImplRefTraits> |
| class SerialPortConnectionWatcherStub; |
| |
| class SerialPortConnectionWatcherRequestValidator; |
| |
| |
| // @generated_from: device.mojom.SerialPortConnectionWatcher |
| class SerialPortConnectionWatcher |
| : public SerialPortConnectionWatcherInterfaceBase { |
| public: |
| static const char Name_[]; |
| static constexpr uint32_t Version_ = 0; |
| static constexpr bool PassesAssociatedKinds_ = false; |
| static constexpr bool HasSyncMethods_ = false; |
| |
| using Base_ = SerialPortConnectionWatcherInterfaceBase; |
| using Proxy_ = SerialPortConnectionWatcherProxy; |
| |
| template <typename ImplRefTraits> |
| using Stub_ = SerialPortConnectionWatcherStub<ImplRefTraits>; |
| |
| using RequestValidator_ = SerialPortConnectionWatcherRequestValidator; |
| using ResponseValidator_ = mojo::PassThroughFilter; |
| enum MethodMinVersions : uint32_t { |
| }; |
| virtual ~SerialPortConnectionWatcher() {} |
| }; |
| |
| class SerialPortManagerProxy |
| : public SerialPortManager { |
| public: |
| using InterfaceType = SerialPortManager; |
| |
| explicit SerialPortManagerProxy(mojo::MessageReceiverWithResponder* receiver); |
| void GetDevices(GetDevicesCallback callback) final; |
| void GetPort(const base::UnguessableToken& token, SerialPortRequest port_request, SerialPortConnectionWatcherPtr watcher) final; |
| |
| private: |
| mojo::MessageReceiverWithResponder* receiver_; |
| }; |
| |
| class SerialPortProxy |
| : public SerialPort { |
| public: |
| using InterfaceType = SerialPort; |
| |
| explicit SerialPortProxy(mojo::MessageReceiverWithResponder* receiver); |
| void Open(SerialConnectionOptionsPtr options, mojo::ScopedDataPipeConsumerHandle in_stream, mojo::ScopedDataPipeProducerHandle out_stream, SerialPortClientPtr client, OpenCallback callback) final; |
| void ClearSendError(mojo::ScopedDataPipeConsumerHandle consumer) final; |
| void ClearReadError(mojo::ScopedDataPipeProducerHandle producer) final; |
| void Flush(FlushCallback callback) final; |
| void GetControlSignals(GetControlSignalsCallback callback) final; |
| void SetControlSignals(SerialHostControlSignalsPtr signals, SetControlSignalsCallback callback) final; |
| void ConfigurePort(SerialConnectionOptionsPtr options, ConfigurePortCallback callback) final; |
| void GetPortInfo(GetPortInfoCallback callback) final; |
| void SetBreak(SetBreakCallback callback) final; |
| void ClearBreak(ClearBreakCallback callback) final; |
| |
| private: |
| mojo::MessageReceiverWithResponder* receiver_; |
| }; |
| |
| class SerialPortClientProxy |
| : public SerialPortClient { |
| public: |
| using InterfaceType = SerialPortClient; |
| |
| explicit SerialPortClientProxy(mojo::MessageReceiverWithResponder* receiver); |
| void OnReadError(SerialReceiveError error) final; |
| void OnSendError(SerialSendError error) final; |
| |
| private: |
| mojo::MessageReceiverWithResponder* receiver_; |
| }; |
| |
| class SerialPortConnectionWatcherProxy |
| : public SerialPortConnectionWatcher { |
| public: |
| using InterfaceType = SerialPortConnectionWatcher; |
| |
| explicit SerialPortConnectionWatcherProxy(mojo::MessageReceiverWithResponder* receiver); |
| |
| private: |
| mojo::MessageReceiverWithResponder* receiver_; |
| }; |
| class SerialPortManagerStubDispatch { |
| public: |
| static bool Accept(SerialPortManager* impl, mojo::Message* message); |
| static bool AcceptWithResponder( |
| SerialPortManager* impl, |
| mojo::Message* message, |
| std::unique_ptr<mojo::MessageReceiverWithStatus> responder); |
| }; |
| |
| template <typename ImplRefTraits = |
| mojo::RawPtrImplRefTraits<SerialPortManager>> |
| class SerialPortManagerStub |
| : public mojo::MessageReceiverWithResponderStatus { |
| public: |
| using ImplPointerType = typename ImplRefTraits::PointerType; |
| |
| SerialPortManagerStub() {} |
| ~SerialPortManagerStub() override {} |
| |
| void set_sink(ImplPointerType sink) { sink_ = std::move(sink); } |
| ImplPointerType& sink() { return sink_; } |
| |
| bool Accept(mojo::Message* message) override { |
| if (ImplRefTraits::IsNull(sink_)) |
| return false; |
| return SerialPortManagerStubDispatch::Accept( |
| ImplRefTraits::GetRawPointer(&sink_), message); |
| } |
| |
| bool AcceptWithResponder( |
| mojo::Message* message, |
| std::unique_ptr<mojo::MessageReceiverWithStatus> responder) override { |
| if (ImplRefTraits::IsNull(sink_)) |
| return false; |
| return SerialPortManagerStubDispatch::AcceptWithResponder( |
| ImplRefTraits::GetRawPointer(&sink_), message, std::move(responder)); |
| } |
| |
| private: |
| ImplPointerType sink_; |
| }; |
| class SerialPortStubDispatch { |
| public: |
| static bool Accept(SerialPort* impl, mojo::Message* message); |
| static bool AcceptWithResponder( |
| SerialPort* impl, |
| mojo::Message* message, |
| std::unique_ptr<mojo::MessageReceiverWithStatus> responder); |
| }; |
| |
| template <typename ImplRefTraits = |
| mojo::RawPtrImplRefTraits<SerialPort>> |
| class SerialPortStub |
| : public mojo::MessageReceiverWithResponderStatus { |
| public: |
| using ImplPointerType = typename ImplRefTraits::PointerType; |
| |
| SerialPortStub() {} |
| ~SerialPortStub() override {} |
| |
| void set_sink(ImplPointerType sink) { sink_ = std::move(sink); } |
| ImplPointerType& sink() { return sink_; } |
| |
| bool Accept(mojo::Message* message) override { |
| if (ImplRefTraits::IsNull(sink_)) |
| return false; |
| return SerialPortStubDispatch::Accept( |
| ImplRefTraits::GetRawPointer(&sink_), message); |
| } |
| |
| bool AcceptWithResponder( |
| mojo::Message* message, |
| std::unique_ptr<mojo::MessageReceiverWithStatus> responder) override { |
| if (ImplRefTraits::IsNull(sink_)) |
| return false; |
| return SerialPortStubDispatch::AcceptWithResponder( |
| ImplRefTraits::GetRawPointer(&sink_), message, std::move(responder)); |
| } |
| |
| private: |
| ImplPointerType sink_; |
| }; |
| class SerialPortClientStubDispatch { |
| public: |
| static bool Accept(SerialPortClient* impl, mojo::Message* message); |
| static bool AcceptWithResponder( |
| SerialPortClient* impl, |
| mojo::Message* message, |
| std::unique_ptr<mojo::MessageReceiverWithStatus> responder); |
| }; |
| |
| template <typename ImplRefTraits = |
| mojo::RawPtrImplRefTraits<SerialPortClient>> |
| class SerialPortClientStub |
| : public mojo::MessageReceiverWithResponderStatus { |
| public: |
| using ImplPointerType = typename ImplRefTraits::PointerType; |
| |
| SerialPortClientStub() {} |
| ~SerialPortClientStub() override {} |
| |
| void set_sink(ImplPointerType sink) { sink_ = std::move(sink); } |
| ImplPointerType& sink() { return sink_; } |
| |
| bool Accept(mojo::Message* message) override { |
| if (ImplRefTraits::IsNull(sink_)) |
| return false; |
| return SerialPortClientStubDispatch::Accept( |
| ImplRefTraits::GetRawPointer(&sink_), message); |
| } |
| |
| bool AcceptWithResponder( |
| mojo::Message* message, |
| std::unique_ptr<mojo::MessageReceiverWithStatus> responder) override { |
| if (ImplRefTraits::IsNull(sink_)) |
| return false; |
| return SerialPortClientStubDispatch::AcceptWithResponder( |
| ImplRefTraits::GetRawPointer(&sink_), message, std::move(responder)); |
| } |
| |
| private: |
| ImplPointerType sink_; |
| }; |
| class SerialPortConnectionWatcherStubDispatch { |
| public: |
| static bool Accept(SerialPortConnectionWatcher* impl, mojo::Message* message); |
| static bool AcceptWithResponder( |
| SerialPortConnectionWatcher* impl, |
| mojo::Message* message, |
| std::unique_ptr<mojo::MessageReceiverWithStatus> responder); |
| }; |
| |
| template <typename ImplRefTraits = |
| mojo::RawPtrImplRefTraits<SerialPortConnectionWatcher>> |
| class SerialPortConnectionWatcherStub |
| : public mojo::MessageReceiverWithResponderStatus { |
| public: |
| using ImplPointerType = typename ImplRefTraits::PointerType; |
| |
| SerialPortConnectionWatcherStub() {} |
| ~SerialPortConnectionWatcherStub() override {} |
| |
| void set_sink(ImplPointerType sink) { sink_ = std::move(sink); } |
| ImplPointerType& sink() { return sink_; } |
| |
| bool Accept(mojo::Message* message) override { |
| if (ImplRefTraits::IsNull(sink_)) |
| return false; |
| return SerialPortConnectionWatcherStubDispatch::Accept( |
| ImplRefTraits::GetRawPointer(&sink_), message); |
| } |
| |
| bool AcceptWithResponder( |
| mojo::Message* message, |
| std::unique_ptr<mojo::MessageReceiverWithStatus> responder) override { |
| if (ImplRefTraits::IsNull(sink_)) |
| return false; |
| return SerialPortConnectionWatcherStubDispatch::AcceptWithResponder( |
| ImplRefTraits::GetRawPointer(&sink_), message, std::move(responder)); |
| } |
| |
| private: |
| ImplPointerType sink_; |
| }; |
| class SerialPortManagerRequestValidator : public mojo::MessageReceiver { |
| public: |
| bool Accept(mojo::Message* message) override; |
| }; |
| class SerialPortRequestValidator : public mojo::MessageReceiver { |
| public: |
| bool Accept(mojo::Message* message) override; |
| }; |
| class SerialPortClientRequestValidator : public mojo::MessageReceiver { |
| public: |
| bool Accept(mojo::Message* message) override; |
| }; |
| class SerialPortConnectionWatcherRequestValidator : public mojo::MessageReceiver { |
| public: |
| bool Accept(mojo::Message* message) override; |
| }; |
| class SerialPortManagerResponseValidator : public mojo::MessageReceiver { |
| public: |
| bool Accept(mojo::Message* message) override; |
| }; |
| class SerialPortResponseValidator : public mojo::MessageReceiver { |
| public: |
| bool Accept(mojo::Message* message) override; |
| }; |
| |
| |
| |
| |
| |
| |
| |
| |
| // @generated_from: device.mojom.SerialHostControlSignals |
| class SerialHostControlSignals { |
| public: |
| template <typename T> |
| using EnableIfSame = std::enable_if_t<std::is_same<SerialHostControlSignals, T>::value>; |
| using DataView = SerialHostControlSignalsDataView; |
| using Data_ = internal::SerialHostControlSignals_Data; |
| |
| template <typename... Args> |
| static SerialHostControlSignalsPtr New(Args&&... args) { |
| return SerialHostControlSignalsPtr( |
| base::in_place, std::forward<Args>(args)...); |
| } |
| |
| template <typename U> |
| static SerialHostControlSignalsPtr From(const U& u) { |
| return mojo::TypeConverter<SerialHostControlSignalsPtr, U>::Convert(u); |
| } |
| |
| template <typename U> |
| U To() const { |
| return mojo::TypeConverter<U, SerialHostControlSignals>::Convert(*this); |
| } |
| |
| |
| SerialHostControlSignals(); |
| |
| SerialHostControlSignals( |
| bool dtr, |
| bool has_dtr, |
| bool rts, |
| bool has_rts); |
| |
| ~SerialHostControlSignals(); |
| |
| // 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 = SerialHostControlSignalsPtr> |
| SerialHostControlSignalsPtr 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, SerialHostControlSignals::EnableIfSame<T>* = nullptr> |
| bool Equals(const T& other) const; |
| size_t Hash(size_t seed) const; |
| |
| template <typename UserType> |
| static std::vector<uint8_t> Serialize(UserType* input) { |
| return mojo::internal::SerializeImpl< |
| SerialHostControlSignals::DataView, std::vector<uint8_t>>(input); |
| } |
| |
| template <typename UserType> |
| static mojo::Message SerializeAsMessage(UserType* input) { |
| return mojo::internal::SerializeAsMessageImpl< |
| SerialHostControlSignals::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::SerialHostControlSignals_UnserializedMessageContext< |
| UserType, SerialHostControlSignals::DataView>>(0, 0, std::move(input))); |
| } |
| |
| template <typename UserType> |
| static bool Deserialize(const void* data, |
| size_t data_num_bytes, |
| UserType* output) { |
| return mojo::internal::DeserializeImpl<SerialHostControlSignals::DataView>( |
| data, data_num_bytes, std::vector<mojo::ScopedHandle>(), output, Validate); |
| } |
| |
| template <typename UserType> |
| static bool Deserialize(const std::vector<uint8_t>& input, |
| UserType* output) { |
| return SerialHostControlSignals::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::SerialHostControlSignals_UnserializedMessageContext< |
| UserType, SerialHostControlSignals::DataView>>(); |
| if (context) { |
| *output = std::move(context->TakeData()); |
| return true; |
| } |
| input.SerializeIfNecessary(); |
| return mojo::internal::DeserializeImpl<SerialHostControlSignals::DataView>( |
| input.payload(), input.payload_num_bytes(), |
| std::move(*input.mutable_handles()), output, Validate); |
| } |
| |
| |
| // @generated_from: device.mojom.SerialHostControlSignals.dtr |
| bool dtr; |
| |
| // @generated_from: device.mojom.SerialHostControlSignals.has_dtr |
| bool has_dtr; |
| |
| // @generated_from: device.mojom.SerialHostControlSignals.rts |
| bool rts; |
| |
| // @generated_from: device.mojom.SerialHostControlSignals.has_rts |
| bool has_rts; |
| |
| 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, SerialHostControlSignals::EnableIfSame<T>* = nullptr> |
| bool operator<(const T& lhs, const T& rhs); |
| |
| template <typename T, SerialHostControlSignals::EnableIfSame<T>* = nullptr> |
| bool operator<=(const T& lhs, const T& rhs) { |
| return !(rhs < lhs); |
| } |
| |
| template <typename T, SerialHostControlSignals::EnableIfSame<T>* = nullptr> |
| bool operator>(const T& lhs, const T& rhs) { |
| return rhs < lhs; |
| } |
| |
| template <typename T, SerialHostControlSignals::EnableIfSame<T>* = nullptr> |
| bool operator>=(const T& lhs, const T& rhs) { |
| return !(lhs < rhs); |
| } |
| |
| |
| |
| |
| |
| // @generated_from: device.mojom.SerialPortControlSignals |
| class SerialPortControlSignals { |
| public: |
| template <typename T> |
| using EnableIfSame = std::enable_if_t<std::is_same<SerialPortControlSignals, T>::value>; |
| using DataView = SerialPortControlSignalsDataView; |
| using Data_ = internal::SerialPortControlSignals_Data; |
| |
| template <typename... Args> |
| static SerialPortControlSignalsPtr New(Args&&... args) { |
| return SerialPortControlSignalsPtr( |
| base::in_place, std::forward<Args>(args)...); |
| } |
| |
| template <typename U> |
| static SerialPortControlSignalsPtr From(const U& u) { |
| return mojo::TypeConverter<SerialPortControlSignalsPtr, U>::Convert(u); |
| } |
| |
| template <typename U> |
| U To() const { |
| return mojo::TypeConverter<U, SerialPortControlSignals>::Convert(*this); |
| } |
| |
| |
| SerialPortControlSignals(); |
| |
| SerialPortControlSignals( |
| bool dcd, |
| bool cts, |
| bool ri, |
| bool dsr); |
| |
| ~SerialPortControlSignals(); |
| |
| // 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 = SerialPortControlSignalsPtr> |
| SerialPortControlSignalsPtr 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, SerialPortControlSignals::EnableIfSame<T>* = nullptr> |
| bool Equals(const T& other) const; |
| size_t Hash(size_t seed) const; |
| |
| template <typename UserType> |
| static std::vector<uint8_t> Serialize(UserType* input) { |
| return mojo::internal::SerializeImpl< |
| SerialPortControlSignals::DataView, std::vector<uint8_t>>(input); |
| } |
| |
| template <typename UserType> |
| static mojo::Message SerializeAsMessage(UserType* input) { |
| return mojo::internal::SerializeAsMessageImpl< |
| SerialPortControlSignals::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::SerialPortControlSignals_UnserializedMessageContext< |
| UserType, SerialPortControlSignals::DataView>>(0, 0, std::move(input))); |
| } |
| |
| template <typename UserType> |
| static bool Deserialize(const void* data, |
| size_t data_num_bytes, |
| UserType* output) { |
| return mojo::internal::DeserializeImpl<SerialPortControlSignals::DataView>( |
| data, data_num_bytes, std::vector<mojo::ScopedHandle>(), output, Validate); |
| } |
| |
| template <typename UserType> |
| static bool Deserialize(const std::vector<uint8_t>& input, |
| UserType* output) { |
| return SerialPortControlSignals::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::SerialPortControlSignals_UnserializedMessageContext< |
| UserType, SerialPortControlSignals::DataView>>(); |
| if (context) { |
| *output = std::move(context->TakeData()); |
| return true; |
| } |
| input.SerializeIfNecessary(); |
| return mojo::internal::DeserializeImpl<SerialPortControlSignals::DataView>( |
| input.payload(), input.payload_num_bytes(), |
| std::move(*input.mutable_handles()), output, Validate); |
| } |
| |
| |
| // @generated_from: device.mojom.SerialPortControlSignals.dcd |
| bool dcd; |
| |
| // @generated_from: device.mojom.SerialPortControlSignals.cts |
| bool cts; |
| |
| // @generated_from: device.mojom.SerialPortControlSignals.ri |
| bool ri; |
| |
| // @generated_from: device.mojom.SerialPortControlSignals.dsr |
| bool dsr; |
| |
| 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, SerialPortControlSignals::EnableIfSame<T>* = nullptr> |
| bool operator<(const T& lhs, const T& rhs); |
| |
| template <typename T, SerialPortControlSignals::EnableIfSame<T>* = nullptr> |
| bool operator<=(const T& lhs, const T& rhs) { |
| return !(rhs < lhs); |
| } |
| |
| template <typename T, SerialPortControlSignals::EnableIfSame<T>* = nullptr> |
| bool operator>(const T& lhs, const T& rhs) { |
| return rhs < lhs; |
| } |
| |
| template <typename T, SerialPortControlSignals::EnableIfSame<T>* = nullptr> |
| bool operator>=(const T& lhs, const T& rhs) { |
| return !(lhs < rhs); |
| } |
| |
| |
| |
| |
| |
| |
| |
| // @generated_from: device.mojom.SerialPortInfo |
| class SerialPortInfo { |
| public: |
| template <typename T> |
| using EnableIfSame = std::enable_if_t<std::is_same<SerialPortInfo, T>::value>; |
| using DataView = SerialPortInfoDataView; |
| using Data_ = internal::SerialPortInfo_Data; |
| |
| template <typename... Args> |
| static SerialPortInfoPtr New(Args&&... args) { |
| return SerialPortInfoPtr( |
| base::in_place, std::forward<Args>(args)...); |
| } |
| |
| template <typename U> |
| static SerialPortInfoPtr From(const U& u) { |
| return mojo::TypeConverter<SerialPortInfoPtr, U>::Convert(u); |
| } |
| |
| template <typename U> |
| U To() const { |
| return mojo::TypeConverter<U, SerialPortInfo>::Convert(*this); |
| } |
| |
| |
| SerialPortInfo(); |
| |
| SerialPortInfo( |
| const base::UnguessableToken& token, |
| const base::FilePath& path, |
| uint16_t vendor_id, |
| bool has_vendor_id, |
| uint16_t product_id, |
| bool has_product_id, |
| const base::Optional<std::string>& display_name); |
| |
| ~SerialPortInfo(); |
| |
| // 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 = SerialPortInfoPtr> |
| SerialPortInfoPtr 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, SerialPortInfo::EnableIfSame<T>* = nullptr> |
| bool Equals(const T& other) const; |
| |
| template <typename UserType> |
| static std::vector<uint8_t> Serialize(UserType* input) { |
| return mojo::internal::SerializeImpl< |
| SerialPortInfo::DataView, std::vector<uint8_t>>(input); |
| } |
| |
| template <typename UserType> |
| static mojo::Message SerializeAsMessage(UserType* input) { |
| return mojo::internal::SerializeAsMessageImpl< |
| SerialPortInfo::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::SerialPortInfo_UnserializedMessageContext< |
| UserType, SerialPortInfo::DataView>>(0, 0, std::move(input))); |
| } |
| |
| template <typename UserType> |
| static bool Deserialize(const void* data, |
| size_t data_num_bytes, |
| UserType* output) { |
| return mojo::internal::DeserializeImpl<SerialPortInfo::DataView>( |
| data, data_num_bytes, std::vector<mojo::ScopedHandle>(), output, Validate); |
| } |
| |
| template <typename UserType> |
| static bool Deserialize(const std::vector<uint8_t>& input, |
| UserType* output) { |
| return SerialPortInfo::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::SerialPortInfo_UnserializedMessageContext< |
| UserType, SerialPortInfo::DataView>>(); |
| if (context) { |
| *output = std::move(context->TakeData()); |
| return true; |
| } |
| input.SerializeIfNecessary(); |
| return mojo::internal::DeserializeImpl<SerialPortInfo::DataView>( |
| input.payload(), input.payload_num_bytes(), |
| std::move(*input.mutable_handles()), output, Validate); |
| } |
| |
| |
| // @generated_from: device.mojom.SerialPortInfo.token |
| base::UnguessableToken token; |
| |
| // @generated_from: device.mojom.SerialPortInfo.path |
| base::FilePath path; |
| |
| // @generated_from: device.mojom.SerialPortInfo.vendor_id |
| uint16_t vendor_id; |
| |
| // @generated_from: device.mojom.SerialPortInfo.has_vendor_id |
| bool has_vendor_id; |
| |
| // @generated_from: device.mojom.SerialPortInfo.product_id |
| uint16_t product_id; |
| |
| // @generated_from: device.mojom.SerialPortInfo.has_product_id |
| bool has_product_id; |
| |
| // @generated_from: device.mojom.SerialPortInfo.display_name |
| base::Optional<std::string> display_name; |
| |
| 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, SerialPortInfo::EnableIfSame<T>* = nullptr> |
| bool operator<(const T& lhs, const T& rhs); |
| |
| template <typename T, SerialPortInfo::EnableIfSame<T>* = nullptr> |
| bool operator<=(const T& lhs, const T& rhs) { |
| return !(rhs < lhs); |
| } |
| |
| template <typename T, SerialPortInfo::EnableIfSame<T>* = nullptr> |
| bool operator>(const T& lhs, const T& rhs) { |
| return rhs < lhs; |
| } |
| |
| template <typename T, SerialPortInfo::EnableIfSame<T>* = nullptr> |
| bool operator>=(const T& lhs, const T& rhs) { |
| return !(lhs < rhs); |
| } |
| |
| |
| |
| |
| |
| // @generated_from: device.mojom.SerialConnectionOptions |
| class SerialConnectionOptions { |
| public: |
| template <typename T> |
| using EnableIfSame = std::enable_if_t<std::is_same<SerialConnectionOptions, T>::value>; |
| using DataView = SerialConnectionOptionsDataView; |
| using Data_ = internal::SerialConnectionOptions_Data; |
| |
| template <typename... Args> |
| static SerialConnectionOptionsPtr New(Args&&... args) { |
| return SerialConnectionOptionsPtr( |
| base::in_place, std::forward<Args>(args)...); |
| } |
| |
| template <typename U> |
| static SerialConnectionOptionsPtr From(const U& u) { |
| return mojo::TypeConverter<SerialConnectionOptionsPtr, U>::Convert(u); |
| } |
| |
| template <typename U> |
| U To() const { |
| return mojo::TypeConverter<U, SerialConnectionOptions>::Convert(*this); |
| } |
| |
| |
| SerialConnectionOptions(); |
| |
| SerialConnectionOptions( |
| uint32_t bitrate, |
| SerialDataBits data_bits, |
| SerialParityBit parity_bit, |
| SerialStopBits stop_bits, |
| bool cts_flow_control, |
| bool has_cts_flow_control); |
| |
| ~SerialConnectionOptions(); |
| |
| // 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 = SerialConnectionOptionsPtr> |
| SerialConnectionOptionsPtr 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, SerialConnectionOptions::EnableIfSame<T>* = nullptr> |
| bool Equals(const T& other) const; |
| size_t Hash(size_t seed) const; |
| |
| template <typename UserType> |
| static std::vector<uint8_t> Serialize(UserType* input) { |
| return mojo::internal::SerializeImpl< |
| SerialConnectionOptions::DataView, std::vector<uint8_t>>(input); |
| } |
| |
| template <typename UserType> |
| static mojo::Message SerializeAsMessage(UserType* input) { |
| return mojo::internal::SerializeAsMessageImpl< |
| SerialConnectionOptions::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::SerialConnectionOptions_UnserializedMessageContext< |
| UserType, SerialConnectionOptions::DataView>>(0, 0, std::move(input))); |
| } |
| |
| template <typename UserType> |
| static bool Deserialize(const void* data, |
| size_t data_num_bytes, |
| UserType* output) { |
| return mojo::internal::DeserializeImpl<SerialConnectionOptions::DataView>( |
| data, data_num_bytes, std::vector<mojo::ScopedHandle>(), output, Validate); |
| } |
| |
| template <typename UserType> |
| static bool Deserialize(const std::vector<uint8_t>& input, |
| UserType* output) { |
| return SerialConnectionOptions::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::SerialConnectionOptions_UnserializedMessageContext< |
| UserType, SerialConnectionOptions::DataView>>(); |
| if (context) { |
| *output = std::move(context->TakeData()); |
| return true; |
| } |
| input.SerializeIfNecessary(); |
| return mojo::internal::DeserializeImpl<SerialConnectionOptions::DataView>( |
| input.payload(), input.payload_num_bytes(), |
| std::move(*input.mutable_handles()), output, Validate); |
| } |
| |
| |
| // @generated_from: device.mojom.SerialConnectionOptions.bitrate |
| uint32_t bitrate; |
| |
| // @generated_from: device.mojom.SerialConnectionOptions.data_bits |
| SerialDataBits data_bits; |
| |
| // @generated_from: device.mojom.SerialConnectionOptions.parity_bit |
| SerialParityBit parity_bit; |
| |
| // @generated_from: device.mojom.SerialConnectionOptions.stop_bits |
| SerialStopBits stop_bits; |
| |
| // @generated_from: device.mojom.SerialConnectionOptions.cts_flow_control |
| bool cts_flow_control; |
| |
| // @generated_from: device.mojom.SerialConnectionOptions.has_cts_flow_control |
| bool has_cts_flow_control; |
| |
| 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, SerialConnectionOptions::EnableIfSame<T>* = nullptr> |
| bool operator<(const T& lhs, const T& rhs); |
| |
| template <typename T, SerialConnectionOptions::EnableIfSame<T>* = nullptr> |
| bool operator<=(const T& lhs, const T& rhs) { |
| return !(rhs < lhs); |
| } |
| |
| template <typename T, SerialConnectionOptions::EnableIfSame<T>* = nullptr> |
| bool operator>(const T& lhs, const T& rhs) { |
| return rhs < lhs; |
| } |
| |
| template <typename T, SerialConnectionOptions::EnableIfSame<T>* = nullptr> |
| bool operator>=(const T& lhs, const T& rhs) { |
| return !(lhs < rhs); |
| } |
| |
| |
| |
| |
| |
| // @generated_from: device.mojom.SerialConnectionInfo |
| class SerialConnectionInfo { |
| public: |
| template <typename T> |
| using EnableIfSame = std::enable_if_t<std::is_same<SerialConnectionInfo, T>::value>; |
| using DataView = SerialConnectionInfoDataView; |
| using Data_ = internal::SerialConnectionInfo_Data; |
| |
| template <typename... Args> |
| static SerialConnectionInfoPtr New(Args&&... args) { |
| return SerialConnectionInfoPtr( |
| base::in_place, std::forward<Args>(args)...); |
| } |
| |
| template <typename U> |
| static SerialConnectionInfoPtr From(const U& u) { |
| return mojo::TypeConverter<SerialConnectionInfoPtr, U>::Convert(u); |
| } |
| |
| template <typename U> |
| U To() const { |
| return mojo::TypeConverter<U, SerialConnectionInfo>::Convert(*this); |
| } |
| |
| |
| SerialConnectionInfo(); |
| |
| SerialConnectionInfo( |
| uint32_t bitrate, |
| SerialDataBits data_bits, |
| SerialParityBit parity_bit, |
| SerialStopBits stop_bits, |
| bool cts_flow_control); |
| |
| ~SerialConnectionInfo(); |
| |
| // 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 = SerialConnectionInfoPtr> |
| SerialConnectionInfoPtr 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, SerialConnectionInfo::EnableIfSame<T>* = nullptr> |
| bool Equals(const T& other) const; |
| size_t Hash(size_t seed) const; |
| |
| template <typename UserType> |
| static std::vector<uint8_t> Serialize(UserType* input) { |
| return mojo::internal::SerializeImpl< |
| SerialConnectionInfo::DataView, std::vector<uint8_t>>(input); |
| } |
| |
| template <typename UserType> |
| static mojo::Message SerializeAsMessage(UserType* input) { |
| return mojo::internal::SerializeAsMessageImpl< |
| SerialConnectionInfo::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::SerialConnectionInfo_UnserializedMessageContext< |
| UserType, SerialConnectionInfo::DataView>>(0, 0, std::move(input))); |
| } |
| |
| template <typename UserType> |
| static bool Deserialize(const void* data, |
| size_t data_num_bytes, |
| UserType* output) { |
| return mojo::internal::DeserializeImpl<SerialConnectionInfo::DataView>( |
| data, data_num_bytes, std::vector<mojo::ScopedHandle>(), output, Validate); |
| } |
| |
| template <typename UserType> |
| static bool Deserialize(const std::vector<uint8_t>& input, |
| UserType* output) { |
| return SerialConnectionInfo::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::SerialConnectionInfo_UnserializedMessageContext< |
| UserType, SerialConnectionInfo::DataView>>(); |
| if (context) { |
| *output = std::move(context->TakeData()); |
| return true; |
| } |
| input.SerializeIfNecessary(); |
| return mojo::internal::DeserializeImpl<SerialConnectionInfo::DataView>( |
| input.payload(), input.payload_num_bytes(), |
| std::move(*input.mutable_handles()), output, Validate); |
| } |
| |
| |
| // @generated_from: device.mojom.SerialConnectionInfo.bitrate |
| uint32_t bitrate; |
| |
| // @generated_from: device.mojom.SerialConnectionInfo.data_bits |
| SerialDataBits data_bits; |
| |
| // @generated_from: device.mojom.SerialConnectionInfo.parity_bit |
| SerialParityBit parity_bit; |
| |
| // @generated_from: device.mojom.SerialConnectionInfo.stop_bits |
| SerialStopBits stop_bits; |
| |
| // @generated_from: device.mojom.SerialConnectionInfo.cts_flow_control |
| bool cts_flow_control; |
| |
| 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, SerialConnectionInfo::EnableIfSame<T>* = nullptr> |
| bool operator<(const T& lhs, const T& rhs); |
| |
| template <typename T, SerialConnectionInfo::EnableIfSame<T>* = nullptr> |
| bool operator<=(const T& lhs, const T& rhs) { |
| return !(rhs < lhs); |
| } |
| |
| template <typename T, SerialConnectionInfo::EnableIfSame<T>* = nullptr> |
| bool operator>(const T& lhs, const T& rhs) { |
| return rhs < lhs; |
| } |
| |
| template <typename T, SerialConnectionInfo::EnableIfSame<T>* = nullptr> |
| bool operator>=(const T& lhs, const T& rhs) { |
| return !(lhs < rhs); |
| } |
| |
| |
| |
| template <typename StructPtrType> |
| SerialPortInfoPtr SerialPortInfo::Clone() const { |
| return New( |
| mojo::Clone(token), |
| mojo::Clone(path), |
| mojo::Clone(vendor_id), |
| mojo::Clone(has_vendor_id), |
| mojo::Clone(product_id), |
| mojo::Clone(has_product_id), |
| mojo::Clone(display_name) |
| ); |
| } |
| |
| template <typename T, SerialPortInfo::EnableIfSame<T>*> |
| bool SerialPortInfo::Equals(const T& other_struct) const { |
| if (!mojo::Equals(this->token, other_struct.token)) |
| return false; |
| if (!mojo::Equals(this->path, other_struct.path)) |
| return false; |
| if (!mojo::Equals(this->vendor_id, other_struct.vendor_id)) |
| return false; |
| if (!mojo::Equals(this->has_vendor_id, other_struct.has_vendor_id)) |
| return false; |
| if (!mojo::Equals(this->product_id, other_struct.product_id)) |
| return false; |
| if (!mojo::Equals(this->has_product_id, other_struct.has_product_id)) |
| return false; |
| if (!mojo::Equals(this->display_name, other_struct.display_name)) |
| return false; |
| return true; |
| } |
| |
| template <typename T, SerialPortInfo::EnableIfSame<T>*> |
| bool operator<(const T& lhs, const T& rhs) { |
| if (lhs.token < rhs.token) |
| return true; |
| if (rhs.token < lhs.token) |
| return false; |
| if (lhs.path < rhs.path) |
| return true; |
| if (rhs.path < lhs.path) |
| return false; |
| if (lhs.vendor_id < rhs.vendor_id) |
| return true; |
| if (rhs.vendor_id < lhs.vendor_id) |
| return false; |
| if (lhs.has_vendor_id < rhs.has_vendor_id) |
| return true; |
| if (rhs.has_vendor_id < lhs.has_vendor_id) |
| return false; |
| if (lhs.product_id < rhs.product_id) |
| return true; |
| if (rhs.product_id < lhs.product_id) |
| return false; |
| if (lhs.has_product_id < rhs.has_product_id) |
| return true; |
| if (rhs.has_product_id < lhs.has_product_id) |
| return false; |
| if (lhs.display_name < rhs.display_name) |
| return true; |
| if (rhs.display_name < lhs.display_name) |
| return false; |
| return false; |
| } |
| template <typename StructPtrType> |
| SerialConnectionOptionsPtr SerialConnectionOptions::Clone() const { |
| return New( |
| mojo::Clone(bitrate), |
| mojo::Clone(data_bits), |
| mojo::Clone(parity_bit), |
| mojo::Clone(stop_bits), |
| mojo::Clone(cts_flow_control), |
| mojo::Clone(has_cts_flow_control) |
| ); |
| } |
| |
| template <typename T, SerialConnectionOptions::EnableIfSame<T>*> |
| bool SerialConnectionOptions::Equals(const T& other_struct) const { |
| if (!mojo::Equals(this->bitrate, other_struct.bitrate)) |
| return false; |
| if (!mojo::Equals(this->data_bits, other_struct.data_bits)) |
| return false; |
| if (!mojo::Equals(this->parity_bit, other_struct.parity_bit)) |
| return false; |
| if (!mojo::Equals(this->stop_bits, other_struct.stop_bits)) |
| return false; |
| if (!mojo::Equals(this->cts_flow_control, other_struct.cts_flow_control)) |
| return false; |
| if (!mojo::Equals(this->has_cts_flow_control, other_struct.has_cts_flow_control)) |
| return false; |
| return true; |
| } |
| |
| template <typename T, SerialConnectionOptions::EnableIfSame<T>*> |
| bool operator<(const T& lhs, const T& rhs) { |
| if (lhs.bitrate < rhs.bitrate) |
| return true; |
| if (rhs.bitrate < lhs.bitrate) |
| return false; |
| if (lhs.data_bits < rhs.data_bits) |
| return true; |
| if (rhs.data_bits < lhs.data_bits) |
| return false; |
| if (lhs.parity_bit < rhs.parity_bit) |
| return true; |
| if (rhs.parity_bit < lhs.parity_bit) |
| return false; |
| if (lhs.stop_bits < rhs.stop_bits) |
| return true; |
| if (rhs.stop_bits < lhs.stop_bits) |
| return false; |
| if (lhs.cts_flow_control < rhs.cts_flow_control) |
| return true; |
| if (rhs.cts_flow_control < lhs.cts_flow_control) |
| return false; |
| if (lhs.has_cts_flow_control < rhs.has_cts_flow_control) |
| return true; |
| if (rhs.has_cts_flow_control < lhs.has_cts_flow_control) |
| return false; |
| return false; |
| } |
| template <typename StructPtrType> |
| SerialConnectionInfoPtr SerialConnectionInfo::Clone() const { |
| return New( |
| mojo::Clone(bitrate), |
| mojo::Clone(data_bits), |
| mojo::Clone(parity_bit), |
| mojo::Clone(stop_bits), |
| mojo::Clone(cts_flow_control) |
| ); |
| } |
| |
| template <typename T, SerialConnectionInfo::EnableIfSame<T>*> |
| bool SerialConnectionInfo::Equals(const T& other_struct) const { |
| if (!mojo::Equals(this->bitrate, other_struct.bitrate)) |
| return false; |
| if (!mojo::Equals(this->data_bits, other_struct.data_bits)) |
| return false; |
| if (!mojo::Equals(this->parity_bit, other_struct.parity_bit)) |
| return false; |
| if (!mojo::Equals(this->stop_bits, other_struct.stop_bits)) |
| return false; |
| if (!mojo::Equals(this->cts_flow_control, other_struct.cts_flow_control)) |
| return false; |
| return true; |
| } |
| |
| template <typename T, SerialConnectionInfo::EnableIfSame<T>*> |
| bool operator<(const T& lhs, const T& rhs) { |
| if (lhs.bitrate < rhs.bitrate) |
| return true; |
| if (rhs.bitrate < lhs.bitrate) |
| return false; |
| if (lhs.data_bits < rhs.data_bits) |
| return true; |
| if (rhs.data_bits < lhs.data_bits) |
| return false; |
| if (lhs.parity_bit < rhs.parity_bit) |
| return true; |
| if (rhs.parity_bit < lhs.parity_bit) |
| return false; |
| if (lhs.stop_bits < rhs.stop_bits) |
| return true; |
| if (rhs.stop_bits < lhs.stop_bits) |
| return false; |
| if (lhs.cts_flow_control < rhs.cts_flow_control) |
| return true; |
| if (rhs.cts_flow_control < lhs.cts_flow_control) |
| return false; |
| return false; |
| } |
| template <typename StructPtrType> |
| SerialHostControlSignalsPtr SerialHostControlSignals::Clone() const { |
| return New( |
| mojo::Clone(dtr), |
| mojo::Clone(has_dtr), |
| mojo::Clone(rts), |
| mojo::Clone(has_rts) |
| ); |
| } |
| |
| template <typename T, SerialHostControlSignals::EnableIfSame<T>*> |
| bool SerialHostControlSignals::Equals(const T& other_struct) const { |
| if (!mojo::Equals(this->dtr, other_struct.dtr)) |
| return false; |
| if (!mojo::Equals(this->has_dtr, other_struct.has_dtr)) |
| return false; |
| if (!mojo::Equals(this->rts, other_struct.rts)) |
| return false; |
| if (!mojo::Equals(this->has_rts, other_struct.has_rts)) |
| return false; |
| return true; |
| } |
| |
| template <typename T, SerialHostControlSignals::EnableIfSame<T>*> |
| bool operator<(const T& lhs, const T& rhs) { |
| if (lhs.dtr < rhs.dtr) |
| return true; |
| if (rhs.dtr < lhs.dtr) |
| return false; |
| if (lhs.has_dtr < rhs.has_dtr) |
| return true; |
| if (rhs.has_dtr < lhs.has_dtr) |
| return false; |
| if (lhs.rts < rhs.rts) |
| return true; |
| if (rhs.rts < lhs.rts) |
| return false; |
| if (lhs.has_rts < rhs.has_rts) |
| return true; |
| if (rhs.has_rts < lhs.has_rts) |
| return false; |
| return false; |
| } |
| template <typename StructPtrType> |
| SerialPortControlSignalsPtr SerialPortControlSignals::Clone() const { |
| return New( |
| mojo::Clone(dcd), |
| mojo::Clone(cts), |
| mojo::Clone(ri), |
| mojo::Clone(dsr) |
| ); |
| } |
| |
| template <typename T, SerialPortControlSignals::EnableIfSame<T>*> |
| bool SerialPortControlSignals::Equals(const T& other_struct) const { |
| if (!mojo::Equals(this->dcd, other_struct.dcd)) |
| return false; |
| if (!mojo::Equals(this->cts, other_struct.cts)) |
| return false; |
| if (!mojo::Equals(this->ri, other_struct.ri)) |
| return false; |
| if (!mojo::Equals(this->dsr, other_struct.dsr)) |
| return false; |
| return true; |
| } |
| |
| template <typename T, SerialPortControlSignals::EnableIfSame<T>*> |
| bool operator<(const T& lhs, const T& rhs) { |
| if (lhs.dcd < rhs.dcd) |
| return true; |
| if (rhs.dcd < lhs.dcd) |
| return false; |
| if (lhs.cts < rhs.cts) |
| return true; |
| if (rhs.cts < lhs.cts) |
| return false; |
| if (lhs.ri < rhs.ri) |
| return true; |
| if (rhs.ri < lhs.ri) |
| return false; |
| if (lhs.dsr < rhs.dsr) |
| return true; |
| if (rhs.dsr < lhs.dsr) |
| return false; |
| return false; |
| } |
| |
| |
| } // namespace mojom |
| } // namespace device |
| |
| namespace mojo { |
| |
| |
| template <> |
| struct StructTraits<::device::mojom::SerialPortInfo::DataView, |
| ::device::mojom::SerialPortInfoPtr> { |
| static bool IsNull(const ::device::mojom::SerialPortInfoPtr& input) { return !input; } |
| static void SetToNull(::device::mojom::SerialPortInfoPtr* output) { output->reset(); } |
| |
| static const decltype(::device::mojom::SerialPortInfo::token)& token( |
| const ::device::mojom::SerialPortInfoPtr& input) { |
| return input->token; |
| } |
| |
| static const decltype(::device::mojom::SerialPortInfo::path)& path( |
| const ::device::mojom::SerialPortInfoPtr& input) { |
| return input->path; |
| } |
| |
| static decltype(::device::mojom::SerialPortInfo::vendor_id) vendor_id( |
| const ::device::mojom::SerialPortInfoPtr& input) { |
| return input->vendor_id; |
| } |
| |
| static decltype(::device::mojom::SerialPortInfo::has_vendor_id) has_vendor_id( |
| const ::device::mojom::SerialPortInfoPtr& input) { |
| return input->has_vendor_id; |
| } |
| |
| static decltype(::device::mojom::SerialPortInfo::product_id) product_id( |
| const ::device::mojom::SerialPortInfoPtr& input) { |
| return input->product_id; |
| } |
| |
| static decltype(::device::mojom::SerialPortInfo::has_product_id) has_product_id( |
| const ::device::mojom::SerialPortInfoPtr& input) { |
| return input->has_product_id; |
| } |
| |
| static const decltype(::device::mojom::SerialPortInfo::display_name)& display_name( |
| const ::device::mojom::SerialPortInfoPtr& input) { |
| return input->display_name; |
| } |
| |
| static bool Read(::device::mojom::SerialPortInfo::DataView input, ::device::mojom::SerialPortInfoPtr* output); |
| }; |
| |
| |
| template <> |
| struct StructTraits<::device::mojom::SerialConnectionOptions::DataView, |
| ::device::mojom::SerialConnectionOptionsPtr> { |
| static bool IsNull(const ::device::mojom::SerialConnectionOptionsPtr& input) { return !input; } |
| static void SetToNull(::device::mojom::SerialConnectionOptionsPtr* output) { output->reset(); } |
| |
| static decltype(::device::mojom::SerialConnectionOptions::bitrate) bitrate( |
| const ::device::mojom::SerialConnectionOptionsPtr& input) { |
| return input->bitrate; |
| } |
| |
| static decltype(::device::mojom::SerialConnectionOptions::data_bits) data_bits( |
| const ::device::mojom::SerialConnectionOptionsPtr& input) { |
| return input->data_bits; |
| } |
| |
| static decltype(::device::mojom::SerialConnectionOptions::parity_bit) parity_bit( |
| const ::device::mojom::SerialConnectionOptionsPtr& input) { |
| return input->parity_bit; |
| } |
| |
| static decltype(::device::mojom::SerialConnectionOptions::stop_bits) stop_bits( |
| const ::device::mojom::SerialConnectionOptionsPtr& input) { |
| return input->stop_bits; |
| } |
| |
| static decltype(::device::mojom::SerialConnectionOptions::cts_flow_control) cts_flow_control( |
| const ::device::mojom::SerialConnectionOptionsPtr& input) { |
| return input->cts_flow_control; |
| } |
| |
| static decltype(::device::mojom::SerialConnectionOptions::has_cts_flow_control) has_cts_flow_control( |
| const ::device::mojom::SerialConnectionOptionsPtr& input) { |
| return input->has_cts_flow_control; |
| } |
| |
| static bool Read(::device::mojom::SerialConnectionOptions::DataView input, ::device::mojom::SerialConnectionOptionsPtr* output); |
| }; |
| |
| |
| template <> |
| struct StructTraits<::device::mojom::SerialConnectionInfo::DataView, |
| ::device::mojom::SerialConnectionInfoPtr> { |
| static bool IsNull(const ::device::mojom::SerialConnectionInfoPtr& input) { return !input; } |
| static void SetToNull(::device::mojom::SerialConnectionInfoPtr* output) { output->reset(); } |
| |
| static decltype(::device::mojom::SerialConnectionInfo::bitrate) bitrate( |
| const ::device::mojom::SerialConnectionInfoPtr& input) { |
| return input->bitrate; |
| } |
| |
| static decltype(::device::mojom::SerialConnectionInfo::data_bits) data_bits( |
| const ::device::mojom::SerialConnectionInfoPtr& input) { |
| return input->data_bits; |
| } |
| |
| static decltype(::device::mojom::SerialConnectionInfo::parity_bit) parity_bit( |
| const ::device::mojom::SerialConnectionInfoPtr& input) { |
| return input->parity_bit; |
| } |
| |
| static decltype(::device::mojom::SerialConnectionInfo::stop_bits) stop_bits( |
| const ::device::mojom::SerialConnectionInfoPtr& input) { |
| return input->stop_bits; |
| } |
| |
| static decltype(::device::mojom::SerialConnectionInfo::cts_flow_control) cts_flow_control( |
| const ::device::mojom::SerialConnectionInfoPtr& input) { |
| return input->cts_flow_control; |
| } |
| |
| static bool Read(::device::mojom::SerialConnectionInfo::DataView input, ::device::mojom::SerialConnectionInfoPtr* output); |
| }; |
| |
| |
| template <> |
| struct StructTraits<::device::mojom::SerialHostControlSignals::DataView, |
| ::device::mojom::SerialHostControlSignalsPtr> { |
| static bool IsNull(const ::device::mojom::SerialHostControlSignalsPtr& input) { return !input; } |
| static void SetToNull(::device::mojom::SerialHostControlSignalsPtr* output) { output->reset(); } |
| |
| static decltype(::device::mojom::SerialHostControlSignals::dtr) dtr( |
| const ::device::mojom::SerialHostControlSignalsPtr& input) { |
| return input->dtr; |
| } |
| |
| static decltype(::device::mojom::SerialHostControlSignals::has_dtr) has_dtr( |
| const ::device::mojom::SerialHostControlSignalsPtr& input) { |
| return input->has_dtr; |
| } |
| |
| static decltype(::device::mojom::SerialHostControlSignals::rts) rts( |
| const ::device::mojom::SerialHostControlSignalsPtr& input) { |
| return input->rts; |
| } |
| |
| static decltype(::device::mojom::SerialHostControlSignals::has_rts) has_rts( |
| const ::device::mojom::SerialHostControlSignalsPtr& input) { |
| return input->has_rts; |
| } |
| |
| static bool Read(::device::mojom::SerialHostControlSignals::DataView input, ::device::mojom::SerialHostControlSignalsPtr* output); |
| }; |
| |
| |
| template <> |
| struct StructTraits<::device::mojom::SerialPortControlSignals::DataView, |
| ::device::mojom::SerialPortControlSignalsPtr> { |
| static bool IsNull(const ::device::mojom::SerialPortControlSignalsPtr& input) { return !input; } |
| static void SetToNull(::device::mojom::SerialPortControlSignalsPtr* output) { output->reset(); } |
| |
| static decltype(::device::mojom::SerialPortControlSignals::dcd) dcd( |
| const ::device::mojom::SerialPortControlSignalsPtr& input) { |
| return input->dcd; |
| } |
| |
| static decltype(::device::mojom::SerialPortControlSignals::cts) cts( |
| const ::device::mojom::SerialPortControlSignalsPtr& input) { |
| return input->cts; |
| } |
| |
| static decltype(::device::mojom::SerialPortControlSignals::ri) ri( |
| const ::device::mojom::SerialPortControlSignalsPtr& input) { |
| return input->ri; |
| } |
| |
| static decltype(::device::mojom::SerialPortControlSignals::dsr) dsr( |
| const ::device::mojom::SerialPortControlSignalsPtr& input) { |
| return input->dsr; |
| } |
| |
| static bool Read(::device::mojom::SerialPortControlSignals::DataView input, ::device::mojom::SerialPortControlSignalsPtr* output); |
| }; |
| |
| } // namespace mojo |
| |
| #endif // SERVICES_DEVICE_PUBLIC_MOJOM_SERIAL_MOJOM_H_
|
| /* Metadata comment
|
| eyJtZXRhIjogW3siZW5kIjogMjE3MSwgImJlZ2luIjogMjE1NCwgImVkZ2UiOiAiJS9reXRoZS9l
|
| ZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3Jw
|
| dXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2Ui
|
| OiAibW9qb20iLCAic2lnbmF0dXJlIjogImRldmljZS5tb2pvbS5TZXJpYWxQb3J0TWFuYWdlciJ9
|
| fSwgeyJlbmQiOiAzMDI4LCAiYmVnaW4iOiAzMDE4LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2Vu
|
| ZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJj
|
| aHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pv
|
| bSIsICJzaWduYXR1cmUiOiAiZGV2aWNlLm1vam9tLlNlcmlhbFBvcnRNYW5hZ2VyLkdldERldmlj
|
| ZXMifX0sIHsiZW5kIjogMzE0OCwgImJlZ2luIjogMzE0MSwgImVkZ2UiOiAiJS9reXRoZS9lZGdl
|
| L2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMi
|
| OiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAi
|
| bW9qb20iLCAic2lnbmF0dXJlIjogImRldmljZS5tb2pvbS5TZXJpYWxQb3J0TWFuYWdlci5HZXRQ
|
| b3J0In19LCB7ImVuZCI6IDM0ODAsICJiZWdpbiI6IDM0NzAsICJlZGdlIjogIiUva3l0aGUvZWRn
|
| ZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVz
|
| IjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjog
|
| Im1vam9tIiwgInNpZ25hdHVyZSI6ICJkZXZpY2UubW9qb20uU2VyaWFsUG9ydCJ9fSwgeyJlbmQi
|
| OiA0NTAxLCAiYmVnaW4iOiA0NDk3LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwg
|
| InR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5n
|
| b29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWdu
|
| YXR1cmUiOiAiZGV2aWNlLm1vam9tLlNlcmlhbFBvcnQuT3BlbiJ9fSwgeyJlbmQiOiA0Nzc5LCAi
|
| YmVnaW4iOiA0NzY1LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAi
|
| YW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3Vy
|
| Y2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAi
|
| ZGV2aWNlLm1vam9tLlNlcmlhbFBvcnQuQ2xlYXJTZW5kRXJyb3IifX0sIHsiZW5kIjogNDkyMiwg
|
| ImJlZ2luIjogNDkwOCwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjog
|
| ImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291
|
| cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjog
|
| ImRldmljZS5tb2pvbS5TZXJpYWxQb3J0LkNsZWFyUmVhZEVycm9yIn19LCB7ImVuZCI6IDUxMDQs
|
| ICJiZWdpbiI6IDUwOTksICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6
|
| ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNv
|
| dXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6
|
| ICJkZXZpY2UubW9qb20uU2VyaWFsUG9ydC5GbHVzaCJ9fSwgeyJlbmQiOiA1MzI0LCAiYmVnaW4i
|
| OiA1MzA3LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9y
|
| X2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29t
|
| L2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZGV2aWNl
|
| Lm1vam9tLlNlcmlhbFBvcnQuR2V0Q29udHJvbFNpZ25hbHMifX0sIHsiZW5kIjogNTUzMywgImJl
|
| Z2luIjogNTUxNiwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFu
|
| Y2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNl
|
| LmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImRl
|
| dmljZS5tb2pvbS5TZXJpYWxQb3J0LlNldENvbnRyb2xTaWduYWxzIn19LCB7ImVuZCI6IDU3Njcs
|
| ICJiZWdpbiI6IDU3NTQsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6
|
| ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNv
|
| dXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6
|
| ICJkZXZpY2UubW9qb20uU2VyaWFsUG9ydC5Db25maWd1cmVQb3J0In19LCB7ImVuZCI6IDYwMDks
|
| ICJiZWdpbiI6IDU5OTgsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6
|
| ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNv
|
| dXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6
|
| ICJkZXZpY2UubW9qb20uU2VyaWFsUG9ydC5HZXRQb3J0SW5mbyJ9fSwgeyJlbmQiOiA2MTg1LCAi
|
| YmVnaW4iOiA2MTc3LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAi
|
| YW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3Vy
|
| Y2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAi
|
| ZGV2aWNlLm1vam9tLlNlcmlhbFBvcnQuU2V0QnJlYWsifX0sIHsiZW5kIjogNjM2NCwgImJlZ2lu
|
| IjogNjM1NCwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hv
|
| cl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNv
|
| bS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImRldmlj
|
| ZS5tb2pvbS5TZXJpYWxQb3J0LkNsZWFyQnJlYWsifX0sIHsiZW5kIjogNjYxMSwgImJlZ2luIjog
|
| NjU5NSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9k
|
| ZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9j
|
| aHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImRldmljZS5t
|
| b2pvbS5TZXJpYWxQb3J0Q2xpZW50In19LCB7ImVuZCI6IDczNjksICJiZWdpbiI6IDczNTgsICJl
|
| ZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIs
|
| ICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0v
|
| c3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJkZXZpY2UubW9qb20uU2Vy
|
| aWFsUG9ydENsaWVudC5PblJlYWRFcnJvciJ9fSwgeyJlbmQiOiA3NDkzLCAiYmVnaW4iOiA3NDgy
|
| LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmlu
|
| ZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9t
|
| aXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZGV2aWNlLm1vam9t
|
| LlNlcmlhbFBvcnRDbGllbnQuT25TZW5kRXJyb3IifX0sIHsiZW5kIjogNzc4OSwgImJlZ2luIjog
|
| Nzc2MiwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9k
|
| ZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9j
|
| aHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImRldmljZS5t
|
| b2pvbS5TZXJpYWxQb3J0Q29ubmVjdGlvbldhdGNoZXIifX0sIHsiZW5kIjogMTY3OTAsICJiZWdp
|
| biI6IDE2NzY2LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5j
|
| aG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2Uu
|
| Y29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZGV2
|
| aWNlLm1vam9tLlNlcmlhbEhvc3RDb250cm9sU2lnbmFscyJ9fSwgeyJlbmQiOiAyMDYwOCwgImJl
|
| Z2luIjogMjA2MDUsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJh
|
| bmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJj
|
| ZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJk
|
| ZXZpY2UubW9qb20uU2VyaWFsSG9zdENvbnRyb2xTaWduYWxzLmR0ciJ9fSwgeyJlbmQiOiAyMDY5
|
| MywgImJlZ2luIjogMjA2ODYsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlw
|
| ZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2ds
|
| ZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVy
|
| ZSI6ICJkZXZpY2UubW9qb20uU2VyaWFsSG9zdENvbnRyb2xTaWduYWxzLmhhc19kdHIifX0sIHsi
|
| ZW5kIjogMjA3NzAsICJiZWdpbiI6IDIwNzY3LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJh
|
| dGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJv
|
| bWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIs
|
| ICJzaWduYXR1cmUiOiAiZGV2aWNlLm1vam9tLlNlcmlhbEhvc3RDb250cm9sU2lnbmFscy5ydHMi
|
| fX0sIHsiZW5kIjogMjA4NTUsICJiZWdpbiI6IDIwODQ4LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2Uv
|
| Z2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6
|
| ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJt
|
| b2pvbSIsICJzaWduYXR1cmUiOiAiZGV2aWNlLm1vam9tLlNlcmlhbEhvc3RDb250cm9sU2lnbmFs
|
| cy5oYXNfcnRzIn19LCB7ImVuZCI6IDIxODUwLCAiYmVnaW4iOiAyMTgyNiwgImVkZ2UiOiAiJS9r
|
| eXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjog
|
| eyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFu
|
| Z3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImRldmljZS5tb2pvbS5TZXJpYWxQb3J0Q29u
|
| dHJvbFNpZ25hbHMifX0sIHsiZW5kIjogMjU2NTksICJiZWdpbiI6IDI1NjU2LCAiZWRnZSI6ICIl
|
| L2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUi
|
| OiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJs
|
| YW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZGV2aWNlLm1vam9tLlNlcmlhbFBvcnRD
|
| b250cm9sU2lnbmFscy5kY2QifX0sIHsiZW5kIjogMjU3MzYsICJiZWdpbiI6IDI1NzMzLCAiZWRn
|
| ZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAi
|
| dm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3Ny
|
| YyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZGV2aWNlLm1vam9tLlNlcmlh
|
| bFBvcnRDb250cm9sU2lnbmFscy5jdHMifX0sIHsiZW5kIjogMjU4MTEsICJiZWdpbiI6IDI1ODA5
|
| LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmlu
|
| ZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9t
|
| aXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZGV2aWNlLm1vam9t
|
| LlNlcmlhbFBvcnRDb250cm9sU2lnbmFscy5yaSJ9fSwgeyJlbmQiOiAyNTg4OCwgImJlZ2luIjog
|
| MjU4ODUsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3Jf
|
| ZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20v
|
| Y2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJkZXZpY2Uu
|
| bW9qb20uU2VyaWFsUG9ydENvbnRyb2xTaWduYWxzLmRzciJ9fSwgeyJlbmQiOiAyNjg2NSwgImJl
|
| Z2luIjogMjY4NTEsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJh
|
| bmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJj
|
| ZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJk
|
| ZXZpY2UubW9qb20uU2VyaWFsUG9ydEluZm8ifX0sIHsiZW5kIjogMzA1OTcsICJiZWdpbiI6IDMw
|
| NTkyLCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2Rl
|
| ZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2No
|
| cm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZGV2aWNlLm1v
|
| am9tLlNlcmlhbFBvcnRJbmZvLnRva2VuIn19LCB7ImVuZCI6IDMwNjc2LCAiYmVnaW4iOiAzMDY3
|
| MiwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZp
|
| bmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJv
|
| bWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImRldmljZS5tb2pv
|
| bS5TZXJpYWxQb3J0SW5mby5wYXRoIn19LCB7ImVuZCI6IDMwNzU5LCAiYmVnaW4iOiAzMDc1MCwg
|
| ImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVz
|
| IiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1
|
| bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImRldmljZS5tb2pvbS5T
|
| ZXJpYWxQb3J0SW5mby52ZW5kb3JfaWQifX0sIHsiZW5kIjogMzA4NDYsICJiZWdpbiI6IDMwODMz
|
| LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmlu
|
| ZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9t
|
| aXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZGV2aWNlLm1vam9t
|
| LlNlcmlhbFBvcnRJbmZvLmhhc192ZW5kb3JfaWQifX0sIHsiZW5kIjogMzA5MzEsICJiZWdpbiI6
|
| IDMwOTIxLCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9y
|
| X2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29t
|
| L2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZGV2aWNl
|
| Lm1vam9tLlNlcmlhbFBvcnRJbmZvLnByb2R1Y3RfaWQifX0sIHsiZW5kIjogMzEwMjAsICJiZWdp
|
| biI6IDMxMDA2LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5j
|
| aG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2Uu
|
| Y29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZGV2
|
| aWNlLm1vam9tLlNlcmlhbFBvcnRJbmZvLmhhc19wcm9kdWN0X2lkIn19LCB7ImVuZCI6IDMxMTI4
|
| LCAiYmVnaW4iOiAzMTExNiwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBl
|
| IjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xl
|
| c291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJl
|
| IjogImRldmljZS5tb2pvbS5TZXJpYWxQb3J0SW5mby5kaXNwbGF5X25hbWUifX0sIHsiZW5kIjog
|
| MzIwODEsICJiZWdpbiI6IDMyMDU4LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwg
|
| InR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5n
|
| b29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWdu
|
| YXR1cmUiOiAiZGV2aWNlLm1vam9tLlNlcmlhbENvbm5lY3Rpb25PcHRpb25zIn19LCB7ImVuZCI6
|
| IDM1OTk5LCAiYmVnaW4iOiAzNTk5MiwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIs
|
| ICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0u
|
| Z29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2ln
|
| bmF0dXJlIjogImRldmljZS5tb2pvbS5TZXJpYWxDb25uZWN0aW9uT3B0aW9ucy5iaXRyYXRlIn19
|
| LCB7ImVuZCI6IDM2MDk3LCAiYmVnaW4iOiAzNjA4OCwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dl
|
| bmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAi
|
| Y2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9q
|
| b20iLCAic2lnbmF0dXJlIjogImRldmljZS5tb2pvbS5TZXJpYWxDb25uZWN0aW9uT3B0aW9ucy5k
|
| YXRhX2JpdHMifX0sIHsiZW5kIjogMzYxOTgsICJiZWdpbiI6IDM2MTg4LCAiZWRnZSI6ICIlL2t5
|
| dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7
|
| ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5n
|
| dWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZGV2aWNlLm1vam9tLlNlcmlhbENvbm5lY3Rp
|
| b25PcHRpb25zLnBhcml0eV9iaXQifX0sIHsiZW5kIjogMzYyOTYsICJiZWdpbiI6IDM2Mjg3LCAi
|
| ZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMi
|
| LCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVt
|
| L3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZGV2aWNlLm1vam9tLlNl
|
| cmlhbENvbm5lY3Rpb25PcHRpb25zLnN0b3BfYml0cyJ9fSwgeyJlbmQiOiAzNjM5OCwgImJlZ2lu
|
| IjogMzYzODIsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNo
|
| b3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5j
|
| b20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJkZXZp
|
| Y2UubW9qb20uU2VyaWFsQ29ubmVjdGlvbk9wdGlvbnMuY3RzX2Zsb3dfY29udHJvbCJ9fSwgeyJl
|
| bmQiOiAzNjUwOCwgImJlZ2luIjogMzY0ODgsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0
|
| ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9t
|
| aXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwg
|
| InNpZ25hdHVyZSI6ICJkZXZpY2UubW9qb20uU2VyaWFsQ29ubmVjdGlvbk9wdGlvbnMuaGFzX2N0
|
| c19mbG93X2NvbnRyb2wifX0sIHsiZW5kIjogMzc0OTEsICJiZWdpbiI6IDM3NDcxLCAiZWRnZSI6
|
| ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5h
|
| bWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIs
|
| ICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZGV2aWNlLm1vam9tLlNlcmlhbENv
|
| bm5lY3Rpb25JbmZvIn19LCB7ImVuZCI6IDQxMzA0LCAiYmVnaW4iOiA0MTI5NywgImVkZ2UiOiAi
|
| JS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1l
|
| IjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAi
|
| bGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImRldmljZS5tb2pvbS5TZXJpYWxDb25u
|
| ZWN0aW9uSW5mby5iaXRyYXRlIn19LCB7ImVuZCI6IDQxMzk5LCAiYmVnaW4iOiA0MTM5MCwgImVk
|
| Z2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwg
|
| InZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9z
|
| cmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogImRldmljZS5tb2pvbS5TZXJp
|
| YWxDb25uZWN0aW9uSW5mby5kYXRhX2JpdHMifX0sIHsiZW5kIjogNDE0OTcsICJiZWdpbiI6IDQx
|
| NDg3LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2Rl
|
| ZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2No
|
| cm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAiZGV2aWNlLm1v
|
| am9tLlNlcmlhbENvbm5lY3Rpb25JbmZvLnBhcml0eV9iaXQifX0sIHsiZW5kIjogNDE1OTIsICJi
|
| ZWdpbiI6IDQxNTgzLCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAi
|
| YW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3Vy
|
| Y2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAi
|
| ZGV2aWNlLm1vam9tLlNlcmlhbENvbm5lY3Rpb25JbmZvLnN0b3BfYml0cyJ9fSwgeyJlbmQiOiA0
|
| MTY5MSwgImJlZ2luIjogNDE2NzUsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAi
|
| dHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdv
|
| b2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25h
|
| dHVyZSI6ICJkZXZpY2UubW9qb20uU2VyaWFsQ29ubmVjdGlvbkluZm8uY3RzX2Zsb3dfY29udHJv
|
| bCJ9fV0sICJ0eXBlIjogImt5dGhlMCJ9
|
| */ |