// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: context.proto
package context;

public final class ContextOuterClass {

    private ContextOuterClass() {
    }

    public static void registerAllExtensions(com.google.protobuf.ExtensionRegistryLite registry) {
    }

    public static void registerAllExtensions(com.google.protobuf.ExtensionRegistry registry) {
        registerAllExtensions((com.google.protobuf.ExtensionRegistryLite) registry);
    }

    /**
     * Protobuf enum {@code context.EventTypeEnum}
     */
    public enum EventTypeEnum implements com.google.protobuf.ProtocolMessageEnum {

        /**
         * <code>EVENTTYPE_UNDEFINED = 0;</code>
         */
        EVENTTYPE_UNDEFINED(0),
        /**
         * <code>EVENTTYPE_CREATE = 1;</code>
         */
        EVENTTYPE_CREATE(1),
        /**
         * <code>EVENTTYPE_UPDATE = 2;</code>
         */
        EVENTTYPE_UPDATE(2),
        /**
         * <code>EVENTTYPE_REMOVE = 3;</code>
         */
        EVENTTYPE_REMOVE(3),
        UNRECOGNIZED(-1);

        /**
         * <code>EVENTTYPE_UNDEFINED = 0;</code>
         */
        public static final int EVENTTYPE_UNDEFINED_VALUE = 0;

        /**
         * <code>EVENTTYPE_CREATE = 1;</code>
         */
        public static final int EVENTTYPE_CREATE_VALUE = 1;

        /**
         * <code>EVENTTYPE_UPDATE = 2;</code>
         */
        public static final int EVENTTYPE_UPDATE_VALUE = 2;

        /**
         * <code>EVENTTYPE_REMOVE = 3;</code>
         */
        public static final int EVENTTYPE_REMOVE_VALUE = 3;

        public final int getNumber() {
            if (this == UNRECOGNIZED) {
                throw new java.lang.IllegalArgumentException("Can't get the number of an unknown enum value.");
            }
            return value;
        }

        /**
         * @param value The numeric wire value of the corresponding enum entry.
         * @return The enum associated with the given numeric wire value.
         * @deprecated Use {@link #forNumber(int)} instead.
         */
        @java.lang.Deprecated
        public static EventTypeEnum valueOf(int value) {
            return forNumber(value);
        }

        /**
         * @param value The numeric wire value of the corresponding enum entry.
         * @return The enum associated with the given numeric wire value.
         */
        public static EventTypeEnum forNumber(int value) {
            switch(value) {
                case 0:
                    return EVENTTYPE_UNDEFINED;
                case 1:
                    return EVENTTYPE_CREATE;
                case 2:
                    return EVENTTYPE_UPDATE;
                case 3:
                    return EVENTTYPE_REMOVE;
                default:
                    return null;
            }
        }

        public static com.google.protobuf.Internal.EnumLiteMap<EventTypeEnum> internalGetValueMap() {
            return internalValueMap;
        }

        private static final com.google.protobuf.Internal.EnumLiteMap<EventTypeEnum> internalValueMap = new com.google.protobuf.Internal.EnumLiteMap<EventTypeEnum>() {

            public EventTypeEnum findValueByNumber(int number) {
                return EventTypeEnum.forNumber(number);
            }
        };

        public final com.google.protobuf.Descriptors.EnumValueDescriptor getValueDescriptor() {
            if (this == UNRECOGNIZED) {
                throw new java.lang.IllegalStateException("Can't get the descriptor of an unrecognized enum value.");
            }
            return getDescriptor().getValues().get(ordinal());
        }

        public final com.google.protobuf.Descriptors.EnumDescriptor getDescriptorForType() {
            return getDescriptor();
        }

        public static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor() {
            return context.ContextOuterClass.getDescriptor().getEnumTypes().get(0);
        }

        private static final EventTypeEnum[] VALUES = values();

        public static EventTypeEnum valueOf(com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
            if (desc.getType() != getDescriptor()) {
                throw new java.lang.IllegalArgumentException("EnumValueDescriptor is not for this type.");
            }
            if (desc.getIndex() == -1) {
                return UNRECOGNIZED;
            }
            return VALUES[desc.getIndex()];
        }

        private final int value;

        private EventTypeEnum(int value) {
            this.value = value;
        }
    }

    /**
     * Protobuf enum {@code context.DeviceDriverEnum}
     */
    public enum DeviceDriverEnum implements com.google.protobuf.ProtocolMessageEnum {

        /**
         * <pre>
         * also used for emulated
         * </pre>
         *
         * <code>DEVICEDRIVER_UNDEFINED = 0;</code>
         */
        DEVICEDRIVER_UNDEFINED(0),
        /**
         * <code>DEVICEDRIVER_OPENCONFIG = 1;</code>
         */
        DEVICEDRIVER_OPENCONFIG(1),
        /**
         * <code>DEVICEDRIVER_TRANSPORT_API = 2;</code>
         */
        DEVICEDRIVER_TRANSPORT_API(2),
        /**
         * <code>DEVICEDRIVER_P4 = 3;</code>
         */
        DEVICEDRIVER_P4(3),
        /**
         * <code>DEVICEDRIVER_IETF_NETWORK_TOPOLOGY = 4;</code>
         */
        DEVICEDRIVER_IETF_NETWORK_TOPOLOGY(4),
        /**
         * <code>DEVICEDRIVER_ONF_TR_532 = 5;</code>
         */
        DEVICEDRIVER_ONF_TR_532(5),
        /**
         * <code>DEVICEDRIVER_XR = 6;</code>
         */
        DEVICEDRIVER_XR(6),
        /**
         * <code>DEVICEDRIVER_IETF_L2VPN = 7;</code>
         */
        DEVICEDRIVER_IETF_L2VPN(7),
        /**
         * <code>DEVICEDRIVER_GNMI_OPENCONFIG = 8;</code>
         */
        DEVICEDRIVER_GNMI_OPENCONFIG(8),
        /**
         * <code>DEVICEDRIVER_OPTICAL_TFS = 9;</code>
         */
        DEVICEDRIVER_OPTICAL_TFS(9),
        /**
         * <code>DEVICEDRIVER_IETF_ACTN = 10;</code>
         */
        DEVICEDRIVER_IETF_ACTN(10),
        /**
         * <code>DEVICEDRIVER_OC = 11;</code>
         */
        DEVICEDRIVER_OC(11),
        /**
         * <code>DEVICEDRIVER_QKD = 12;</code>
         */
        DEVICEDRIVER_QKD(12),
        /**
         * <code>DEVICEDRIVER_IETF_L3VPN = 13;</code>
         */
        DEVICEDRIVER_IETF_L3VPN(13),
        /**
         * <code>DEVICEDRIVER_IETF_SLICE = 14;</code>
         */
        DEVICEDRIVER_IETF_SLICE(14),
        /**
         * <code>DEVICEDRIVER_NCE = 15;</code>
         */
        DEVICEDRIVER_NCE(15),
        /**
         * <code>DEVICEDRIVER_SMARTNIC = 16;</code>
         */
        DEVICEDRIVER_SMARTNIC(16),
        UNRECOGNIZED(-1);

        /**
         * <pre>
         * also used for emulated
         * </pre>
         *
         * <code>DEVICEDRIVER_UNDEFINED = 0;</code>
         */
        public static final int DEVICEDRIVER_UNDEFINED_VALUE = 0;

        /**
         * <code>DEVICEDRIVER_OPENCONFIG = 1;</code>
         */
        public static final int DEVICEDRIVER_OPENCONFIG_VALUE = 1;

        /**
         * <code>DEVICEDRIVER_TRANSPORT_API = 2;</code>
         */
        public static final int DEVICEDRIVER_TRANSPORT_API_VALUE = 2;

        /**
         * <code>DEVICEDRIVER_P4 = 3;</code>
         */
        public static final int DEVICEDRIVER_P4_VALUE = 3;

        /**
         * <code>DEVICEDRIVER_IETF_NETWORK_TOPOLOGY = 4;</code>
         */
        public static final int DEVICEDRIVER_IETF_NETWORK_TOPOLOGY_VALUE = 4;

        /**
         * <code>DEVICEDRIVER_ONF_TR_532 = 5;</code>
         */
        public static final int DEVICEDRIVER_ONF_TR_532_VALUE = 5;

        /**
         * <code>DEVICEDRIVER_XR = 6;</code>
         */
        public static final int DEVICEDRIVER_XR_VALUE = 6;

        /**
         * <code>DEVICEDRIVER_IETF_L2VPN = 7;</code>
         */
        public static final int DEVICEDRIVER_IETF_L2VPN_VALUE = 7;

        /**
         * <code>DEVICEDRIVER_GNMI_OPENCONFIG = 8;</code>
         */
        public static final int DEVICEDRIVER_GNMI_OPENCONFIG_VALUE = 8;

        /**
         * <code>DEVICEDRIVER_OPTICAL_TFS = 9;</code>
         */
        public static final int DEVICEDRIVER_OPTICAL_TFS_VALUE = 9;

        /**
         * <code>DEVICEDRIVER_IETF_ACTN = 10;</code>
         */
        public static final int DEVICEDRIVER_IETF_ACTN_VALUE = 10;

        /**
         * <code>DEVICEDRIVER_OC = 11;</code>
         */
        public static final int DEVICEDRIVER_OC_VALUE = 11;

        /**
         * <code>DEVICEDRIVER_QKD = 12;</code>
         */
        public static final int DEVICEDRIVER_QKD_VALUE = 12;

        /**
         * <code>DEVICEDRIVER_IETF_L3VPN = 13;</code>
         */
        public static final int DEVICEDRIVER_IETF_L3VPN_VALUE = 13;

        /**
         * <code>DEVICEDRIVER_IETF_SLICE = 14;</code>
         */
        public static final int DEVICEDRIVER_IETF_SLICE_VALUE = 14;

        /**
         * <code>DEVICEDRIVER_NCE = 15;</code>
         */
        public static final int DEVICEDRIVER_NCE_VALUE = 15;

        /**
         * <code>DEVICEDRIVER_SMARTNIC = 16;</code>
         */
        public static final int DEVICEDRIVER_SMARTNIC_VALUE = 16;

        public final int getNumber() {
            if (this == UNRECOGNIZED) {
                throw new java.lang.IllegalArgumentException("Can't get the number of an unknown enum value.");
            }
            return value;
        }

        /**
         * @param value The numeric wire value of the corresponding enum entry.
         * @return The enum associated with the given numeric wire value.
         * @deprecated Use {@link #forNumber(int)} instead.
         */
        @java.lang.Deprecated
        public static DeviceDriverEnum valueOf(int value) {
            return forNumber(value);
        }

        /**
         * @param value The numeric wire value of the corresponding enum entry.
         * @return The enum associated with the given numeric wire value.
         */
        public static DeviceDriverEnum forNumber(int value) {
            switch(value) {
                case 0:
                    return DEVICEDRIVER_UNDEFINED;
                case 1:
                    return DEVICEDRIVER_OPENCONFIG;
                case 2:
                    return DEVICEDRIVER_TRANSPORT_API;
                case 3:
                    return DEVICEDRIVER_P4;
                case 4:
                    return DEVICEDRIVER_IETF_NETWORK_TOPOLOGY;
                case 5:
                    return DEVICEDRIVER_ONF_TR_532;
                case 6:
                    return DEVICEDRIVER_XR;
                case 7:
                    return DEVICEDRIVER_IETF_L2VPN;
                case 8:
                    return DEVICEDRIVER_GNMI_OPENCONFIG;
                case 9:
                    return DEVICEDRIVER_OPTICAL_TFS;
                case 10:
                    return DEVICEDRIVER_IETF_ACTN;
                case 11:
                    return DEVICEDRIVER_OC;
                case 12:
                    return DEVICEDRIVER_QKD;
                case 13:
                    return DEVICEDRIVER_IETF_L3VPN;
                case 14:
                    return DEVICEDRIVER_IETF_SLICE;
                case 15:
                    return DEVICEDRIVER_NCE;
                case 16:
                    return DEVICEDRIVER_SMARTNIC;
                default:
                    return null;
            }
        }

        public static com.google.protobuf.Internal.EnumLiteMap<DeviceDriverEnum> internalGetValueMap() {
            return internalValueMap;
        }

        private static final com.google.protobuf.Internal.EnumLiteMap<DeviceDriverEnum> internalValueMap = new com.google.protobuf.Internal.EnumLiteMap<DeviceDriverEnum>() {

            public DeviceDriverEnum findValueByNumber(int number) {
                return DeviceDriverEnum.forNumber(number);
            }
        };

        public final com.google.protobuf.Descriptors.EnumValueDescriptor getValueDescriptor() {
            if (this == UNRECOGNIZED) {
                throw new java.lang.IllegalStateException("Can't get the descriptor of an unrecognized enum value.");
            }
            return getDescriptor().getValues().get(ordinal());
        }

        public final com.google.protobuf.Descriptors.EnumDescriptor getDescriptorForType() {
            return getDescriptor();
        }

        public static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor() {
            return context.ContextOuterClass.getDescriptor().getEnumTypes().get(1);
        }

        private static final DeviceDriverEnum[] VALUES = values();

        public static DeviceDriverEnum valueOf(com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
            if (desc.getType() != getDescriptor()) {
                throw new java.lang.IllegalArgumentException("EnumValueDescriptor is not for this type.");
            }
            if (desc.getIndex() == -1) {
                return UNRECOGNIZED;
            }
            return VALUES[desc.getIndex()];
        }

        private final int value;

        private DeviceDriverEnum(int value) {
            this.value = value;
        }
    }

    /**
     * Protobuf enum {@code context.DeviceOperationalStatusEnum}
     */
    public enum DeviceOperationalStatusEnum implements com.google.protobuf.ProtocolMessageEnum {

        /**
         * <code>DEVICEOPERATIONALSTATUS_UNDEFINED = 0;</code>
         */
        DEVICEOPERATIONALSTATUS_UNDEFINED(0),
        /**
         * <code>DEVICEOPERATIONALSTATUS_DISABLED = 1;</code>
         */
        DEVICEOPERATIONALSTATUS_DISABLED(1),
        /**
         * <code>DEVICEOPERATIONALSTATUS_ENABLED = 2;</code>
         */
        DEVICEOPERATIONALSTATUS_ENABLED(2),
        UNRECOGNIZED(-1);

        /**
         * <code>DEVICEOPERATIONALSTATUS_UNDEFINED = 0;</code>
         */
        public static final int DEVICEOPERATIONALSTATUS_UNDEFINED_VALUE = 0;

        /**
         * <code>DEVICEOPERATIONALSTATUS_DISABLED = 1;</code>
         */
        public static final int DEVICEOPERATIONALSTATUS_DISABLED_VALUE = 1;

        /**
         * <code>DEVICEOPERATIONALSTATUS_ENABLED = 2;</code>
         */
        public static final int DEVICEOPERATIONALSTATUS_ENABLED_VALUE = 2;

        public final int getNumber() {
            if (this == UNRECOGNIZED) {
                throw new java.lang.IllegalArgumentException("Can't get the number of an unknown enum value.");
            }
            return value;
        }

        /**
         * @param value The numeric wire value of the corresponding enum entry.
         * @return The enum associated with the given numeric wire value.
         * @deprecated Use {@link #forNumber(int)} instead.
         */
        @java.lang.Deprecated
        public static DeviceOperationalStatusEnum valueOf(int value) {
            return forNumber(value);
        }

        /**
         * @param value The numeric wire value of the corresponding enum entry.
         * @return The enum associated with the given numeric wire value.
         */
        public static DeviceOperationalStatusEnum forNumber(int value) {
            switch(value) {
                case 0:
                    return DEVICEOPERATIONALSTATUS_UNDEFINED;
                case 1:
                    return DEVICEOPERATIONALSTATUS_DISABLED;
                case 2:
                    return DEVICEOPERATIONALSTATUS_ENABLED;
                default:
                    return null;
            }
        }

        public static com.google.protobuf.Internal.EnumLiteMap<DeviceOperationalStatusEnum> internalGetValueMap() {
            return internalValueMap;
        }

        private static final com.google.protobuf.Internal.EnumLiteMap<DeviceOperationalStatusEnum> internalValueMap = new com.google.protobuf.Internal.EnumLiteMap<DeviceOperationalStatusEnum>() {

            public DeviceOperationalStatusEnum findValueByNumber(int number) {
                return DeviceOperationalStatusEnum.forNumber(number);
            }
        };

        public final com.google.protobuf.Descriptors.EnumValueDescriptor getValueDescriptor() {
            if (this == UNRECOGNIZED) {
                throw new java.lang.IllegalStateException("Can't get the descriptor of an unrecognized enum value.");
            }
            return getDescriptor().getValues().get(ordinal());
        }

        public final com.google.protobuf.Descriptors.EnumDescriptor getDescriptorForType() {
            return getDescriptor();
        }

        public static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor() {
            return context.ContextOuterClass.getDescriptor().getEnumTypes().get(2);
        }

        private static final DeviceOperationalStatusEnum[] VALUES = values();

        public static DeviceOperationalStatusEnum valueOf(com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
            if (desc.getType() != getDescriptor()) {
                throw new java.lang.IllegalArgumentException("EnumValueDescriptor is not for this type.");
            }
            if (desc.getIndex() == -1) {
                return UNRECOGNIZED;
            }
            return VALUES[desc.getIndex()];
        }

        private final int value;

        private DeviceOperationalStatusEnum(int value) {
            this.value = value;
        }
    }

    /**
     * Protobuf enum {@code context.LinkTypeEnum}
     */
    public enum LinkTypeEnum implements com.google.protobuf.ProtocolMessageEnum {

        /**
         * <code>LINKTYPE_UNKNOWN = 0;</code>
         */
        LINKTYPE_UNKNOWN(0),
        /**
         * <code>LINKTYPE_COPPER = 1;</code>
         */
        LINKTYPE_COPPER(1),
        /**
         * <code>LINKTYPE_FIBER = 2;</code>
         */
        LINKTYPE_FIBER(2),
        /**
         * <code>LINKTYPE_RADIO = 3;</code>
         */
        LINKTYPE_RADIO(3),
        /**
         * <code>LINKTYPE_VIRTUAL = 4;</code>
         */
        LINKTYPE_VIRTUAL(4),
        UNRECOGNIZED(-1);

        /**
         * <code>LINKTYPE_UNKNOWN = 0;</code>
         */
        public static final int LINKTYPE_UNKNOWN_VALUE = 0;

        /**
         * <code>LINKTYPE_COPPER = 1;</code>
         */
        public static final int LINKTYPE_COPPER_VALUE = 1;

        /**
         * <code>LINKTYPE_FIBER = 2;</code>
         */
        public static final int LINKTYPE_FIBER_VALUE = 2;

        /**
         * <code>LINKTYPE_RADIO = 3;</code>
         */
        public static final int LINKTYPE_RADIO_VALUE = 3;

        /**
         * <code>LINKTYPE_VIRTUAL = 4;</code>
         */
        public static final int LINKTYPE_VIRTUAL_VALUE = 4;

        public final int getNumber() {
            if (this == UNRECOGNIZED) {
                throw new java.lang.IllegalArgumentException("Can't get the number of an unknown enum value.");
            }
            return value;
        }

        /**
         * @param value The numeric wire value of the corresponding enum entry.
         * @return The enum associated with the given numeric wire value.
         * @deprecated Use {@link #forNumber(int)} instead.
         */
        @java.lang.Deprecated
        public static LinkTypeEnum valueOf(int value) {
            return forNumber(value);
        }

        /**
         * @param value The numeric wire value of the corresponding enum entry.
         * @return The enum associated with the given numeric wire value.
         */
        public static LinkTypeEnum forNumber(int value) {
            switch(value) {
                case 0:
                    return LINKTYPE_UNKNOWN;
                case 1:
                    return LINKTYPE_COPPER;
                case 2:
                    return LINKTYPE_FIBER;
                case 3:
                    return LINKTYPE_RADIO;
                case 4:
                    return LINKTYPE_VIRTUAL;
                default:
                    return null;
            }
        }

        public static com.google.protobuf.Internal.EnumLiteMap<LinkTypeEnum> internalGetValueMap() {
            return internalValueMap;
        }

        private static final com.google.protobuf.Internal.EnumLiteMap<LinkTypeEnum> internalValueMap = new com.google.protobuf.Internal.EnumLiteMap<LinkTypeEnum>() {

            public LinkTypeEnum findValueByNumber(int number) {
                return LinkTypeEnum.forNumber(number);
            }
        };

        public final com.google.protobuf.Descriptors.EnumValueDescriptor getValueDescriptor() {
            if (this == UNRECOGNIZED) {
                throw new java.lang.IllegalStateException("Can't get the descriptor of an unrecognized enum value.");
            }
            return getDescriptor().getValues().get(ordinal());
        }

        public final com.google.protobuf.Descriptors.EnumDescriptor getDescriptorForType() {
            return getDescriptor();
        }

        public static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor() {
            return context.ContextOuterClass.getDescriptor().getEnumTypes().get(3);
        }

        private static final LinkTypeEnum[] VALUES = values();

        public static LinkTypeEnum valueOf(com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
            if (desc.getType() != getDescriptor()) {
                throw new java.lang.IllegalArgumentException("EnumValueDescriptor is not for this type.");
            }
            if (desc.getIndex() == -1) {
                return UNRECOGNIZED;
            }
            return VALUES[desc.getIndex()];
        }

        private final int value;

        private LinkTypeEnum(int value) {
            this.value = value;
        }
    }

    /**
     * Protobuf enum {@code context.ServiceTypeEnum}
     */
    public enum ServiceTypeEnum implements com.google.protobuf.ProtocolMessageEnum {

        /**
         * <code>SERVICETYPE_UNKNOWN = 0;</code>
         */
        SERVICETYPE_UNKNOWN(0),
        /**
         * <code>SERVICETYPE_L3NM = 1;</code>
         */
        SERVICETYPE_L3NM(1),
        /**
         * <code>SERVICETYPE_L2NM = 2;</code>
         */
        SERVICETYPE_L2NM(2),
        /**
         * <code>SERVICETYPE_TAPI_CONNECTIVITY_SERVICE = 3;</code>
         */
        SERVICETYPE_TAPI_CONNECTIVITY_SERVICE(3),
        /**
         * <code>SERVICETYPE_TE = 4;</code>
         */
        SERVICETYPE_TE(4),
        /**
         * <code>SERVICETYPE_E2E = 5;</code>
         */
        SERVICETYPE_E2E(5),
        /**
         * <code>SERVICETYPE_OPTICAL_CONNECTIVITY = 6;</code>
         */
        SERVICETYPE_OPTICAL_CONNECTIVITY(6),
        /**
         * <code>SERVICETYPE_QKD = 7;</code>
         */
        SERVICETYPE_QKD(7),
        UNRECOGNIZED(-1);

        /**
         * <code>SERVICETYPE_UNKNOWN = 0;</code>
         */
        public static final int SERVICETYPE_UNKNOWN_VALUE = 0;

        /**
         * <code>SERVICETYPE_L3NM = 1;</code>
         */
        public static final int SERVICETYPE_L3NM_VALUE = 1;

        /**
         * <code>SERVICETYPE_L2NM = 2;</code>
         */
        public static final int SERVICETYPE_L2NM_VALUE = 2;

        /**
         * <code>SERVICETYPE_TAPI_CONNECTIVITY_SERVICE = 3;</code>
         */
        public static final int SERVICETYPE_TAPI_CONNECTIVITY_SERVICE_VALUE = 3;

        /**
         * <code>SERVICETYPE_TE = 4;</code>
         */
        public static final int SERVICETYPE_TE_VALUE = 4;

        /**
         * <code>SERVICETYPE_E2E = 5;</code>
         */
        public static final int SERVICETYPE_E2E_VALUE = 5;

        /**
         * <code>SERVICETYPE_OPTICAL_CONNECTIVITY = 6;</code>
         */
        public static final int SERVICETYPE_OPTICAL_CONNECTIVITY_VALUE = 6;

        /**
         * <code>SERVICETYPE_QKD = 7;</code>
         */
        public static final int SERVICETYPE_QKD_VALUE = 7;

        public final int getNumber() {
            if (this == UNRECOGNIZED) {
                throw new java.lang.IllegalArgumentException("Can't get the number of an unknown enum value.");
            }
            return value;
        }

        /**
         * @param value The numeric wire value of the corresponding enum entry.
         * @return The enum associated with the given numeric wire value.
         * @deprecated Use {@link #forNumber(int)} instead.
         */
        @java.lang.Deprecated
        public static ServiceTypeEnum valueOf(int value) {
            return forNumber(value);
        }

        /**
         * @param value The numeric wire value of the corresponding enum entry.
         * @return The enum associated with the given numeric wire value.
         */
        public static ServiceTypeEnum forNumber(int value) {
            switch(value) {
                case 0:
                    return SERVICETYPE_UNKNOWN;
                case 1:
                    return SERVICETYPE_L3NM;
                case 2:
                    return SERVICETYPE_L2NM;
                case 3:
                    return SERVICETYPE_TAPI_CONNECTIVITY_SERVICE;
                case 4:
                    return SERVICETYPE_TE;
                case 5:
                    return SERVICETYPE_E2E;
                case 6:
                    return SERVICETYPE_OPTICAL_CONNECTIVITY;
                case 7:
                    return SERVICETYPE_QKD;
                default:
                    return null;
            }
        }

        public static com.google.protobuf.Internal.EnumLiteMap<ServiceTypeEnum> internalGetValueMap() {
            return internalValueMap;
        }

        private static final com.google.protobuf.Internal.EnumLiteMap<ServiceTypeEnum> internalValueMap = new com.google.protobuf.Internal.EnumLiteMap<ServiceTypeEnum>() {

            public ServiceTypeEnum findValueByNumber(int number) {
                return ServiceTypeEnum.forNumber(number);
            }
        };

        public final com.google.protobuf.Descriptors.EnumValueDescriptor getValueDescriptor() {
            if (this == UNRECOGNIZED) {
                throw new java.lang.IllegalStateException("Can't get the descriptor of an unrecognized enum value.");
            }
            return getDescriptor().getValues().get(ordinal());
        }

        public final com.google.protobuf.Descriptors.EnumDescriptor getDescriptorForType() {
            return getDescriptor();
        }

        public static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor() {
            return context.ContextOuterClass.getDescriptor().getEnumTypes().get(4);
        }

        private static final ServiceTypeEnum[] VALUES = values();

        public static ServiceTypeEnum valueOf(com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
            if (desc.getType() != getDescriptor()) {
                throw new java.lang.IllegalArgumentException("EnumValueDescriptor is not for this type.");
            }
            if (desc.getIndex() == -1) {
                return UNRECOGNIZED;
            }
            return VALUES[desc.getIndex()];
        }

        private final int value;

        private ServiceTypeEnum(int value) {
            this.value = value;
        }
    }

    /**
     * Protobuf enum {@code context.ServiceStatusEnum}
     */
    public enum ServiceStatusEnum implements com.google.protobuf.ProtocolMessageEnum {

        /**
         * <code>SERVICESTATUS_UNDEFINED = 0;</code>
         */
        SERVICESTATUS_UNDEFINED(0),
        /**
         * <code>SERVICESTATUS_PLANNED = 1;</code>
         */
        SERVICESTATUS_PLANNED(1),
        /**
         * <code>SERVICESTATUS_ACTIVE = 2;</code>
         */
        SERVICESTATUS_ACTIVE(2),
        /**
         * <code>SERVICESTATUS_UPDATING = 3;</code>
         */
        SERVICESTATUS_UPDATING(3),
        /**
         * <code>SERVICESTATUS_PENDING_REMOVAL = 4;</code>
         */
        SERVICESTATUS_PENDING_REMOVAL(4),
        /**
         * <code>SERVICESTATUS_SLA_VIOLATED = 5;</code>
         */
        SERVICESTATUS_SLA_VIOLATED(5),
        UNRECOGNIZED(-1);

        /**
         * <code>SERVICESTATUS_UNDEFINED = 0;</code>
         */
        public static final int SERVICESTATUS_UNDEFINED_VALUE = 0;

        /**
         * <code>SERVICESTATUS_PLANNED = 1;</code>
         */
        public static final int SERVICESTATUS_PLANNED_VALUE = 1;

        /**
         * <code>SERVICESTATUS_ACTIVE = 2;</code>
         */
        public static final int SERVICESTATUS_ACTIVE_VALUE = 2;

        /**
         * <code>SERVICESTATUS_UPDATING = 3;</code>
         */
        public static final int SERVICESTATUS_UPDATING_VALUE = 3;

        /**
         * <code>SERVICESTATUS_PENDING_REMOVAL = 4;</code>
         */
        public static final int SERVICESTATUS_PENDING_REMOVAL_VALUE = 4;

        /**
         * <code>SERVICESTATUS_SLA_VIOLATED = 5;</code>
         */
        public static final int SERVICESTATUS_SLA_VIOLATED_VALUE = 5;

        public final int getNumber() {
            if (this == UNRECOGNIZED) {
                throw new java.lang.IllegalArgumentException("Can't get the number of an unknown enum value.");
            }
            return value;
        }

        /**
         * @param value The numeric wire value of the corresponding enum entry.
         * @return The enum associated with the given numeric wire value.
         * @deprecated Use {@link #forNumber(int)} instead.
         */
        @java.lang.Deprecated
        public static ServiceStatusEnum valueOf(int value) {
            return forNumber(value);
        }

        /**
         * @param value The numeric wire value of the corresponding enum entry.
         * @return The enum associated with the given numeric wire value.
         */
        public static ServiceStatusEnum forNumber(int value) {
            switch(value) {
                case 0:
                    return SERVICESTATUS_UNDEFINED;
                case 1:
                    return SERVICESTATUS_PLANNED;
                case 2:
                    return SERVICESTATUS_ACTIVE;
                case 3:
                    return SERVICESTATUS_UPDATING;
                case 4:
                    return SERVICESTATUS_PENDING_REMOVAL;
                case 5:
                    return SERVICESTATUS_SLA_VIOLATED;
                default:
                    return null;
            }
        }

        public static com.google.protobuf.Internal.EnumLiteMap<ServiceStatusEnum> internalGetValueMap() {
            return internalValueMap;
        }

        private static final com.google.protobuf.Internal.EnumLiteMap<ServiceStatusEnum> internalValueMap = new com.google.protobuf.Internal.EnumLiteMap<ServiceStatusEnum>() {

            public ServiceStatusEnum findValueByNumber(int number) {
                return ServiceStatusEnum.forNumber(number);
            }
        };

        public final com.google.protobuf.Descriptors.EnumValueDescriptor getValueDescriptor() {
            if (this == UNRECOGNIZED) {
                throw new java.lang.IllegalStateException("Can't get the descriptor of an unrecognized enum value.");
            }
            return getDescriptor().getValues().get(ordinal());
        }

        public final com.google.protobuf.Descriptors.EnumDescriptor getDescriptorForType() {
            return getDescriptor();
        }

        public static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor() {
            return context.ContextOuterClass.getDescriptor().getEnumTypes().get(5);
        }

        private static final ServiceStatusEnum[] VALUES = values();

        public static ServiceStatusEnum valueOf(com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
            if (desc.getType() != getDescriptor()) {
                throw new java.lang.IllegalArgumentException("EnumValueDescriptor is not for this type.");
            }
            if (desc.getIndex() == -1) {
                return UNRECOGNIZED;
            }
            return VALUES[desc.getIndex()];
        }

        private final int value;

        private ServiceStatusEnum(int value) {
            this.value = value;
        }
    }

    /**
     * Protobuf enum {@code context.SliceStatusEnum}
     */
    public enum SliceStatusEnum implements com.google.protobuf.ProtocolMessageEnum {

        /**
         * <code>SLICESTATUS_UNDEFINED = 0;</code>
         */
        SLICESTATUS_UNDEFINED(0),
        /**
         * <code>SLICESTATUS_PLANNED = 1;</code>
         */
        SLICESTATUS_PLANNED(1),
        /**
         * <code>SLICESTATUS_INIT = 2;</code>
         */
        SLICESTATUS_INIT(2),
        /**
         * <code>SLICESTATUS_ACTIVE = 3;</code>
         */
        SLICESTATUS_ACTIVE(3),
        /**
         * <code>SLICESTATUS_DEINIT = 4;</code>
         */
        SLICESTATUS_DEINIT(4),
        /**
         * <code>SLICESTATUS_SLA_VIOLATED = 5;</code>
         */
        SLICESTATUS_SLA_VIOLATED(5),
        UNRECOGNIZED(-1);

        /**
         * <code>SLICESTATUS_UNDEFINED = 0;</code>
         */
        public static final int SLICESTATUS_UNDEFINED_VALUE = 0;

        /**
         * <code>SLICESTATUS_PLANNED = 1;</code>
         */
        public static final int SLICESTATUS_PLANNED_VALUE = 1;

        /**
         * <code>SLICESTATUS_INIT = 2;</code>
         */
        public static final int SLICESTATUS_INIT_VALUE = 2;

        /**
         * <code>SLICESTATUS_ACTIVE = 3;</code>
         */
        public static final int SLICESTATUS_ACTIVE_VALUE = 3;

        /**
         * <code>SLICESTATUS_DEINIT = 4;</code>
         */
        public static final int SLICESTATUS_DEINIT_VALUE = 4;

        /**
         * <code>SLICESTATUS_SLA_VIOLATED = 5;</code>
         */
        public static final int SLICESTATUS_SLA_VIOLATED_VALUE = 5;

        public final int getNumber() {
            if (this == UNRECOGNIZED) {
                throw new java.lang.IllegalArgumentException("Can't get the number of an unknown enum value.");
            }
            return value;
        }

        /**
         * @param value The numeric wire value of the corresponding enum entry.
         * @return The enum associated with the given numeric wire value.
         * @deprecated Use {@link #forNumber(int)} instead.
         */
        @java.lang.Deprecated
        public static SliceStatusEnum valueOf(int value) {
            return forNumber(value);
        }

        /**
         * @param value The numeric wire value of the corresponding enum entry.
         * @return The enum associated with the given numeric wire value.
         */
        public static SliceStatusEnum forNumber(int value) {
            switch(value) {
                case 0:
                    return SLICESTATUS_UNDEFINED;
                case 1:
                    return SLICESTATUS_PLANNED;
                case 2:
                    return SLICESTATUS_INIT;
                case 3:
                    return SLICESTATUS_ACTIVE;
                case 4:
                    return SLICESTATUS_DEINIT;
                case 5:
                    return SLICESTATUS_SLA_VIOLATED;
                default:
                    return null;
            }
        }

        public static com.google.protobuf.Internal.EnumLiteMap<SliceStatusEnum> internalGetValueMap() {
            return internalValueMap;
        }

        private static final com.google.protobuf.Internal.EnumLiteMap<SliceStatusEnum> internalValueMap = new com.google.protobuf.Internal.EnumLiteMap<SliceStatusEnum>() {

            public SliceStatusEnum findValueByNumber(int number) {
                return SliceStatusEnum.forNumber(number);
            }
        };

        public final com.google.protobuf.Descriptors.EnumValueDescriptor getValueDescriptor() {
            if (this == UNRECOGNIZED) {
                throw new java.lang.IllegalStateException("Can't get the descriptor of an unrecognized enum value.");
            }
            return getDescriptor().getValues().get(ordinal());
        }

        public final com.google.protobuf.Descriptors.EnumDescriptor getDescriptorForType() {
            return getDescriptor();
        }

        public static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor() {
            return context.ContextOuterClass.getDescriptor().getEnumTypes().get(6);
        }

        private static final SliceStatusEnum[] VALUES = values();

        public static SliceStatusEnum valueOf(com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
            if (desc.getType() != getDescriptor()) {
                throw new java.lang.IllegalArgumentException("EnumValueDescriptor is not for this type.");
            }
            if (desc.getIndex() == -1) {
                return UNRECOGNIZED;
            }
            return VALUES[desc.getIndex()];
        }

        private final int value;

        private SliceStatusEnum(int value) {
            this.value = value;
        }
    }

    /**
     * <pre>
     * ----- Configuration -------------------------------------------------------------------------------------------------
     * </pre>
     *
     * Protobuf enum {@code context.ConfigActionEnum}
     */
    public enum ConfigActionEnum implements com.google.protobuf.ProtocolMessageEnum {

        /**
         * <code>CONFIGACTION_UNDEFINED = 0;</code>
         */
        CONFIGACTION_UNDEFINED(0),
        /**
         * <code>CONFIGACTION_SET = 1;</code>
         */
        CONFIGACTION_SET(1),
        /**
         * <code>CONFIGACTION_DELETE = 2;</code>
         */
        CONFIGACTION_DELETE(2),
        UNRECOGNIZED(-1);

        /**
         * <code>CONFIGACTION_UNDEFINED = 0;</code>
         */
        public static final int CONFIGACTION_UNDEFINED_VALUE = 0;

        /**
         * <code>CONFIGACTION_SET = 1;</code>
         */
        public static final int CONFIGACTION_SET_VALUE = 1;

        /**
         * <code>CONFIGACTION_DELETE = 2;</code>
         */
        public static final int CONFIGACTION_DELETE_VALUE = 2;

        public final int getNumber() {
            if (this == UNRECOGNIZED) {
                throw new java.lang.IllegalArgumentException("Can't get the number of an unknown enum value.");
            }
            return value;
        }

        /**
         * @param value The numeric wire value of the corresponding enum entry.
         * @return The enum associated with the given numeric wire value.
         * @deprecated Use {@link #forNumber(int)} instead.
         */
        @java.lang.Deprecated
        public static ConfigActionEnum valueOf(int value) {
            return forNumber(value);
        }

        /**
         * @param value The numeric wire value of the corresponding enum entry.
         * @return The enum associated with the given numeric wire value.
         */
        public static ConfigActionEnum forNumber(int value) {
            switch(value) {
                case 0:
                    return CONFIGACTION_UNDEFINED;
                case 1:
                    return CONFIGACTION_SET;
                case 2:
                    return CONFIGACTION_DELETE;
                default:
                    return null;
            }
        }

        public static com.google.protobuf.Internal.EnumLiteMap<ConfigActionEnum> internalGetValueMap() {
            return internalValueMap;
        }

        private static final com.google.protobuf.Internal.EnumLiteMap<ConfigActionEnum> internalValueMap = new com.google.protobuf.Internal.EnumLiteMap<ConfigActionEnum>() {

            public ConfigActionEnum findValueByNumber(int number) {
                return ConfigActionEnum.forNumber(number);
            }
        };

        public final com.google.protobuf.Descriptors.EnumValueDescriptor getValueDescriptor() {
            if (this == UNRECOGNIZED) {
                throw new java.lang.IllegalStateException("Can't get the descriptor of an unrecognized enum value.");
            }
            return getDescriptor().getValues().get(ordinal());
        }

        public final com.google.protobuf.Descriptors.EnumDescriptor getDescriptorForType() {
            return getDescriptor();
        }

        public static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor() {
            return context.ContextOuterClass.getDescriptor().getEnumTypes().get(7);
        }

        private static final ConfigActionEnum[] VALUES = values();

        public static ConfigActionEnum valueOf(com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
            if (desc.getType() != getDescriptor()) {
                throw new java.lang.IllegalArgumentException("EnumValueDescriptor is not for this type.");
            }
            if (desc.getIndex() == -1) {
                return UNRECOGNIZED;
            }
            return VALUES[desc.getIndex()];
        }

        private final int value;

        private ConfigActionEnum(int value) {
            this.value = value;
        }
    }

    /**
     * <pre>
     * ----- Constraint ----------------------------------------------------------------------------------------------------
     * </pre>
     *
     * Protobuf enum {@code context.ConstraintActionEnum}
     */
    public enum ConstraintActionEnum implements com.google.protobuf.ProtocolMessageEnum {

        /**
         * <code>CONSTRAINTACTION_UNDEFINED = 0;</code>
         */
        CONSTRAINTACTION_UNDEFINED(0),
        /**
         * <code>CONSTRAINTACTION_SET = 1;</code>
         */
        CONSTRAINTACTION_SET(1),
        /**
         * <code>CONSTRAINTACTION_DELETE = 2;</code>
         */
        CONSTRAINTACTION_DELETE(2),
        UNRECOGNIZED(-1);

        /**
         * <code>CONSTRAINTACTION_UNDEFINED = 0;</code>
         */
        public static final int CONSTRAINTACTION_UNDEFINED_VALUE = 0;

        /**
         * <code>CONSTRAINTACTION_SET = 1;</code>
         */
        public static final int CONSTRAINTACTION_SET_VALUE = 1;

        /**
         * <code>CONSTRAINTACTION_DELETE = 2;</code>
         */
        public static final int CONSTRAINTACTION_DELETE_VALUE = 2;

        public final int getNumber() {
            if (this == UNRECOGNIZED) {
                throw new java.lang.IllegalArgumentException("Can't get the number of an unknown enum value.");
            }
            return value;
        }

        /**
         * @param value The numeric wire value of the corresponding enum entry.
         * @return The enum associated with the given numeric wire value.
         * @deprecated Use {@link #forNumber(int)} instead.
         */
        @java.lang.Deprecated
        public static ConstraintActionEnum valueOf(int value) {
            return forNumber(value);
        }

        /**
         * @param value The numeric wire value of the corresponding enum entry.
         * @return The enum associated with the given numeric wire value.
         */
        public static ConstraintActionEnum forNumber(int value) {
            switch(value) {
                case 0:
                    return CONSTRAINTACTION_UNDEFINED;
                case 1:
                    return CONSTRAINTACTION_SET;
                case 2:
                    return CONSTRAINTACTION_DELETE;
                default:
                    return null;
            }
        }

        public static com.google.protobuf.Internal.EnumLiteMap<ConstraintActionEnum> internalGetValueMap() {
            return internalValueMap;
        }

        private static final com.google.protobuf.Internal.EnumLiteMap<ConstraintActionEnum> internalValueMap = new com.google.protobuf.Internal.EnumLiteMap<ConstraintActionEnum>() {

            public ConstraintActionEnum findValueByNumber(int number) {
                return ConstraintActionEnum.forNumber(number);
            }
        };

        public final com.google.protobuf.Descriptors.EnumValueDescriptor getValueDescriptor() {
            if (this == UNRECOGNIZED) {
                throw new java.lang.IllegalStateException("Can't get the descriptor of an unrecognized enum value.");
            }
            return getDescriptor().getValues().get(ordinal());
        }

        public final com.google.protobuf.Descriptors.EnumDescriptor getDescriptorForType() {
            return getDescriptor();
        }

        public static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor() {
            return context.ContextOuterClass.getDescriptor().getEnumTypes().get(8);
        }

        private static final ConstraintActionEnum[] VALUES = values();

        public static ConstraintActionEnum valueOf(com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
            if (desc.getType() != getDescriptor()) {
                throw new java.lang.IllegalArgumentException("EnumValueDescriptor is not for this type.");
            }
            if (desc.getIndex() == -1) {
                return UNRECOGNIZED;
            }
            return VALUES[desc.getIndex()];
        }

        private final int value;

        private ConstraintActionEnum(int value) {
            this.value = value;
        }
    }

    /**
     * Protobuf enum {@code context.IsolationLevelEnum}
     */
    public enum IsolationLevelEnum implements com.google.protobuf.ProtocolMessageEnum {

        /**
         * <code>NO_ISOLATION = 0;</code>
         */
        NO_ISOLATION(0),
        /**
         * <code>PHYSICAL_ISOLATION = 1;</code>
         */
        PHYSICAL_ISOLATION(1),
        /**
         * <code>LOGICAL_ISOLATION = 2;</code>
         */
        LOGICAL_ISOLATION(2),
        /**
         * <code>PROCESS_ISOLATION = 3;</code>
         */
        PROCESS_ISOLATION(3),
        /**
         * <code>PHYSICAL_MEMORY_ISOLATION = 4;</code>
         */
        PHYSICAL_MEMORY_ISOLATION(4),
        /**
         * <code>PHYSICAL_NETWORK_ISOLATION = 5;</code>
         */
        PHYSICAL_NETWORK_ISOLATION(5),
        /**
         * <code>VIRTUAL_RESOURCE_ISOLATION = 6;</code>
         */
        VIRTUAL_RESOURCE_ISOLATION(6),
        /**
         * <code>NETWORK_FUNCTIONS_ISOLATION = 7;</code>
         */
        NETWORK_FUNCTIONS_ISOLATION(7),
        /**
         * <code>SERVICE_ISOLATION = 8;</code>
         */
        SERVICE_ISOLATION(8),
        UNRECOGNIZED(-1);

        /**
         * <code>NO_ISOLATION = 0;</code>
         */
        public static final int NO_ISOLATION_VALUE = 0;

        /**
         * <code>PHYSICAL_ISOLATION = 1;</code>
         */
        public static final int PHYSICAL_ISOLATION_VALUE = 1;

        /**
         * <code>LOGICAL_ISOLATION = 2;</code>
         */
        public static final int LOGICAL_ISOLATION_VALUE = 2;

        /**
         * <code>PROCESS_ISOLATION = 3;</code>
         */
        public static final int PROCESS_ISOLATION_VALUE = 3;

        /**
         * <code>PHYSICAL_MEMORY_ISOLATION = 4;</code>
         */
        public static final int PHYSICAL_MEMORY_ISOLATION_VALUE = 4;

        /**
         * <code>PHYSICAL_NETWORK_ISOLATION = 5;</code>
         */
        public static final int PHYSICAL_NETWORK_ISOLATION_VALUE = 5;

        /**
         * <code>VIRTUAL_RESOURCE_ISOLATION = 6;</code>
         */
        public static final int VIRTUAL_RESOURCE_ISOLATION_VALUE = 6;

        /**
         * <code>NETWORK_FUNCTIONS_ISOLATION = 7;</code>
         */
        public static final int NETWORK_FUNCTIONS_ISOLATION_VALUE = 7;

        /**
         * <code>SERVICE_ISOLATION = 8;</code>
         */
        public static final int SERVICE_ISOLATION_VALUE = 8;

        public final int getNumber() {
            if (this == UNRECOGNIZED) {
                throw new java.lang.IllegalArgumentException("Can't get the number of an unknown enum value.");
            }
            return value;
        }

        /**
         * @param value The numeric wire value of the corresponding enum entry.
         * @return The enum associated with the given numeric wire value.
         * @deprecated Use {@link #forNumber(int)} instead.
         */
        @java.lang.Deprecated
        public static IsolationLevelEnum valueOf(int value) {
            return forNumber(value);
        }

        /**
         * @param value The numeric wire value of the corresponding enum entry.
         * @return The enum associated with the given numeric wire value.
         */
        public static IsolationLevelEnum forNumber(int value) {
            switch(value) {
                case 0:
                    return NO_ISOLATION;
                case 1:
                    return PHYSICAL_ISOLATION;
                case 2:
                    return LOGICAL_ISOLATION;
                case 3:
                    return PROCESS_ISOLATION;
                case 4:
                    return PHYSICAL_MEMORY_ISOLATION;
                case 5:
                    return PHYSICAL_NETWORK_ISOLATION;
                case 6:
                    return VIRTUAL_RESOURCE_ISOLATION;
                case 7:
                    return NETWORK_FUNCTIONS_ISOLATION;
                case 8:
                    return SERVICE_ISOLATION;
                default:
                    return null;
            }
        }

        public static com.google.protobuf.Internal.EnumLiteMap<IsolationLevelEnum> internalGetValueMap() {
            return internalValueMap;
        }

        private static final com.google.protobuf.Internal.EnumLiteMap<IsolationLevelEnum> internalValueMap = new com.google.protobuf.Internal.EnumLiteMap<IsolationLevelEnum>() {

            public IsolationLevelEnum findValueByNumber(int number) {
                return IsolationLevelEnum.forNumber(number);
            }
        };

        public final com.google.protobuf.Descriptors.EnumValueDescriptor getValueDescriptor() {
            if (this == UNRECOGNIZED) {
                throw new java.lang.IllegalStateException("Can't get the descriptor of an unrecognized enum value.");
            }
            return getDescriptor().getValues().get(ordinal());
        }

        public final com.google.protobuf.Descriptors.EnumDescriptor getDescriptorForType() {
            return getDescriptor();
        }

        public static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor() {
            return context.ContextOuterClass.getDescriptor().getEnumTypes().get(9);
        }

        private static final IsolationLevelEnum[] VALUES = values();

        public static IsolationLevelEnum valueOf(com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
            if (desc.getType() != getDescriptor()) {
                throw new java.lang.IllegalArgumentException("EnumValueDescriptor is not for this type.");
            }
            if (desc.getIndex() == -1) {
                return UNRECOGNIZED;
            }
            return VALUES[desc.getIndex()];
        }

        private final int value;

        private IsolationLevelEnum(int value) {
            this.value = value;
        }
    }

    public interface EmptyOrBuilder extends // @@protoc_insertion_point(interface_extends:context.Empty)
    com.google.protobuf.MessageOrBuilder {
    }

    /**
     * <pre>
     * ----- Generic -------------------------------------------------------------------------------------------------------
     * </pre>
     *
     * Protobuf type {@code context.Empty}
     */
    public static final class Empty extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.Empty)
    EmptyOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use Empty.newBuilder() to construct.
        private Empty(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private Empty() {
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new Empty();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_Empty_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_Empty_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Empty.class, context.ContextOuterClass.Empty.Builder.class);
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.Empty)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.Empty other = (context.ContextOuterClass.Empty) obj;
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.Empty parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.Empty parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.Empty parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.Empty parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.Empty parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.Empty parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.Empty parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.Empty parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.Empty parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.Empty parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.Empty parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.Empty parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.Empty prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * <pre>
         * ----- Generic -------------------------------------------------------------------------------------------------------
         * </pre>
         *
         * Protobuf type {@code context.Empty}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.Empty)
        context.ContextOuterClass.EmptyOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_Empty_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_Empty_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Empty.class, context.ContextOuterClass.Empty.Builder.class);
            }

            // Construct using context.ContextOuterClass.Empty.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_Empty_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.Empty getDefaultInstanceForType() {
                return context.ContextOuterClass.Empty.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.Empty build() {
                context.ContextOuterClass.Empty result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.Empty buildPartial() {
                context.ContextOuterClass.Empty result = new context.ContextOuterClass.Empty(this);
                onBuilt();
                return result;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.Empty) {
                    return mergeFrom((context.ContextOuterClass.Empty) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.Empty other) {
                if (other == context.ContextOuterClass.Empty.getDefaultInstance())
                    return this;
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.Empty)
        }

        // @@protoc_insertion_point(class_scope:context.Empty)
        private static final context.ContextOuterClass.Empty DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.Empty();
        }

        public static context.ContextOuterClass.Empty getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<Empty> PARSER = new com.google.protobuf.AbstractParser<Empty>() {

            @java.lang.Override
            public Empty parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<Empty> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<Empty> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.Empty getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface UuidOrBuilder extends // @@protoc_insertion_point(interface_extends:context.Uuid)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>string uuid = 1;</code>
         * @return The uuid.
         */
        java.lang.String getUuid();

        /**
         * <code>string uuid = 1;</code>
         * @return The bytes for uuid.
         */
        com.google.protobuf.ByteString getUuidBytes();
    }

    /**
     * Protobuf type {@code context.Uuid}
     */
    public static final class Uuid extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.Uuid)
    UuidOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use Uuid.newBuilder() to construct.
        private Uuid(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private Uuid() {
            uuid_ = "";
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new Uuid();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_Uuid_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_Uuid_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Uuid.class, context.ContextOuterClass.Uuid.Builder.class);
        }

        public static final int UUID_FIELD_NUMBER = 1;

        @SuppressWarnings("serial")
        private volatile java.lang.Object uuid_ = "";

        /**
         * <code>string uuid = 1;</code>
         * @return The uuid.
         */
        @java.lang.Override
        public java.lang.String getUuid() {
            java.lang.Object ref = uuid_;
            if (ref instanceof java.lang.String) {
                return (java.lang.String) ref;
            } else {
                com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                java.lang.String s = bs.toStringUtf8();
                uuid_ = s;
                return s;
            }
        }

        /**
         * <code>string uuid = 1;</code>
         * @return The bytes for uuid.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString getUuidBytes() {
            java.lang.Object ref = uuid_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                uuid_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(uuid_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 1, uuid_);
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(uuid_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, uuid_);
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.Uuid)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.Uuid other = (context.ContextOuterClass.Uuid) obj;
            if (!getUuid().equals(other.getUuid()))
                return false;
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            hash = (37 * hash) + UUID_FIELD_NUMBER;
            hash = (53 * hash) + getUuid().hashCode();
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.Uuid parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.Uuid parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.Uuid parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.Uuid parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.Uuid parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.Uuid parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.Uuid parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.Uuid parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.Uuid parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.Uuid parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.Uuid parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.Uuid parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.Uuid prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code context.Uuid}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.Uuid)
        context.ContextOuterClass.UuidOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_Uuid_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_Uuid_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Uuid.class, context.ContextOuterClass.Uuid.Builder.class);
            }

            // Construct using context.ContextOuterClass.Uuid.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                uuid_ = "";
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_Uuid_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.Uuid getDefaultInstanceForType() {
                return context.ContextOuterClass.Uuid.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.Uuid build() {
                context.ContextOuterClass.Uuid result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.Uuid buildPartial() {
                context.ContextOuterClass.Uuid result = new context.ContextOuterClass.Uuid(this);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartial0(context.ContextOuterClass.Uuid result) {
                int from_bitField0_ = bitField0_;
                if (((from_bitField0_ & 0x00000001) != 0)) {
                    result.uuid_ = uuid_;
                }
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.Uuid) {
                    return mergeFrom((context.ContextOuterClass.Uuid) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.Uuid other) {
                if (other == context.ContextOuterClass.Uuid.getDefaultInstance())
                    return this;
                if (!other.getUuid().isEmpty()) {
                    uuid_ = other.uuid_;
                    bitField0_ |= 0x00000001;
                    onChanged();
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 10:
                                {
                                    uuid_ = input.readStringRequireUtf8();
                                    bitField0_ |= 0x00000001;
                                    break;
                                }
                            // case 10
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private java.lang.Object uuid_ = "";

            /**
             * <code>string uuid = 1;</code>
             * @return The uuid.
             */
            public java.lang.String getUuid() {
                java.lang.Object ref = uuid_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    uuid_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }

            /**
             * <code>string uuid = 1;</code>
             * @return The bytes for uuid.
             */
            public com.google.protobuf.ByteString getUuidBytes() {
                java.lang.Object ref = uuid_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                    uuid_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }

            /**
             * <code>string uuid = 1;</code>
             * @param value The uuid to set.
             * @return This builder for chaining.
             */
            public Builder setUuid(java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                uuid_ = value;
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>string uuid = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearUuid() {
                uuid_ = getDefaultInstance().getUuid();
                bitField0_ = (bitField0_ & ~0x00000001);
                onChanged();
                return this;
            }

            /**
             * <code>string uuid = 1;</code>
             * @param value The bytes for uuid to set.
             * @return This builder for chaining.
             */
            public Builder setUuidBytes(com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);
                uuid_ = value;
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.Uuid)
        }

        // @@protoc_insertion_point(class_scope:context.Uuid)
        private static final context.ContextOuterClass.Uuid DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.Uuid();
        }

        public static context.ContextOuterClass.Uuid getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<Uuid> PARSER = new com.google.protobuf.AbstractParser<Uuid>() {

            @java.lang.Override
            public Uuid parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<Uuid> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<Uuid> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.Uuid getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface TimestampOrBuilder extends // @@protoc_insertion_point(interface_extends:context.Timestamp)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>double timestamp = 1;</code>
         * @return The timestamp.
         */
        double getTimestamp();
    }

    /**
     * Protobuf type {@code context.Timestamp}
     */
    public static final class Timestamp extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.Timestamp)
    TimestampOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use Timestamp.newBuilder() to construct.
        private Timestamp(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private Timestamp() {
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new Timestamp();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_Timestamp_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_Timestamp_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Timestamp.class, context.ContextOuterClass.Timestamp.Builder.class);
        }

        public static final int TIMESTAMP_FIELD_NUMBER = 1;

        private double timestamp_ = 0D;

        /**
         * <code>double timestamp = 1;</code>
         * @return The timestamp.
         */
        @java.lang.Override
        public double getTimestamp() {
            return timestamp_;
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            if (java.lang.Double.doubleToRawLongBits(timestamp_) != 0) {
                output.writeDouble(1, timestamp_);
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            if (java.lang.Double.doubleToRawLongBits(timestamp_) != 0) {
                size += com.google.protobuf.CodedOutputStream.computeDoubleSize(1, timestamp_);
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.Timestamp)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.Timestamp other = (context.ContextOuterClass.Timestamp) obj;
            if (java.lang.Double.doubleToLongBits(getTimestamp()) != java.lang.Double.doubleToLongBits(other.getTimestamp()))
                return false;
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashLong(java.lang.Double.doubleToLongBits(getTimestamp()));
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.Timestamp parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.Timestamp parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.Timestamp parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.Timestamp parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.Timestamp parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.Timestamp parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.Timestamp parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.Timestamp parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.Timestamp parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.Timestamp parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.Timestamp parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.Timestamp parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.Timestamp prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code context.Timestamp}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.Timestamp)
        context.ContextOuterClass.TimestampOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_Timestamp_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_Timestamp_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Timestamp.class, context.ContextOuterClass.Timestamp.Builder.class);
            }

            // Construct using context.ContextOuterClass.Timestamp.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                timestamp_ = 0D;
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_Timestamp_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.Timestamp getDefaultInstanceForType() {
                return context.ContextOuterClass.Timestamp.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.Timestamp build() {
                context.ContextOuterClass.Timestamp result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.Timestamp buildPartial() {
                context.ContextOuterClass.Timestamp result = new context.ContextOuterClass.Timestamp(this);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartial0(context.ContextOuterClass.Timestamp result) {
                int from_bitField0_ = bitField0_;
                if (((from_bitField0_ & 0x00000001) != 0)) {
                    result.timestamp_ = timestamp_;
                }
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.Timestamp) {
                    return mergeFrom((context.ContextOuterClass.Timestamp) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.Timestamp other) {
                if (other == context.ContextOuterClass.Timestamp.getDefaultInstance())
                    return this;
                if (other.getTimestamp() != 0D) {
                    setTimestamp(other.getTimestamp());
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 9:
                                {
                                    timestamp_ = input.readDouble();
                                    bitField0_ |= 0x00000001;
                                    break;
                                }
                            // case 9
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private double timestamp_;

            /**
             * <code>double timestamp = 1;</code>
             * @return The timestamp.
             */
            @java.lang.Override
            public double getTimestamp() {
                return timestamp_;
            }

            /**
             * <code>double timestamp = 1;</code>
             * @param value The timestamp to set.
             * @return This builder for chaining.
             */
            public Builder setTimestamp(double value) {
                timestamp_ = value;
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>double timestamp = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearTimestamp() {
                bitField0_ = (bitField0_ & ~0x00000001);
                timestamp_ = 0D;
                onChanged();
                return this;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.Timestamp)
        }

        // @@protoc_insertion_point(class_scope:context.Timestamp)
        private static final context.ContextOuterClass.Timestamp DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.Timestamp();
        }

        public static context.ContextOuterClass.Timestamp getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<Timestamp> PARSER = new com.google.protobuf.AbstractParser<Timestamp>() {

            @java.lang.Override
            public Timestamp parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<Timestamp> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<Timestamp> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.Timestamp getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface EventOrBuilder extends // @@protoc_insertion_point(interface_extends:context.Event)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>.context.Timestamp timestamp = 1;</code>
         * @return Whether the timestamp field is set.
         */
        boolean hasTimestamp();

        /**
         * <code>.context.Timestamp timestamp = 1;</code>
         * @return The timestamp.
         */
        context.ContextOuterClass.Timestamp getTimestamp();

        /**
         * <code>.context.Timestamp timestamp = 1;</code>
         */
        context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder();

        /**
         * <code>.context.EventTypeEnum event_type = 2;</code>
         * @return The enum numeric value on the wire for eventType.
         */
        int getEventTypeValue();

        /**
         * <code>.context.EventTypeEnum event_type = 2;</code>
         * @return The eventType.
         */
        context.ContextOuterClass.EventTypeEnum getEventType();
    }

    /**
     * Protobuf type {@code context.Event}
     */
    public static final class Event extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.Event)
    EventOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use Event.newBuilder() to construct.
        private Event(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private Event() {
            eventType_ = 0;
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new Event();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_Event_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_Event_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Event.class, context.ContextOuterClass.Event.Builder.class);
        }

        public static final int TIMESTAMP_FIELD_NUMBER = 1;

        private context.ContextOuterClass.Timestamp timestamp_;

        /**
         * <code>.context.Timestamp timestamp = 1;</code>
         * @return Whether the timestamp field is set.
         */
        @java.lang.Override
        public boolean hasTimestamp() {
            return timestamp_ != null;
        }

        /**
         * <code>.context.Timestamp timestamp = 1;</code>
         * @return The timestamp.
         */
        @java.lang.Override
        public context.ContextOuterClass.Timestamp getTimestamp() {
            return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
        }

        /**
         * <code>.context.Timestamp timestamp = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder() {
            return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
        }

        public static final int EVENT_TYPE_FIELD_NUMBER = 2;

        private int eventType_ = 0;

        /**
         * <code>.context.EventTypeEnum event_type = 2;</code>
         * @return The enum numeric value on the wire for eventType.
         */
        @java.lang.Override
        public int getEventTypeValue() {
            return eventType_;
        }

        /**
         * <code>.context.EventTypeEnum event_type = 2;</code>
         * @return The eventType.
         */
        @java.lang.Override
        public context.ContextOuterClass.EventTypeEnum getEventType() {
            context.ContextOuterClass.EventTypeEnum result = context.ContextOuterClass.EventTypeEnum.forNumber(eventType_);
            return result == null ? context.ContextOuterClass.EventTypeEnum.UNRECOGNIZED : result;
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            if (timestamp_ != null) {
                output.writeMessage(1, getTimestamp());
            }
            if (eventType_ != context.ContextOuterClass.EventTypeEnum.EVENTTYPE_UNDEFINED.getNumber()) {
                output.writeEnum(2, eventType_);
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            if (timestamp_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getTimestamp());
            }
            if (eventType_ != context.ContextOuterClass.EventTypeEnum.EVENTTYPE_UNDEFINED.getNumber()) {
                size += com.google.protobuf.CodedOutputStream.computeEnumSize(2, eventType_);
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.Event)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.Event other = (context.ContextOuterClass.Event) obj;
            if (hasTimestamp() != other.hasTimestamp())
                return false;
            if (hasTimestamp()) {
                if (!getTimestamp().equals(other.getTimestamp()))
                    return false;
            }
            if (eventType_ != other.eventType_)
                return false;
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            if (hasTimestamp()) {
                hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER;
                hash = (53 * hash) + getTimestamp().hashCode();
            }
            hash = (37 * hash) + EVENT_TYPE_FIELD_NUMBER;
            hash = (53 * hash) + eventType_;
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.Event parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.Event parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.Event parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.Event parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.Event parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.Event parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.Event parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.Event parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.Event parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.Event parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.Event parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.Event parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.Event prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code context.Event}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.Event)
        context.ContextOuterClass.EventOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_Event_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_Event_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Event.class, context.ContextOuterClass.Event.Builder.class);
            }

            // Construct using context.ContextOuterClass.Event.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                timestamp_ = null;
                if (timestampBuilder_ != null) {
                    timestampBuilder_.dispose();
                    timestampBuilder_ = null;
                }
                eventType_ = 0;
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_Event_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.Event getDefaultInstanceForType() {
                return context.ContextOuterClass.Event.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.Event build() {
                context.ContextOuterClass.Event result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.Event buildPartial() {
                context.ContextOuterClass.Event result = new context.ContextOuterClass.Event(this);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartial0(context.ContextOuterClass.Event result) {
                int from_bitField0_ = bitField0_;
                if (((from_bitField0_ & 0x00000001) != 0)) {
                    result.timestamp_ = timestampBuilder_ == null ? timestamp_ : timestampBuilder_.build();
                }
                if (((from_bitField0_ & 0x00000002) != 0)) {
                    result.eventType_ = eventType_;
                }
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.Event) {
                    return mergeFrom((context.ContextOuterClass.Event) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.Event other) {
                if (other == context.ContextOuterClass.Event.getDefaultInstance())
                    return this;
                if (other.hasTimestamp()) {
                    mergeTimestamp(other.getTimestamp());
                }
                if (other.eventType_ != 0) {
                    setEventTypeValue(other.getEventTypeValue());
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 10:
                                {
                                    input.readMessage(getTimestampFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000001;
                                    break;
                                }
                            // case 10
                            case 16:
                                {
                                    eventType_ = input.readEnum();
                                    bitField0_ |= 0x00000002;
                                    break;
                                }
                            // case 16
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private context.ContextOuterClass.Timestamp timestamp_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> timestampBuilder_;

            /**
             * <code>.context.Timestamp timestamp = 1;</code>
             * @return Whether the timestamp field is set.
             */
            public boolean hasTimestamp() {
                return ((bitField0_ & 0x00000001) != 0);
            }

            /**
             * <code>.context.Timestamp timestamp = 1;</code>
             * @return The timestamp.
             */
            public context.ContextOuterClass.Timestamp getTimestamp() {
                if (timestampBuilder_ == null) {
                    return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
                } else {
                    return timestampBuilder_.getMessage();
                }
            }

            /**
             * <code>.context.Timestamp timestamp = 1;</code>
             */
            public Builder setTimestamp(context.ContextOuterClass.Timestamp value) {
                if (timestampBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    timestamp_ = value;
                } else {
                    timestampBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.Timestamp timestamp = 1;</code>
             */
            public Builder setTimestamp(context.ContextOuterClass.Timestamp.Builder builderForValue) {
                if (timestampBuilder_ == null) {
                    timestamp_ = builderForValue.build();
                } else {
                    timestampBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.Timestamp timestamp = 1;</code>
             */
            public Builder mergeTimestamp(context.ContextOuterClass.Timestamp value) {
                if (timestampBuilder_ == null) {
                    if (((bitField0_ & 0x00000001) != 0) && timestamp_ != null && timestamp_ != context.ContextOuterClass.Timestamp.getDefaultInstance()) {
                        getTimestampBuilder().mergeFrom(value);
                    } else {
                        timestamp_ = value;
                    }
                } else {
                    timestampBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.Timestamp timestamp = 1;</code>
             */
            public Builder clearTimestamp() {
                bitField0_ = (bitField0_ & ~0x00000001);
                timestamp_ = null;
                if (timestampBuilder_ != null) {
                    timestampBuilder_.dispose();
                    timestampBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.Timestamp timestamp = 1;</code>
             */
            public context.ContextOuterClass.Timestamp.Builder getTimestampBuilder() {
                bitField0_ |= 0x00000001;
                onChanged();
                return getTimestampFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.Timestamp timestamp = 1;</code>
             */
            public context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder() {
                if (timestampBuilder_ != null) {
                    return timestampBuilder_.getMessageOrBuilder();
                } else {
                    return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
                }
            }

            /**
             * <code>.context.Timestamp timestamp = 1;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> getTimestampFieldBuilder() {
                if (timestampBuilder_ == null) {
                    timestampBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder>(getTimestamp(), getParentForChildren(), isClean());
                    timestamp_ = null;
                }
                return timestampBuilder_;
            }

            private int eventType_ = 0;

            /**
             * <code>.context.EventTypeEnum event_type = 2;</code>
             * @return The enum numeric value on the wire for eventType.
             */
            @java.lang.Override
            public int getEventTypeValue() {
                return eventType_;
            }

            /**
             * <code>.context.EventTypeEnum event_type = 2;</code>
             * @param value The enum numeric value on the wire for eventType to set.
             * @return This builder for chaining.
             */
            public Builder setEventTypeValue(int value) {
                eventType_ = value;
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>.context.EventTypeEnum event_type = 2;</code>
             * @return The eventType.
             */
            @java.lang.Override
            public context.ContextOuterClass.EventTypeEnum getEventType() {
                context.ContextOuterClass.EventTypeEnum result = context.ContextOuterClass.EventTypeEnum.forNumber(eventType_);
                return result == null ? context.ContextOuterClass.EventTypeEnum.UNRECOGNIZED : result;
            }

            /**
             * <code>.context.EventTypeEnum event_type = 2;</code>
             * @param value The eventType to set.
             * @return This builder for chaining.
             */
            public Builder setEventType(context.ContextOuterClass.EventTypeEnum value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                bitField0_ |= 0x00000002;
                eventType_ = value.getNumber();
                onChanged();
                return this;
            }

            /**
             * <code>.context.EventTypeEnum event_type = 2;</code>
             * @return This builder for chaining.
             */
            public Builder clearEventType() {
                bitField0_ = (bitField0_ & ~0x00000002);
                eventType_ = 0;
                onChanged();
                return this;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.Event)
        }

        // @@protoc_insertion_point(class_scope:context.Event)
        private static final context.ContextOuterClass.Event DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.Event();
        }

        public static context.ContextOuterClass.Event getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<Event> PARSER = new com.google.protobuf.AbstractParser<Event>() {

            @java.lang.Override
            public Event parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<Event> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<Event> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.Event getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface ContextIdOrBuilder extends // @@protoc_insertion_point(interface_extends:context.ContextId)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>.context.Uuid context_uuid = 1;</code>
         * @return Whether the contextUuid field is set.
         */
        boolean hasContextUuid();

        /**
         * <code>.context.Uuid context_uuid = 1;</code>
         * @return The contextUuid.
         */
        context.ContextOuterClass.Uuid getContextUuid();

        /**
         * <code>.context.Uuid context_uuid = 1;</code>
         */
        context.ContextOuterClass.UuidOrBuilder getContextUuidOrBuilder();
    }

    /**
     * <pre>
     * ----- Context -------------------------------------------------------------------------------------------------------
     * </pre>
     *
     * Protobuf type {@code context.ContextId}
     */
    public static final class ContextId extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.ContextId)
    ContextIdOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use ContextId.newBuilder() to construct.
        private ContextId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private ContextId() {
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new ContextId();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_ContextId_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_ContextId_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ContextId.class, context.ContextOuterClass.ContextId.Builder.class);
        }

        public static final int CONTEXT_UUID_FIELD_NUMBER = 1;

        private context.ContextOuterClass.Uuid contextUuid_;

        /**
         * <code>.context.Uuid context_uuid = 1;</code>
         * @return Whether the contextUuid field is set.
         */
        @java.lang.Override
        public boolean hasContextUuid() {
            return contextUuid_ != null;
        }

        /**
         * <code>.context.Uuid context_uuid = 1;</code>
         * @return The contextUuid.
         */
        @java.lang.Override
        public context.ContextOuterClass.Uuid getContextUuid() {
            return contextUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : contextUuid_;
        }

        /**
         * <code>.context.Uuid context_uuid = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.UuidOrBuilder getContextUuidOrBuilder() {
            return contextUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : contextUuid_;
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            if (contextUuid_ != null) {
                output.writeMessage(1, getContextUuid());
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            if (contextUuid_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getContextUuid());
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.ContextId)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.ContextId other = (context.ContextOuterClass.ContextId) obj;
            if (hasContextUuid() != other.hasContextUuid())
                return false;
            if (hasContextUuid()) {
                if (!getContextUuid().equals(other.getContextUuid()))
                    return false;
            }
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            if (hasContextUuid()) {
                hash = (37 * hash) + CONTEXT_UUID_FIELD_NUMBER;
                hash = (53 * hash) + getContextUuid().hashCode();
            }
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.ContextId parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.ContextId parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.ContextId parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.ContextId parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.ContextId parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.ContextId parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.ContextId parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.ContextId parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.ContextId parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.ContextId parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.ContextId parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.ContextId parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.ContextId prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * <pre>
         * ----- Context -------------------------------------------------------------------------------------------------------
         * </pre>
         *
         * Protobuf type {@code context.ContextId}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.ContextId)
        context.ContextOuterClass.ContextIdOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_ContextId_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_ContextId_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ContextId.class, context.ContextOuterClass.ContextId.Builder.class);
            }

            // Construct using context.ContextOuterClass.ContextId.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                contextUuid_ = null;
                if (contextUuidBuilder_ != null) {
                    contextUuidBuilder_.dispose();
                    contextUuidBuilder_ = null;
                }
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_ContextId_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.ContextId getDefaultInstanceForType() {
                return context.ContextOuterClass.ContextId.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.ContextId build() {
                context.ContextOuterClass.ContextId result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.ContextId buildPartial() {
                context.ContextOuterClass.ContextId result = new context.ContextOuterClass.ContextId(this);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartial0(context.ContextOuterClass.ContextId result) {
                int from_bitField0_ = bitField0_;
                if (((from_bitField0_ & 0x00000001) != 0)) {
                    result.contextUuid_ = contextUuidBuilder_ == null ? contextUuid_ : contextUuidBuilder_.build();
                }
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.ContextId) {
                    return mergeFrom((context.ContextOuterClass.ContextId) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.ContextId other) {
                if (other == context.ContextOuterClass.ContextId.getDefaultInstance())
                    return this;
                if (other.hasContextUuid()) {
                    mergeContextUuid(other.getContextUuid());
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 10:
                                {
                                    input.readMessage(getContextUuidFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000001;
                                    break;
                                }
                            // case 10
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private context.ContextOuterClass.Uuid contextUuid_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> contextUuidBuilder_;

            /**
             * <code>.context.Uuid context_uuid = 1;</code>
             * @return Whether the contextUuid field is set.
             */
            public boolean hasContextUuid() {
                return ((bitField0_ & 0x00000001) != 0);
            }

            /**
             * <code>.context.Uuid context_uuid = 1;</code>
             * @return The contextUuid.
             */
            public context.ContextOuterClass.Uuid getContextUuid() {
                if (contextUuidBuilder_ == null) {
                    return contextUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : contextUuid_;
                } else {
                    return contextUuidBuilder_.getMessage();
                }
            }

            /**
             * <code>.context.Uuid context_uuid = 1;</code>
             */
            public Builder setContextUuid(context.ContextOuterClass.Uuid value) {
                if (contextUuidBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    contextUuid_ = value;
                } else {
                    contextUuidBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.Uuid context_uuid = 1;</code>
             */
            public Builder setContextUuid(context.ContextOuterClass.Uuid.Builder builderForValue) {
                if (contextUuidBuilder_ == null) {
                    contextUuid_ = builderForValue.build();
                } else {
                    contextUuidBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.Uuid context_uuid = 1;</code>
             */
            public Builder mergeContextUuid(context.ContextOuterClass.Uuid value) {
                if (contextUuidBuilder_ == null) {
                    if (((bitField0_ & 0x00000001) != 0) && contextUuid_ != null && contextUuid_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
                        getContextUuidBuilder().mergeFrom(value);
                    } else {
                        contextUuid_ = value;
                    }
                } else {
                    contextUuidBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.Uuid context_uuid = 1;</code>
             */
            public Builder clearContextUuid() {
                bitField0_ = (bitField0_ & ~0x00000001);
                contextUuid_ = null;
                if (contextUuidBuilder_ != null) {
                    contextUuidBuilder_.dispose();
                    contextUuidBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.Uuid context_uuid = 1;</code>
             */
            public context.ContextOuterClass.Uuid.Builder getContextUuidBuilder() {
                bitField0_ |= 0x00000001;
                onChanged();
                return getContextUuidFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.Uuid context_uuid = 1;</code>
             */
            public context.ContextOuterClass.UuidOrBuilder getContextUuidOrBuilder() {
                if (contextUuidBuilder_ != null) {
                    return contextUuidBuilder_.getMessageOrBuilder();
                } else {
                    return contextUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : contextUuid_;
                }
            }

            /**
             * <code>.context.Uuid context_uuid = 1;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> getContextUuidFieldBuilder() {
                if (contextUuidBuilder_ == null) {
                    contextUuidBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder>(getContextUuid(), getParentForChildren(), isClean());
                    contextUuid_ = null;
                }
                return contextUuidBuilder_;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.ContextId)
        }

        // @@protoc_insertion_point(class_scope:context.ContextId)
        private static final context.ContextOuterClass.ContextId DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.ContextId();
        }

        public static context.ContextOuterClass.ContextId getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<ContextId> PARSER = new com.google.protobuf.AbstractParser<ContextId>() {

            @java.lang.Override
            public ContextId parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<ContextId> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<ContextId> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.ContextId getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface ContextOrBuilder extends // @@protoc_insertion_point(interface_extends:context.Context)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>.context.ContextId context_id = 1;</code>
         * @return Whether the contextId field is set.
         */
        boolean hasContextId();

        /**
         * <code>.context.ContextId context_id = 1;</code>
         * @return The contextId.
         */
        context.ContextOuterClass.ContextId getContextId();

        /**
         * <code>.context.ContextId context_id = 1;</code>
         */
        context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder();

        /**
         * <code>string name = 2;</code>
         * @return The name.
         */
        java.lang.String getName();

        /**
         * <code>string name = 2;</code>
         * @return The bytes for name.
         */
        com.google.protobuf.ByteString getNameBytes();

        /**
         * <code>repeated .context.TopologyId topology_ids = 3;</code>
         */
        java.util.List<context.ContextOuterClass.TopologyId> getTopologyIdsList();

        /**
         * <code>repeated .context.TopologyId topology_ids = 3;</code>
         */
        context.ContextOuterClass.TopologyId getTopologyIds(int index);

        /**
         * <code>repeated .context.TopologyId topology_ids = 3;</code>
         */
        int getTopologyIdsCount();

        /**
         * <code>repeated .context.TopologyId topology_ids = 3;</code>
         */
        java.util.List<? extends context.ContextOuterClass.TopologyIdOrBuilder> getTopologyIdsOrBuilderList();

        /**
         * <code>repeated .context.TopologyId topology_ids = 3;</code>
         */
        context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdsOrBuilder(int index);

        /**
         * <code>repeated .context.ServiceId service_ids = 4;</code>
         */
        java.util.List<context.ContextOuterClass.ServiceId> getServiceIdsList();

        /**
         * <code>repeated .context.ServiceId service_ids = 4;</code>
         */
        context.ContextOuterClass.ServiceId getServiceIds(int index);

        /**
         * <code>repeated .context.ServiceId service_ids = 4;</code>
         */
        int getServiceIdsCount();

        /**
         * <code>repeated .context.ServiceId service_ids = 4;</code>
         */
        java.util.List<? extends context.ContextOuterClass.ServiceIdOrBuilder> getServiceIdsOrBuilderList();

        /**
         * <code>repeated .context.ServiceId service_ids = 4;</code>
         */
        context.ContextOuterClass.ServiceIdOrBuilder getServiceIdsOrBuilder(int index);

        /**
         * <code>repeated .context.SliceId slice_ids = 5;</code>
         */
        java.util.List<context.ContextOuterClass.SliceId> getSliceIdsList();

        /**
         * <code>repeated .context.SliceId slice_ids = 5;</code>
         */
        context.ContextOuterClass.SliceId getSliceIds(int index);

        /**
         * <code>repeated .context.SliceId slice_ids = 5;</code>
         */
        int getSliceIdsCount();

        /**
         * <code>repeated .context.SliceId slice_ids = 5;</code>
         */
        java.util.List<? extends context.ContextOuterClass.SliceIdOrBuilder> getSliceIdsOrBuilderList();

        /**
         * <code>repeated .context.SliceId slice_ids = 5;</code>
         */
        context.ContextOuterClass.SliceIdOrBuilder getSliceIdsOrBuilder(int index);

        /**
         * <code>.context.TeraFlowController controller = 6;</code>
         * @return Whether the controller field is set.
         */
        boolean hasController();

        /**
         * <code>.context.TeraFlowController controller = 6;</code>
         * @return The controller.
         */
        context.ContextOuterClass.TeraFlowController getController();

        /**
         * <code>.context.TeraFlowController controller = 6;</code>
         */
        context.ContextOuterClass.TeraFlowControllerOrBuilder getControllerOrBuilder();
    }

    /**
     * Protobuf type {@code context.Context}
     */
    public static final class Context extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.Context)
    ContextOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use Context.newBuilder() to construct.
        private Context(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private Context() {
            name_ = "";
            topologyIds_ = java.util.Collections.emptyList();
            serviceIds_ = java.util.Collections.emptyList();
            sliceIds_ = java.util.Collections.emptyList();
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new Context();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_Context_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_Context_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Context.class, context.ContextOuterClass.Context.Builder.class);
        }

        public static final int CONTEXT_ID_FIELD_NUMBER = 1;

        private context.ContextOuterClass.ContextId contextId_;

        /**
         * <code>.context.ContextId context_id = 1;</code>
         * @return Whether the contextId field is set.
         */
        @java.lang.Override
        public boolean hasContextId() {
            return contextId_ != null;
        }

        /**
         * <code>.context.ContextId context_id = 1;</code>
         * @return The contextId.
         */
        @java.lang.Override
        public context.ContextOuterClass.ContextId getContextId() {
            return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
        }

        /**
         * <code>.context.ContextId context_id = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
            return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
        }

        public static final int NAME_FIELD_NUMBER = 2;

        @SuppressWarnings("serial")
        private volatile java.lang.Object name_ = "";

        /**
         * <code>string name = 2;</code>
         * @return The name.
         */
        @java.lang.Override
        public java.lang.String getName() {
            java.lang.Object ref = name_;
            if (ref instanceof java.lang.String) {
                return (java.lang.String) ref;
            } else {
                com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                java.lang.String s = bs.toStringUtf8();
                name_ = s;
                return s;
            }
        }

        /**
         * <code>string name = 2;</code>
         * @return The bytes for name.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString getNameBytes() {
            java.lang.Object ref = name_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                name_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int TOPOLOGY_IDS_FIELD_NUMBER = 3;

        @SuppressWarnings("serial")
        private java.util.List<context.ContextOuterClass.TopologyId> topologyIds_;

        /**
         * <code>repeated .context.TopologyId topology_ids = 3;</code>
         */
        @java.lang.Override
        public java.util.List<context.ContextOuterClass.TopologyId> getTopologyIdsList() {
            return topologyIds_;
        }

        /**
         * <code>repeated .context.TopologyId topology_ids = 3;</code>
         */
        @java.lang.Override
        public java.util.List<? extends context.ContextOuterClass.TopologyIdOrBuilder> getTopologyIdsOrBuilderList() {
            return topologyIds_;
        }

        /**
         * <code>repeated .context.TopologyId topology_ids = 3;</code>
         */
        @java.lang.Override
        public int getTopologyIdsCount() {
            return topologyIds_.size();
        }

        /**
         * <code>repeated .context.TopologyId topology_ids = 3;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.TopologyId getTopologyIds(int index) {
            return topologyIds_.get(index);
        }

        /**
         * <code>repeated .context.TopologyId topology_ids = 3;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdsOrBuilder(int index) {
            return topologyIds_.get(index);
        }

        public static final int SERVICE_IDS_FIELD_NUMBER = 4;

        @SuppressWarnings("serial")
        private java.util.List<context.ContextOuterClass.ServiceId> serviceIds_;

        /**
         * <code>repeated .context.ServiceId service_ids = 4;</code>
         */
        @java.lang.Override
        public java.util.List<context.ContextOuterClass.ServiceId> getServiceIdsList() {
            return serviceIds_;
        }

        /**
         * <code>repeated .context.ServiceId service_ids = 4;</code>
         */
        @java.lang.Override
        public java.util.List<? extends context.ContextOuterClass.ServiceIdOrBuilder> getServiceIdsOrBuilderList() {
            return serviceIds_;
        }

        /**
         * <code>repeated .context.ServiceId service_ids = 4;</code>
         */
        @java.lang.Override
        public int getServiceIdsCount() {
            return serviceIds_.size();
        }

        /**
         * <code>repeated .context.ServiceId service_ids = 4;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.ServiceId getServiceIds(int index) {
            return serviceIds_.get(index);
        }

        /**
         * <code>repeated .context.ServiceId service_ids = 4;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdsOrBuilder(int index) {
            return serviceIds_.get(index);
        }

        public static final int SLICE_IDS_FIELD_NUMBER = 5;

        @SuppressWarnings("serial")
        private java.util.List<context.ContextOuterClass.SliceId> sliceIds_;

        /**
         * <code>repeated .context.SliceId slice_ids = 5;</code>
         */
        @java.lang.Override
        public java.util.List<context.ContextOuterClass.SliceId> getSliceIdsList() {
            return sliceIds_;
        }

        /**
         * <code>repeated .context.SliceId slice_ids = 5;</code>
         */
        @java.lang.Override
        public java.util.List<? extends context.ContextOuterClass.SliceIdOrBuilder> getSliceIdsOrBuilderList() {
            return sliceIds_;
        }

        /**
         * <code>repeated .context.SliceId slice_ids = 5;</code>
         */
        @java.lang.Override
        public int getSliceIdsCount() {
            return sliceIds_.size();
        }

        /**
         * <code>repeated .context.SliceId slice_ids = 5;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.SliceId getSliceIds(int index) {
            return sliceIds_.get(index);
        }

        /**
         * <code>repeated .context.SliceId slice_ids = 5;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.SliceIdOrBuilder getSliceIdsOrBuilder(int index) {
            return sliceIds_.get(index);
        }

        public static final int CONTROLLER_FIELD_NUMBER = 6;

        private context.ContextOuterClass.TeraFlowController controller_;

        /**
         * <code>.context.TeraFlowController controller = 6;</code>
         * @return Whether the controller field is set.
         */
        @java.lang.Override
        public boolean hasController() {
            return controller_ != null;
        }

        /**
         * <code>.context.TeraFlowController controller = 6;</code>
         * @return The controller.
         */
        @java.lang.Override
        public context.ContextOuterClass.TeraFlowController getController() {
            return controller_ == null ? context.ContextOuterClass.TeraFlowController.getDefaultInstance() : controller_;
        }

        /**
         * <code>.context.TeraFlowController controller = 6;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.TeraFlowControllerOrBuilder getControllerOrBuilder() {
            return controller_ == null ? context.ContextOuterClass.TeraFlowController.getDefaultInstance() : controller_;
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            if (contextId_ != null) {
                output.writeMessage(1, getContextId());
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
            }
            for (int i = 0; i < topologyIds_.size(); i++) {
                output.writeMessage(3, topologyIds_.get(i));
            }
            for (int i = 0; i < serviceIds_.size(); i++) {
                output.writeMessage(4, serviceIds_.get(i));
            }
            for (int i = 0; i < sliceIds_.size(); i++) {
                output.writeMessage(5, sliceIds_.get(i));
            }
            if (controller_ != null) {
                output.writeMessage(6, getController());
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            if (contextId_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getContextId());
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
            }
            for (int i = 0; i < topologyIds_.size(); i++) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, topologyIds_.get(i));
            }
            for (int i = 0; i < serviceIds_.size(); i++) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, serviceIds_.get(i));
            }
            for (int i = 0; i < sliceIds_.size(); i++) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(5, sliceIds_.get(i));
            }
            if (controller_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(6, getController());
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.Context)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.Context other = (context.ContextOuterClass.Context) obj;
            if (hasContextId() != other.hasContextId())
                return false;
            if (hasContextId()) {
                if (!getContextId().equals(other.getContextId()))
                    return false;
            }
            if (!getName().equals(other.getName()))
                return false;
            if (!getTopologyIdsList().equals(other.getTopologyIdsList()))
                return false;
            if (!getServiceIdsList().equals(other.getServiceIdsList()))
                return false;
            if (!getSliceIdsList().equals(other.getSliceIdsList()))
                return false;
            if (hasController() != other.hasController())
                return false;
            if (hasController()) {
                if (!getController().equals(other.getController()))
                    return false;
            }
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            if (hasContextId()) {
                hash = (37 * hash) + CONTEXT_ID_FIELD_NUMBER;
                hash = (53 * hash) + getContextId().hashCode();
            }
            hash = (37 * hash) + NAME_FIELD_NUMBER;
            hash = (53 * hash) + getName().hashCode();
            if (getTopologyIdsCount() > 0) {
                hash = (37 * hash) + TOPOLOGY_IDS_FIELD_NUMBER;
                hash = (53 * hash) + getTopologyIdsList().hashCode();
            }
            if (getServiceIdsCount() > 0) {
                hash = (37 * hash) + SERVICE_IDS_FIELD_NUMBER;
                hash = (53 * hash) + getServiceIdsList().hashCode();
            }
            if (getSliceIdsCount() > 0) {
                hash = (37 * hash) + SLICE_IDS_FIELD_NUMBER;
                hash = (53 * hash) + getSliceIdsList().hashCode();
            }
            if (hasController()) {
                hash = (37 * hash) + CONTROLLER_FIELD_NUMBER;
                hash = (53 * hash) + getController().hashCode();
            }
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.Context parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.Context parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.Context parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.Context parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.Context parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.Context parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.Context parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.Context parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.Context parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.Context parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.Context parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.Context parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.Context prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code context.Context}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.Context)
        context.ContextOuterClass.ContextOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_Context_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_Context_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Context.class, context.ContextOuterClass.Context.Builder.class);
            }

            // Construct using context.ContextOuterClass.Context.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                contextId_ = null;
                if (contextIdBuilder_ != null) {
                    contextIdBuilder_.dispose();
                    contextIdBuilder_ = null;
                }
                name_ = "";
                if (topologyIdsBuilder_ == null) {
                    topologyIds_ = java.util.Collections.emptyList();
                } else {
                    topologyIds_ = null;
                    topologyIdsBuilder_.clear();
                }
                bitField0_ = (bitField0_ & ~0x00000004);
                if (serviceIdsBuilder_ == null) {
                    serviceIds_ = java.util.Collections.emptyList();
                } else {
                    serviceIds_ = null;
                    serviceIdsBuilder_.clear();
                }
                bitField0_ = (bitField0_ & ~0x00000008);
                if (sliceIdsBuilder_ == null) {
                    sliceIds_ = java.util.Collections.emptyList();
                } else {
                    sliceIds_ = null;
                    sliceIdsBuilder_.clear();
                }
                bitField0_ = (bitField0_ & ~0x00000010);
                controller_ = null;
                if (controllerBuilder_ != null) {
                    controllerBuilder_.dispose();
                    controllerBuilder_ = null;
                }
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_Context_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.Context getDefaultInstanceForType() {
                return context.ContextOuterClass.Context.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.Context build() {
                context.ContextOuterClass.Context result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.Context buildPartial() {
                context.ContextOuterClass.Context result = new context.ContextOuterClass.Context(this);
                buildPartialRepeatedFields(result);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartialRepeatedFields(context.ContextOuterClass.Context result) {
                if (topologyIdsBuilder_ == null) {
                    if (((bitField0_ & 0x00000004) != 0)) {
                        topologyIds_ = java.util.Collections.unmodifiableList(topologyIds_);
                        bitField0_ = (bitField0_ & ~0x00000004);
                    }
                    result.topologyIds_ = topologyIds_;
                } else {
                    result.topologyIds_ = topologyIdsBuilder_.build();
                }
                if (serviceIdsBuilder_ == null) {
                    if (((bitField0_ & 0x00000008) != 0)) {
                        serviceIds_ = java.util.Collections.unmodifiableList(serviceIds_);
                        bitField0_ = (bitField0_ & ~0x00000008);
                    }
                    result.serviceIds_ = serviceIds_;
                } else {
                    result.serviceIds_ = serviceIdsBuilder_.build();
                }
                if (sliceIdsBuilder_ == null) {
                    if (((bitField0_ & 0x00000010) != 0)) {
                        sliceIds_ = java.util.Collections.unmodifiableList(sliceIds_);
                        bitField0_ = (bitField0_ & ~0x00000010);
                    }
                    result.sliceIds_ = sliceIds_;
                } else {
                    result.sliceIds_ = sliceIdsBuilder_.build();
                }
            }

            private void buildPartial0(context.ContextOuterClass.Context result) {
                int from_bitField0_ = bitField0_;
                if (((from_bitField0_ & 0x00000001) != 0)) {
                    result.contextId_ = contextIdBuilder_ == null ? contextId_ : contextIdBuilder_.build();
                }
                if (((from_bitField0_ & 0x00000002) != 0)) {
                    result.name_ = name_;
                }
                if (((from_bitField0_ & 0x00000020) != 0)) {
                    result.controller_ = controllerBuilder_ == null ? controller_ : controllerBuilder_.build();
                }
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.Context) {
                    return mergeFrom((context.ContextOuterClass.Context) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.Context other) {
                if (other == context.ContextOuterClass.Context.getDefaultInstance())
                    return this;
                if (other.hasContextId()) {
                    mergeContextId(other.getContextId());
                }
                if (!other.getName().isEmpty()) {
                    name_ = other.name_;
                    bitField0_ |= 0x00000002;
                    onChanged();
                }
                if (topologyIdsBuilder_ == null) {
                    if (!other.topologyIds_.isEmpty()) {
                        if (topologyIds_.isEmpty()) {
                            topologyIds_ = other.topologyIds_;
                            bitField0_ = (bitField0_ & ~0x00000004);
                        } else {
                            ensureTopologyIdsIsMutable();
                            topologyIds_.addAll(other.topologyIds_);
                        }
                        onChanged();
                    }
                } else {
                    if (!other.topologyIds_.isEmpty()) {
                        if (topologyIdsBuilder_.isEmpty()) {
                            topologyIdsBuilder_.dispose();
                            topologyIdsBuilder_ = null;
                            topologyIds_ = other.topologyIds_;
                            bitField0_ = (bitField0_ & ~0x00000004);
                            topologyIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getTopologyIdsFieldBuilder() : null;
                        } else {
                            topologyIdsBuilder_.addAllMessages(other.topologyIds_);
                        }
                    }
                }
                if (serviceIdsBuilder_ == null) {
                    if (!other.serviceIds_.isEmpty()) {
                        if (serviceIds_.isEmpty()) {
                            serviceIds_ = other.serviceIds_;
                            bitField0_ = (bitField0_ & ~0x00000008);
                        } else {
                            ensureServiceIdsIsMutable();
                            serviceIds_.addAll(other.serviceIds_);
                        }
                        onChanged();
                    }
                } else {
                    if (!other.serviceIds_.isEmpty()) {
                        if (serviceIdsBuilder_.isEmpty()) {
                            serviceIdsBuilder_.dispose();
                            serviceIdsBuilder_ = null;
                            serviceIds_ = other.serviceIds_;
                            bitField0_ = (bitField0_ & ~0x00000008);
                            serviceIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getServiceIdsFieldBuilder() : null;
                        } else {
                            serviceIdsBuilder_.addAllMessages(other.serviceIds_);
                        }
                    }
                }
                if (sliceIdsBuilder_ == null) {
                    if (!other.sliceIds_.isEmpty()) {
                        if (sliceIds_.isEmpty()) {
                            sliceIds_ = other.sliceIds_;
                            bitField0_ = (bitField0_ & ~0x00000010);
                        } else {
                            ensureSliceIdsIsMutable();
                            sliceIds_.addAll(other.sliceIds_);
                        }
                        onChanged();
                    }
                } else {
                    if (!other.sliceIds_.isEmpty()) {
                        if (sliceIdsBuilder_.isEmpty()) {
                            sliceIdsBuilder_.dispose();
                            sliceIdsBuilder_ = null;
                            sliceIds_ = other.sliceIds_;
                            bitField0_ = (bitField0_ & ~0x00000010);
                            sliceIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getSliceIdsFieldBuilder() : null;
                        } else {
                            sliceIdsBuilder_.addAllMessages(other.sliceIds_);
                        }
                    }
                }
                if (other.hasController()) {
                    mergeController(other.getController());
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 10:
                                {
                                    input.readMessage(getContextIdFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000001;
                                    break;
                                }
                            // case 10
                            case 18:
                                {
                                    name_ = input.readStringRequireUtf8();
                                    bitField0_ |= 0x00000002;
                                    break;
                                }
                            // case 18
                            case 26:
                                {
                                    context.ContextOuterClass.TopologyId m = input.readMessage(context.ContextOuterClass.TopologyId.parser(), extensionRegistry);
                                    if (topologyIdsBuilder_ == null) {
                                        ensureTopologyIdsIsMutable();
                                        topologyIds_.add(m);
                                    } else {
                                        topologyIdsBuilder_.addMessage(m);
                                    }
                                    break;
                                }
                            // case 26
                            case 34:
                                {
                                    context.ContextOuterClass.ServiceId m = input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry);
                                    if (serviceIdsBuilder_ == null) {
                                        ensureServiceIdsIsMutable();
                                        serviceIds_.add(m);
                                    } else {
                                        serviceIdsBuilder_.addMessage(m);
                                    }
                                    break;
                                }
                            // case 34
                            case 42:
                                {
                                    context.ContextOuterClass.SliceId m = input.readMessage(context.ContextOuterClass.SliceId.parser(), extensionRegistry);
                                    if (sliceIdsBuilder_ == null) {
                                        ensureSliceIdsIsMutable();
                                        sliceIds_.add(m);
                                    } else {
                                        sliceIdsBuilder_.addMessage(m);
                                    }
                                    break;
                                }
                            // case 42
                            case 50:
                                {
                                    input.readMessage(getControllerFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000020;
                                    break;
                                }
                            // case 50
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private context.ContextOuterClass.ContextId contextId_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> contextIdBuilder_;

            /**
             * <code>.context.ContextId context_id = 1;</code>
             * @return Whether the contextId field is set.
             */
            public boolean hasContextId() {
                return ((bitField0_ & 0x00000001) != 0);
            }

            /**
             * <code>.context.ContextId context_id = 1;</code>
             * @return The contextId.
             */
            public context.ContextOuterClass.ContextId getContextId() {
                if (contextIdBuilder_ == null) {
                    return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
                } else {
                    return contextIdBuilder_.getMessage();
                }
            }

            /**
             * <code>.context.ContextId context_id = 1;</code>
             */
            public Builder setContextId(context.ContextOuterClass.ContextId value) {
                if (contextIdBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    contextId_ = value;
                } else {
                    contextIdBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.ContextId context_id = 1;</code>
             */
            public Builder setContextId(context.ContextOuterClass.ContextId.Builder builderForValue) {
                if (contextIdBuilder_ == null) {
                    contextId_ = builderForValue.build();
                } else {
                    contextIdBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.ContextId context_id = 1;</code>
             */
            public Builder mergeContextId(context.ContextOuterClass.ContextId value) {
                if (contextIdBuilder_ == null) {
                    if (((bitField0_ & 0x00000001) != 0) && contextId_ != null && contextId_ != context.ContextOuterClass.ContextId.getDefaultInstance()) {
                        getContextIdBuilder().mergeFrom(value);
                    } else {
                        contextId_ = value;
                    }
                } else {
                    contextIdBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.ContextId context_id = 1;</code>
             */
            public Builder clearContextId() {
                bitField0_ = (bitField0_ & ~0x00000001);
                contextId_ = null;
                if (contextIdBuilder_ != null) {
                    contextIdBuilder_.dispose();
                    contextIdBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.ContextId context_id = 1;</code>
             */
            public context.ContextOuterClass.ContextId.Builder getContextIdBuilder() {
                bitField0_ |= 0x00000001;
                onChanged();
                return getContextIdFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.ContextId context_id = 1;</code>
             */
            public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
                if (contextIdBuilder_ != null) {
                    return contextIdBuilder_.getMessageOrBuilder();
                } else {
                    return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
                }
            }

            /**
             * <code>.context.ContextId context_id = 1;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> getContextIdFieldBuilder() {
                if (contextIdBuilder_ == null) {
                    contextIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder>(getContextId(), getParentForChildren(), isClean());
                    contextId_ = null;
                }
                return contextIdBuilder_;
            }

            private java.lang.Object name_ = "";

            /**
             * <code>string name = 2;</code>
             * @return The name.
             */
            public java.lang.String getName() {
                java.lang.Object ref = name_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    name_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }

            /**
             * <code>string name = 2;</code>
             * @return The bytes for name.
             */
            public com.google.protobuf.ByteString getNameBytes() {
                java.lang.Object ref = name_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                    name_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }

            /**
             * <code>string name = 2;</code>
             * @param value The name to set.
             * @return This builder for chaining.
             */
            public Builder setName(java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                name_ = value;
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>string name = 2;</code>
             * @return This builder for chaining.
             */
            public Builder clearName() {
                name_ = getDefaultInstance().getName();
                bitField0_ = (bitField0_ & ~0x00000002);
                onChanged();
                return this;
            }

            /**
             * <code>string name = 2;</code>
             * @param value The bytes for name to set.
             * @return This builder for chaining.
             */
            public Builder setNameBytes(com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);
                name_ = value;
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            private java.util.List<context.ContextOuterClass.TopologyId> topologyIds_ = java.util.Collections.emptyList();

            private void ensureTopologyIdsIsMutable() {
                if (!((bitField0_ & 0x00000004) != 0)) {
                    topologyIds_ = new java.util.ArrayList<context.ContextOuterClass.TopologyId>(topologyIds_);
                    bitField0_ |= 0x00000004;
                }
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder> topologyIdsBuilder_;

            /**
             * <code>repeated .context.TopologyId topology_ids = 3;</code>
             */
            public java.util.List<context.ContextOuterClass.TopologyId> getTopologyIdsList() {
                if (topologyIdsBuilder_ == null) {
                    return java.util.Collections.unmodifiableList(topologyIds_);
                } else {
                    return topologyIdsBuilder_.getMessageList();
                }
            }

            /**
             * <code>repeated .context.TopologyId topology_ids = 3;</code>
             */
            public int getTopologyIdsCount() {
                if (topologyIdsBuilder_ == null) {
                    return topologyIds_.size();
                } else {
                    return topologyIdsBuilder_.getCount();
                }
            }

            /**
             * <code>repeated .context.TopologyId topology_ids = 3;</code>
             */
            public context.ContextOuterClass.TopologyId getTopologyIds(int index) {
                if (topologyIdsBuilder_ == null) {
                    return topologyIds_.get(index);
                } else {
                    return topologyIdsBuilder_.getMessage(index);
                }
            }

            /**
             * <code>repeated .context.TopologyId topology_ids = 3;</code>
             */
            public Builder setTopologyIds(int index, context.ContextOuterClass.TopologyId value) {
                if (topologyIdsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureTopologyIdsIsMutable();
                    topologyIds_.set(index, value);
                    onChanged();
                } else {
                    topologyIdsBuilder_.setMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.TopologyId topology_ids = 3;</code>
             */
            public Builder setTopologyIds(int index, context.ContextOuterClass.TopologyId.Builder builderForValue) {
                if (topologyIdsBuilder_ == null) {
                    ensureTopologyIdsIsMutable();
                    topologyIds_.set(index, builderForValue.build());
                    onChanged();
                } else {
                    topologyIdsBuilder_.setMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.TopologyId topology_ids = 3;</code>
             */
            public Builder addTopologyIds(context.ContextOuterClass.TopologyId value) {
                if (topologyIdsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureTopologyIdsIsMutable();
                    topologyIds_.add(value);
                    onChanged();
                } else {
                    topologyIdsBuilder_.addMessage(value);
                }
                return this;
            }

            /**
             * <code>repeated .context.TopologyId topology_ids = 3;</code>
             */
            public Builder addTopologyIds(int index, context.ContextOuterClass.TopologyId value) {
                if (topologyIdsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureTopologyIdsIsMutable();
                    topologyIds_.add(index, value);
                    onChanged();
                } else {
                    topologyIdsBuilder_.addMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.TopologyId topology_ids = 3;</code>
             */
            public Builder addTopologyIds(context.ContextOuterClass.TopologyId.Builder builderForValue) {
                if (topologyIdsBuilder_ == null) {
                    ensureTopologyIdsIsMutable();
                    topologyIds_.add(builderForValue.build());
                    onChanged();
                } else {
                    topologyIdsBuilder_.addMessage(builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.TopologyId topology_ids = 3;</code>
             */
            public Builder addTopologyIds(int index, context.ContextOuterClass.TopologyId.Builder builderForValue) {
                if (topologyIdsBuilder_ == null) {
                    ensureTopologyIdsIsMutable();
                    topologyIds_.add(index, builderForValue.build());
                    onChanged();
                } else {
                    topologyIdsBuilder_.addMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.TopologyId topology_ids = 3;</code>
             */
            public Builder addAllTopologyIds(java.lang.Iterable<? extends context.ContextOuterClass.TopologyId> values) {
                if (topologyIdsBuilder_ == null) {
                    ensureTopologyIdsIsMutable();
                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, topologyIds_);
                    onChanged();
                } else {
                    topologyIdsBuilder_.addAllMessages(values);
                }
                return this;
            }

            /**
             * <code>repeated .context.TopologyId topology_ids = 3;</code>
             */
            public Builder clearTopologyIds() {
                if (topologyIdsBuilder_ == null) {
                    topologyIds_ = java.util.Collections.emptyList();
                    bitField0_ = (bitField0_ & ~0x00000004);
                    onChanged();
                } else {
                    topologyIdsBuilder_.clear();
                }
                return this;
            }

            /**
             * <code>repeated .context.TopologyId topology_ids = 3;</code>
             */
            public Builder removeTopologyIds(int index) {
                if (topologyIdsBuilder_ == null) {
                    ensureTopologyIdsIsMutable();
                    topologyIds_.remove(index);
                    onChanged();
                } else {
                    topologyIdsBuilder_.remove(index);
                }
                return this;
            }

            /**
             * <code>repeated .context.TopologyId topology_ids = 3;</code>
             */
            public context.ContextOuterClass.TopologyId.Builder getTopologyIdsBuilder(int index) {
                return getTopologyIdsFieldBuilder().getBuilder(index);
            }

            /**
             * <code>repeated .context.TopologyId topology_ids = 3;</code>
             */
            public context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdsOrBuilder(int index) {
                if (topologyIdsBuilder_ == null) {
                    return topologyIds_.get(index);
                } else {
                    return topologyIdsBuilder_.getMessageOrBuilder(index);
                }
            }

            /**
             * <code>repeated .context.TopologyId topology_ids = 3;</code>
             */
            public java.util.List<? extends context.ContextOuterClass.TopologyIdOrBuilder> getTopologyIdsOrBuilderList() {
                if (topologyIdsBuilder_ != null) {
                    return topologyIdsBuilder_.getMessageOrBuilderList();
                } else {
                    return java.util.Collections.unmodifiableList(topologyIds_);
                }
            }

            /**
             * <code>repeated .context.TopologyId topology_ids = 3;</code>
             */
            public context.ContextOuterClass.TopologyId.Builder addTopologyIdsBuilder() {
                return getTopologyIdsFieldBuilder().addBuilder(context.ContextOuterClass.TopologyId.getDefaultInstance());
            }

            /**
             * <code>repeated .context.TopologyId topology_ids = 3;</code>
             */
            public context.ContextOuterClass.TopologyId.Builder addTopologyIdsBuilder(int index) {
                return getTopologyIdsFieldBuilder().addBuilder(index, context.ContextOuterClass.TopologyId.getDefaultInstance());
            }

            /**
             * <code>repeated .context.TopologyId topology_ids = 3;</code>
             */
            public java.util.List<context.ContextOuterClass.TopologyId.Builder> getTopologyIdsBuilderList() {
                return getTopologyIdsFieldBuilder().getBuilderList();
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder> getTopologyIdsFieldBuilder() {
                if (topologyIdsBuilder_ == null) {
                    topologyIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder>(topologyIds_, ((bitField0_ & 0x00000004) != 0), getParentForChildren(), isClean());
                    topologyIds_ = null;
                }
                return topologyIdsBuilder_;
            }

            private java.util.List<context.ContextOuterClass.ServiceId> serviceIds_ = java.util.Collections.emptyList();

            private void ensureServiceIdsIsMutable() {
                if (!((bitField0_ & 0x00000008) != 0)) {
                    serviceIds_ = new java.util.ArrayList<context.ContextOuterClass.ServiceId>(serviceIds_);
                    bitField0_ |= 0x00000008;
                }
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> serviceIdsBuilder_;

            /**
             * <code>repeated .context.ServiceId service_ids = 4;</code>
             */
            public java.util.List<context.ContextOuterClass.ServiceId> getServiceIdsList() {
                if (serviceIdsBuilder_ == null) {
                    return java.util.Collections.unmodifiableList(serviceIds_);
                } else {
                    return serviceIdsBuilder_.getMessageList();
                }
            }

            /**
             * <code>repeated .context.ServiceId service_ids = 4;</code>
             */
            public int getServiceIdsCount() {
                if (serviceIdsBuilder_ == null) {
                    return serviceIds_.size();
                } else {
                    return serviceIdsBuilder_.getCount();
                }
            }

            /**
             * <code>repeated .context.ServiceId service_ids = 4;</code>
             */
            public context.ContextOuterClass.ServiceId getServiceIds(int index) {
                if (serviceIdsBuilder_ == null) {
                    return serviceIds_.get(index);
                } else {
                    return serviceIdsBuilder_.getMessage(index);
                }
            }

            /**
             * <code>repeated .context.ServiceId service_ids = 4;</code>
             */
            public Builder setServiceIds(int index, context.ContextOuterClass.ServiceId value) {
                if (serviceIdsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureServiceIdsIsMutable();
                    serviceIds_.set(index, value);
                    onChanged();
                } else {
                    serviceIdsBuilder_.setMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.ServiceId service_ids = 4;</code>
             */
            public Builder setServiceIds(int index, context.ContextOuterClass.ServiceId.Builder builderForValue) {
                if (serviceIdsBuilder_ == null) {
                    ensureServiceIdsIsMutable();
                    serviceIds_.set(index, builderForValue.build());
                    onChanged();
                } else {
                    serviceIdsBuilder_.setMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.ServiceId service_ids = 4;</code>
             */
            public Builder addServiceIds(context.ContextOuterClass.ServiceId value) {
                if (serviceIdsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureServiceIdsIsMutable();
                    serviceIds_.add(value);
                    onChanged();
                } else {
                    serviceIdsBuilder_.addMessage(value);
                }
                return this;
            }

            /**
             * <code>repeated .context.ServiceId service_ids = 4;</code>
             */
            public Builder addServiceIds(int index, context.ContextOuterClass.ServiceId value) {
                if (serviceIdsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureServiceIdsIsMutable();
                    serviceIds_.add(index, value);
                    onChanged();
                } else {
                    serviceIdsBuilder_.addMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.ServiceId service_ids = 4;</code>
             */
            public Builder addServiceIds(context.ContextOuterClass.ServiceId.Builder builderForValue) {
                if (serviceIdsBuilder_ == null) {
                    ensureServiceIdsIsMutable();
                    serviceIds_.add(builderForValue.build());
                    onChanged();
                } else {
                    serviceIdsBuilder_.addMessage(builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.ServiceId service_ids = 4;</code>
             */
            public Builder addServiceIds(int index, context.ContextOuterClass.ServiceId.Builder builderForValue) {
                if (serviceIdsBuilder_ == null) {
                    ensureServiceIdsIsMutable();
                    serviceIds_.add(index, builderForValue.build());
                    onChanged();
                } else {
                    serviceIdsBuilder_.addMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.ServiceId service_ids = 4;</code>
             */
            public Builder addAllServiceIds(java.lang.Iterable<? extends context.ContextOuterClass.ServiceId> values) {
                if (serviceIdsBuilder_ == null) {
                    ensureServiceIdsIsMutable();
                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, serviceIds_);
                    onChanged();
                } else {
                    serviceIdsBuilder_.addAllMessages(values);
                }
                return this;
            }

            /**
             * <code>repeated .context.ServiceId service_ids = 4;</code>
             */
            public Builder clearServiceIds() {
                if (serviceIdsBuilder_ == null) {
                    serviceIds_ = java.util.Collections.emptyList();
                    bitField0_ = (bitField0_ & ~0x00000008);
                    onChanged();
                } else {
                    serviceIdsBuilder_.clear();
                }
                return this;
            }

            /**
             * <code>repeated .context.ServiceId service_ids = 4;</code>
             */
            public Builder removeServiceIds(int index) {
                if (serviceIdsBuilder_ == null) {
                    ensureServiceIdsIsMutable();
                    serviceIds_.remove(index);
                    onChanged();
                } else {
                    serviceIdsBuilder_.remove(index);
                }
                return this;
            }

            /**
             * <code>repeated .context.ServiceId service_ids = 4;</code>
             */
            public context.ContextOuterClass.ServiceId.Builder getServiceIdsBuilder(int index) {
                return getServiceIdsFieldBuilder().getBuilder(index);
            }

            /**
             * <code>repeated .context.ServiceId service_ids = 4;</code>
             */
            public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdsOrBuilder(int index) {
                if (serviceIdsBuilder_ == null) {
                    return serviceIds_.get(index);
                } else {
                    return serviceIdsBuilder_.getMessageOrBuilder(index);
                }
            }

            /**
             * <code>repeated .context.ServiceId service_ids = 4;</code>
             */
            public java.util.List<? extends context.ContextOuterClass.ServiceIdOrBuilder> getServiceIdsOrBuilderList() {
                if (serviceIdsBuilder_ != null) {
                    return serviceIdsBuilder_.getMessageOrBuilderList();
                } else {
                    return java.util.Collections.unmodifiableList(serviceIds_);
                }
            }

            /**
             * <code>repeated .context.ServiceId service_ids = 4;</code>
             */
            public context.ContextOuterClass.ServiceId.Builder addServiceIdsBuilder() {
                return getServiceIdsFieldBuilder().addBuilder(context.ContextOuterClass.ServiceId.getDefaultInstance());
            }

            /**
             * <code>repeated .context.ServiceId service_ids = 4;</code>
             */
            public context.ContextOuterClass.ServiceId.Builder addServiceIdsBuilder(int index) {
                return getServiceIdsFieldBuilder().addBuilder(index, context.ContextOuterClass.ServiceId.getDefaultInstance());
            }

            /**
             * <code>repeated .context.ServiceId service_ids = 4;</code>
             */
            public java.util.List<context.ContextOuterClass.ServiceId.Builder> getServiceIdsBuilderList() {
                return getServiceIdsFieldBuilder().getBuilderList();
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> getServiceIdsFieldBuilder() {
                if (serviceIdsBuilder_ == null) {
                    serviceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder>(serviceIds_, ((bitField0_ & 0x00000008) != 0), getParentForChildren(), isClean());
                    serviceIds_ = null;
                }
                return serviceIdsBuilder_;
            }

            private java.util.List<context.ContextOuterClass.SliceId> sliceIds_ = java.util.Collections.emptyList();

            private void ensureSliceIdsIsMutable() {
                if (!((bitField0_ & 0x00000010) != 0)) {
                    sliceIds_ = new java.util.ArrayList<context.ContextOuterClass.SliceId>(sliceIds_);
                    bitField0_ |= 0x00000010;
                }
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder> sliceIdsBuilder_;

            /**
             * <code>repeated .context.SliceId slice_ids = 5;</code>
             */
            public java.util.List<context.ContextOuterClass.SliceId> getSliceIdsList() {
                if (sliceIdsBuilder_ == null) {
                    return java.util.Collections.unmodifiableList(sliceIds_);
                } else {
                    return sliceIdsBuilder_.getMessageList();
                }
            }

            /**
             * <code>repeated .context.SliceId slice_ids = 5;</code>
             */
            public int getSliceIdsCount() {
                if (sliceIdsBuilder_ == null) {
                    return sliceIds_.size();
                } else {
                    return sliceIdsBuilder_.getCount();
                }
            }

            /**
             * <code>repeated .context.SliceId slice_ids = 5;</code>
             */
            public context.ContextOuterClass.SliceId getSliceIds(int index) {
                if (sliceIdsBuilder_ == null) {
                    return sliceIds_.get(index);
                } else {
                    return sliceIdsBuilder_.getMessage(index);
                }
            }

            /**
             * <code>repeated .context.SliceId slice_ids = 5;</code>
             */
            public Builder setSliceIds(int index, context.ContextOuterClass.SliceId value) {
                if (sliceIdsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureSliceIdsIsMutable();
                    sliceIds_.set(index, value);
                    onChanged();
                } else {
                    sliceIdsBuilder_.setMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.SliceId slice_ids = 5;</code>
             */
            public Builder setSliceIds(int index, context.ContextOuterClass.SliceId.Builder builderForValue) {
                if (sliceIdsBuilder_ == null) {
                    ensureSliceIdsIsMutable();
                    sliceIds_.set(index, builderForValue.build());
                    onChanged();
                } else {
                    sliceIdsBuilder_.setMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.SliceId slice_ids = 5;</code>
             */
            public Builder addSliceIds(context.ContextOuterClass.SliceId value) {
                if (sliceIdsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureSliceIdsIsMutable();
                    sliceIds_.add(value);
                    onChanged();
                } else {
                    sliceIdsBuilder_.addMessage(value);
                }
                return this;
            }

            /**
             * <code>repeated .context.SliceId slice_ids = 5;</code>
             */
            public Builder addSliceIds(int index, context.ContextOuterClass.SliceId value) {
                if (sliceIdsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureSliceIdsIsMutable();
                    sliceIds_.add(index, value);
                    onChanged();
                } else {
                    sliceIdsBuilder_.addMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.SliceId slice_ids = 5;</code>
             */
            public Builder addSliceIds(context.ContextOuterClass.SliceId.Builder builderForValue) {
                if (sliceIdsBuilder_ == null) {
                    ensureSliceIdsIsMutable();
                    sliceIds_.add(builderForValue.build());
                    onChanged();
                } else {
                    sliceIdsBuilder_.addMessage(builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.SliceId slice_ids = 5;</code>
             */
            public Builder addSliceIds(int index, context.ContextOuterClass.SliceId.Builder builderForValue) {
                if (sliceIdsBuilder_ == null) {
                    ensureSliceIdsIsMutable();
                    sliceIds_.add(index, builderForValue.build());
                    onChanged();
                } else {
                    sliceIdsBuilder_.addMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.SliceId slice_ids = 5;</code>
             */
            public Builder addAllSliceIds(java.lang.Iterable<? extends context.ContextOuterClass.SliceId> values) {
                if (sliceIdsBuilder_ == null) {
                    ensureSliceIdsIsMutable();
                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, sliceIds_);
                    onChanged();
                } else {
                    sliceIdsBuilder_.addAllMessages(values);
                }
                return this;
            }

            /**
             * <code>repeated .context.SliceId slice_ids = 5;</code>
             */
            public Builder clearSliceIds() {
                if (sliceIdsBuilder_ == null) {
                    sliceIds_ = java.util.Collections.emptyList();
                    bitField0_ = (bitField0_ & ~0x00000010);
                    onChanged();
                } else {
                    sliceIdsBuilder_.clear();
                }
                return this;
            }

            /**
             * <code>repeated .context.SliceId slice_ids = 5;</code>
             */
            public Builder removeSliceIds(int index) {
                if (sliceIdsBuilder_ == null) {
                    ensureSliceIdsIsMutable();
                    sliceIds_.remove(index);
                    onChanged();
                } else {
                    sliceIdsBuilder_.remove(index);
                }
                return this;
            }

            /**
             * <code>repeated .context.SliceId slice_ids = 5;</code>
             */
            public context.ContextOuterClass.SliceId.Builder getSliceIdsBuilder(int index) {
                return getSliceIdsFieldBuilder().getBuilder(index);
            }

            /**
             * <code>repeated .context.SliceId slice_ids = 5;</code>
             */
            public context.ContextOuterClass.SliceIdOrBuilder getSliceIdsOrBuilder(int index) {
                if (sliceIdsBuilder_ == null) {
                    return sliceIds_.get(index);
                } else {
                    return sliceIdsBuilder_.getMessageOrBuilder(index);
                }
            }

            /**
             * <code>repeated .context.SliceId slice_ids = 5;</code>
             */
            public java.util.List<? extends context.ContextOuterClass.SliceIdOrBuilder> getSliceIdsOrBuilderList() {
                if (sliceIdsBuilder_ != null) {
                    return sliceIdsBuilder_.getMessageOrBuilderList();
                } else {
                    return java.util.Collections.unmodifiableList(sliceIds_);
                }
            }

            /**
             * <code>repeated .context.SliceId slice_ids = 5;</code>
             */
            public context.ContextOuterClass.SliceId.Builder addSliceIdsBuilder() {
                return getSliceIdsFieldBuilder().addBuilder(context.ContextOuterClass.SliceId.getDefaultInstance());
            }

            /**
             * <code>repeated .context.SliceId slice_ids = 5;</code>
             */
            public context.ContextOuterClass.SliceId.Builder addSliceIdsBuilder(int index) {
                return getSliceIdsFieldBuilder().addBuilder(index, context.ContextOuterClass.SliceId.getDefaultInstance());
            }

            /**
             * <code>repeated .context.SliceId slice_ids = 5;</code>
             */
            public java.util.List<context.ContextOuterClass.SliceId.Builder> getSliceIdsBuilderList() {
                return getSliceIdsFieldBuilder().getBuilderList();
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder> getSliceIdsFieldBuilder() {
                if (sliceIdsBuilder_ == null) {
                    sliceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder>(sliceIds_, ((bitField0_ & 0x00000010) != 0), getParentForChildren(), isClean());
                    sliceIds_ = null;
                }
                return sliceIdsBuilder_;
            }

            private context.ContextOuterClass.TeraFlowController controller_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.TeraFlowController, context.ContextOuterClass.TeraFlowController.Builder, context.ContextOuterClass.TeraFlowControllerOrBuilder> controllerBuilder_;

            /**
             * <code>.context.TeraFlowController controller = 6;</code>
             * @return Whether the controller field is set.
             */
            public boolean hasController() {
                return ((bitField0_ & 0x00000020) != 0);
            }

            /**
             * <code>.context.TeraFlowController controller = 6;</code>
             * @return The controller.
             */
            public context.ContextOuterClass.TeraFlowController getController() {
                if (controllerBuilder_ == null) {
                    return controller_ == null ? context.ContextOuterClass.TeraFlowController.getDefaultInstance() : controller_;
                } else {
                    return controllerBuilder_.getMessage();
                }
            }

            /**
             * <code>.context.TeraFlowController controller = 6;</code>
             */
            public Builder setController(context.ContextOuterClass.TeraFlowController value) {
                if (controllerBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    controller_ = value;
                } else {
                    controllerBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000020;
                onChanged();
                return this;
            }

            /**
             * <code>.context.TeraFlowController controller = 6;</code>
             */
            public Builder setController(context.ContextOuterClass.TeraFlowController.Builder builderForValue) {
                if (controllerBuilder_ == null) {
                    controller_ = builderForValue.build();
                } else {
                    controllerBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000020;
                onChanged();
                return this;
            }

            /**
             * <code>.context.TeraFlowController controller = 6;</code>
             */
            public Builder mergeController(context.ContextOuterClass.TeraFlowController value) {
                if (controllerBuilder_ == null) {
                    if (((bitField0_ & 0x00000020) != 0) && controller_ != null && controller_ != context.ContextOuterClass.TeraFlowController.getDefaultInstance()) {
                        getControllerBuilder().mergeFrom(value);
                    } else {
                        controller_ = value;
                    }
                } else {
                    controllerBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000020;
                onChanged();
                return this;
            }

            /**
             * <code>.context.TeraFlowController controller = 6;</code>
             */
            public Builder clearController() {
                bitField0_ = (bitField0_ & ~0x00000020);
                controller_ = null;
                if (controllerBuilder_ != null) {
                    controllerBuilder_.dispose();
                    controllerBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.TeraFlowController controller = 6;</code>
             */
            public context.ContextOuterClass.TeraFlowController.Builder getControllerBuilder() {
                bitField0_ |= 0x00000020;
                onChanged();
                return getControllerFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.TeraFlowController controller = 6;</code>
             */
            public context.ContextOuterClass.TeraFlowControllerOrBuilder getControllerOrBuilder() {
                if (controllerBuilder_ != null) {
                    return controllerBuilder_.getMessageOrBuilder();
                } else {
                    return controller_ == null ? context.ContextOuterClass.TeraFlowController.getDefaultInstance() : controller_;
                }
            }

            /**
             * <code>.context.TeraFlowController controller = 6;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.TeraFlowController, context.ContextOuterClass.TeraFlowController.Builder, context.ContextOuterClass.TeraFlowControllerOrBuilder> getControllerFieldBuilder() {
                if (controllerBuilder_ == null) {
                    controllerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.TeraFlowController, context.ContextOuterClass.TeraFlowController.Builder, context.ContextOuterClass.TeraFlowControllerOrBuilder>(getController(), getParentForChildren(), isClean());
                    controller_ = null;
                }
                return controllerBuilder_;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.Context)
        }

        // @@protoc_insertion_point(class_scope:context.Context)
        private static final context.ContextOuterClass.Context DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.Context();
        }

        public static context.ContextOuterClass.Context getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<Context> PARSER = new com.google.protobuf.AbstractParser<Context>() {

            @java.lang.Override
            public Context parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<Context> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<Context> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.Context getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface ContextIdListOrBuilder extends // @@protoc_insertion_point(interface_extends:context.ContextIdList)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>repeated .context.ContextId context_ids = 1;</code>
         */
        java.util.List<context.ContextOuterClass.ContextId> getContextIdsList();

        /**
         * <code>repeated .context.ContextId context_ids = 1;</code>
         */
        context.ContextOuterClass.ContextId getContextIds(int index);

        /**
         * <code>repeated .context.ContextId context_ids = 1;</code>
         */
        int getContextIdsCount();

        /**
         * <code>repeated .context.ContextId context_ids = 1;</code>
         */
        java.util.List<? extends context.ContextOuterClass.ContextIdOrBuilder> getContextIdsOrBuilderList();

        /**
         * <code>repeated .context.ContextId context_ids = 1;</code>
         */
        context.ContextOuterClass.ContextIdOrBuilder getContextIdsOrBuilder(int index);
    }

    /**
     * Protobuf type {@code context.ContextIdList}
     */
    public static final class ContextIdList extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.ContextIdList)
    ContextIdListOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use ContextIdList.newBuilder() to construct.
        private ContextIdList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private ContextIdList() {
            contextIds_ = java.util.Collections.emptyList();
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new ContextIdList();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_ContextIdList_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_ContextIdList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ContextIdList.class, context.ContextOuterClass.ContextIdList.Builder.class);
        }

        public static final int CONTEXT_IDS_FIELD_NUMBER = 1;

        @SuppressWarnings("serial")
        private java.util.List<context.ContextOuterClass.ContextId> contextIds_;

        /**
         * <code>repeated .context.ContextId context_ids = 1;</code>
         */
        @java.lang.Override
        public java.util.List<context.ContextOuterClass.ContextId> getContextIdsList() {
            return contextIds_;
        }

        /**
         * <code>repeated .context.ContextId context_ids = 1;</code>
         */
        @java.lang.Override
        public java.util.List<? extends context.ContextOuterClass.ContextIdOrBuilder> getContextIdsOrBuilderList() {
            return contextIds_;
        }

        /**
         * <code>repeated .context.ContextId context_ids = 1;</code>
         */
        @java.lang.Override
        public int getContextIdsCount() {
            return contextIds_.size();
        }

        /**
         * <code>repeated .context.ContextId context_ids = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.ContextId getContextIds(int index) {
            return contextIds_.get(index);
        }

        /**
         * <code>repeated .context.ContextId context_ids = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.ContextIdOrBuilder getContextIdsOrBuilder(int index) {
            return contextIds_.get(index);
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            for (int i = 0; i < contextIds_.size(); i++) {
                output.writeMessage(1, contextIds_.get(i));
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            for (int i = 0; i < contextIds_.size(); i++) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, contextIds_.get(i));
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.ContextIdList)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.ContextIdList other = (context.ContextOuterClass.ContextIdList) obj;
            if (!getContextIdsList().equals(other.getContextIdsList()))
                return false;
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            if (getContextIdsCount() > 0) {
                hash = (37 * hash) + CONTEXT_IDS_FIELD_NUMBER;
                hash = (53 * hash) + getContextIdsList().hashCode();
            }
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.ContextIdList parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.ContextIdList parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.ContextIdList parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.ContextIdList parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.ContextIdList parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.ContextIdList parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.ContextIdList parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.ContextIdList parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.ContextIdList parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.ContextIdList parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.ContextIdList parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.ContextIdList parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.ContextIdList prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code context.ContextIdList}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.ContextIdList)
        context.ContextOuterClass.ContextIdListOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_ContextIdList_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_ContextIdList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ContextIdList.class, context.ContextOuterClass.ContextIdList.Builder.class);
            }

            // Construct using context.ContextOuterClass.ContextIdList.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                if (contextIdsBuilder_ == null) {
                    contextIds_ = java.util.Collections.emptyList();
                } else {
                    contextIds_ = null;
                    contextIdsBuilder_.clear();
                }
                bitField0_ = (bitField0_ & ~0x00000001);
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_ContextIdList_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.ContextIdList getDefaultInstanceForType() {
                return context.ContextOuterClass.ContextIdList.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.ContextIdList build() {
                context.ContextOuterClass.ContextIdList result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.ContextIdList buildPartial() {
                context.ContextOuterClass.ContextIdList result = new context.ContextOuterClass.ContextIdList(this);
                buildPartialRepeatedFields(result);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartialRepeatedFields(context.ContextOuterClass.ContextIdList result) {
                if (contextIdsBuilder_ == null) {
                    if (((bitField0_ & 0x00000001) != 0)) {
                        contextIds_ = java.util.Collections.unmodifiableList(contextIds_);
                        bitField0_ = (bitField0_ & ~0x00000001);
                    }
                    result.contextIds_ = contextIds_;
                } else {
                    result.contextIds_ = contextIdsBuilder_.build();
                }
            }

            private void buildPartial0(context.ContextOuterClass.ContextIdList result) {
                int from_bitField0_ = bitField0_;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.ContextIdList) {
                    return mergeFrom((context.ContextOuterClass.ContextIdList) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.ContextIdList other) {
                if (other == context.ContextOuterClass.ContextIdList.getDefaultInstance())
                    return this;
                if (contextIdsBuilder_ == null) {
                    if (!other.contextIds_.isEmpty()) {
                        if (contextIds_.isEmpty()) {
                            contextIds_ = other.contextIds_;
                            bitField0_ = (bitField0_ & ~0x00000001);
                        } else {
                            ensureContextIdsIsMutable();
                            contextIds_.addAll(other.contextIds_);
                        }
                        onChanged();
                    }
                } else {
                    if (!other.contextIds_.isEmpty()) {
                        if (contextIdsBuilder_.isEmpty()) {
                            contextIdsBuilder_.dispose();
                            contextIdsBuilder_ = null;
                            contextIds_ = other.contextIds_;
                            bitField0_ = (bitField0_ & ~0x00000001);
                            contextIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getContextIdsFieldBuilder() : null;
                        } else {
                            contextIdsBuilder_.addAllMessages(other.contextIds_);
                        }
                    }
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 10:
                                {
                                    context.ContextOuterClass.ContextId m = input.readMessage(context.ContextOuterClass.ContextId.parser(), extensionRegistry);
                                    if (contextIdsBuilder_ == null) {
                                        ensureContextIdsIsMutable();
                                        contextIds_.add(m);
                                    } else {
                                        contextIdsBuilder_.addMessage(m);
                                    }
                                    break;
                                }
                            // case 10
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private java.util.List<context.ContextOuterClass.ContextId> contextIds_ = java.util.Collections.emptyList();

            private void ensureContextIdsIsMutable() {
                if (!((bitField0_ & 0x00000001) != 0)) {
                    contextIds_ = new java.util.ArrayList<context.ContextOuterClass.ContextId>(contextIds_);
                    bitField0_ |= 0x00000001;
                }
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> contextIdsBuilder_;

            /**
             * <code>repeated .context.ContextId context_ids = 1;</code>
             */
            public java.util.List<context.ContextOuterClass.ContextId> getContextIdsList() {
                if (contextIdsBuilder_ == null) {
                    return java.util.Collections.unmodifiableList(contextIds_);
                } else {
                    return contextIdsBuilder_.getMessageList();
                }
            }

            /**
             * <code>repeated .context.ContextId context_ids = 1;</code>
             */
            public int getContextIdsCount() {
                if (contextIdsBuilder_ == null) {
                    return contextIds_.size();
                } else {
                    return contextIdsBuilder_.getCount();
                }
            }

            /**
             * <code>repeated .context.ContextId context_ids = 1;</code>
             */
            public context.ContextOuterClass.ContextId getContextIds(int index) {
                if (contextIdsBuilder_ == null) {
                    return contextIds_.get(index);
                } else {
                    return contextIdsBuilder_.getMessage(index);
                }
            }

            /**
             * <code>repeated .context.ContextId context_ids = 1;</code>
             */
            public Builder setContextIds(int index, context.ContextOuterClass.ContextId value) {
                if (contextIdsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureContextIdsIsMutable();
                    contextIds_.set(index, value);
                    onChanged();
                } else {
                    contextIdsBuilder_.setMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.ContextId context_ids = 1;</code>
             */
            public Builder setContextIds(int index, context.ContextOuterClass.ContextId.Builder builderForValue) {
                if (contextIdsBuilder_ == null) {
                    ensureContextIdsIsMutable();
                    contextIds_.set(index, builderForValue.build());
                    onChanged();
                } else {
                    contextIdsBuilder_.setMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.ContextId context_ids = 1;</code>
             */
            public Builder addContextIds(context.ContextOuterClass.ContextId value) {
                if (contextIdsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureContextIdsIsMutable();
                    contextIds_.add(value);
                    onChanged();
                } else {
                    contextIdsBuilder_.addMessage(value);
                }
                return this;
            }

            /**
             * <code>repeated .context.ContextId context_ids = 1;</code>
             */
            public Builder addContextIds(int index, context.ContextOuterClass.ContextId value) {
                if (contextIdsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureContextIdsIsMutable();
                    contextIds_.add(index, value);
                    onChanged();
                } else {
                    contextIdsBuilder_.addMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.ContextId context_ids = 1;</code>
             */
            public Builder addContextIds(context.ContextOuterClass.ContextId.Builder builderForValue) {
                if (contextIdsBuilder_ == null) {
                    ensureContextIdsIsMutable();
                    contextIds_.add(builderForValue.build());
                    onChanged();
                } else {
                    contextIdsBuilder_.addMessage(builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.ContextId context_ids = 1;</code>
             */
            public Builder addContextIds(int index, context.ContextOuterClass.ContextId.Builder builderForValue) {
                if (contextIdsBuilder_ == null) {
                    ensureContextIdsIsMutable();
                    contextIds_.add(index, builderForValue.build());
                    onChanged();
                } else {
                    contextIdsBuilder_.addMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.ContextId context_ids = 1;</code>
             */
            public Builder addAllContextIds(java.lang.Iterable<? extends context.ContextOuterClass.ContextId> values) {
                if (contextIdsBuilder_ == null) {
                    ensureContextIdsIsMutable();
                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, contextIds_);
                    onChanged();
                } else {
                    contextIdsBuilder_.addAllMessages(values);
                }
                return this;
            }

            /**
             * <code>repeated .context.ContextId context_ids = 1;</code>
             */
            public Builder clearContextIds() {
                if (contextIdsBuilder_ == null) {
                    contextIds_ = java.util.Collections.emptyList();
                    bitField0_ = (bitField0_ & ~0x00000001);
                    onChanged();
                } else {
                    contextIdsBuilder_.clear();
                }
                return this;
            }

            /**
             * <code>repeated .context.ContextId context_ids = 1;</code>
             */
            public Builder removeContextIds(int index) {
                if (contextIdsBuilder_ == null) {
                    ensureContextIdsIsMutable();
                    contextIds_.remove(index);
                    onChanged();
                } else {
                    contextIdsBuilder_.remove(index);
                }
                return this;
            }

            /**
             * <code>repeated .context.ContextId context_ids = 1;</code>
             */
            public context.ContextOuterClass.ContextId.Builder getContextIdsBuilder(int index) {
                return getContextIdsFieldBuilder().getBuilder(index);
            }

            /**
             * <code>repeated .context.ContextId context_ids = 1;</code>
             */
            public context.ContextOuterClass.ContextIdOrBuilder getContextIdsOrBuilder(int index) {
                if (contextIdsBuilder_ == null) {
                    return contextIds_.get(index);
                } else {
                    return contextIdsBuilder_.getMessageOrBuilder(index);
                }
            }

            /**
             * <code>repeated .context.ContextId context_ids = 1;</code>
             */
            public java.util.List<? extends context.ContextOuterClass.ContextIdOrBuilder> getContextIdsOrBuilderList() {
                if (contextIdsBuilder_ != null) {
                    return contextIdsBuilder_.getMessageOrBuilderList();
                } else {
                    return java.util.Collections.unmodifiableList(contextIds_);
                }
            }

            /**
             * <code>repeated .context.ContextId context_ids = 1;</code>
             */
            public context.ContextOuterClass.ContextId.Builder addContextIdsBuilder() {
                return getContextIdsFieldBuilder().addBuilder(context.ContextOuterClass.ContextId.getDefaultInstance());
            }

            /**
             * <code>repeated .context.ContextId context_ids = 1;</code>
             */
            public context.ContextOuterClass.ContextId.Builder addContextIdsBuilder(int index) {
                return getContextIdsFieldBuilder().addBuilder(index, context.ContextOuterClass.ContextId.getDefaultInstance());
            }

            /**
             * <code>repeated .context.ContextId context_ids = 1;</code>
             */
            public java.util.List<context.ContextOuterClass.ContextId.Builder> getContextIdsBuilderList() {
                return getContextIdsFieldBuilder().getBuilderList();
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> getContextIdsFieldBuilder() {
                if (contextIdsBuilder_ == null) {
                    contextIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder>(contextIds_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
                    contextIds_ = null;
                }
                return contextIdsBuilder_;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.ContextIdList)
        }

        // @@protoc_insertion_point(class_scope:context.ContextIdList)
        private static final context.ContextOuterClass.ContextIdList DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.ContextIdList();
        }

        public static context.ContextOuterClass.ContextIdList getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<ContextIdList> PARSER = new com.google.protobuf.AbstractParser<ContextIdList>() {

            @java.lang.Override
            public ContextIdList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<ContextIdList> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<ContextIdList> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.ContextIdList getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface ContextListOrBuilder extends // @@protoc_insertion_point(interface_extends:context.ContextList)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>repeated .context.Context contexts = 1;</code>
         */
        java.util.List<context.ContextOuterClass.Context> getContextsList();

        /**
         * <code>repeated .context.Context contexts = 1;</code>
         */
        context.ContextOuterClass.Context getContexts(int index);

        /**
         * <code>repeated .context.Context contexts = 1;</code>
         */
        int getContextsCount();

        /**
         * <code>repeated .context.Context contexts = 1;</code>
         */
        java.util.List<? extends context.ContextOuterClass.ContextOrBuilder> getContextsOrBuilderList();

        /**
         * <code>repeated .context.Context contexts = 1;</code>
         */
        context.ContextOuterClass.ContextOrBuilder getContextsOrBuilder(int index);
    }

    /**
     * Protobuf type {@code context.ContextList}
     */
    public static final class ContextList extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.ContextList)
    ContextListOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use ContextList.newBuilder() to construct.
        private ContextList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private ContextList() {
            contexts_ = java.util.Collections.emptyList();
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new ContextList();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_ContextList_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_ContextList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ContextList.class, context.ContextOuterClass.ContextList.Builder.class);
        }

        public static final int CONTEXTS_FIELD_NUMBER = 1;

        @SuppressWarnings("serial")
        private java.util.List<context.ContextOuterClass.Context> contexts_;

        /**
         * <code>repeated .context.Context contexts = 1;</code>
         */
        @java.lang.Override
        public java.util.List<context.ContextOuterClass.Context> getContextsList() {
            return contexts_;
        }

        /**
         * <code>repeated .context.Context contexts = 1;</code>
         */
        @java.lang.Override
        public java.util.List<? extends context.ContextOuterClass.ContextOrBuilder> getContextsOrBuilderList() {
            return contexts_;
        }

        /**
         * <code>repeated .context.Context contexts = 1;</code>
         */
        @java.lang.Override
        public int getContextsCount() {
            return contexts_.size();
        }

        /**
         * <code>repeated .context.Context contexts = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.Context getContexts(int index) {
            return contexts_.get(index);
        }

        /**
         * <code>repeated .context.Context contexts = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.ContextOrBuilder getContextsOrBuilder(int index) {
            return contexts_.get(index);
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            for (int i = 0; i < contexts_.size(); i++) {
                output.writeMessage(1, contexts_.get(i));
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            for (int i = 0; i < contexts_.size(); i++) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, contexts_.get(i));
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.ContextList)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.ContextList other = (context.ContextOuterClass.ContextList) obj;
            if (!getContextsList().equals(other.getContextsList()))
                return false;
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            if (getContextsCount() > 0) {
                hash = (37 * hash) + CONTEXTS_FIELD_NUMBER;
                hash = (53 * hash) + getContextsList().hashCode();
            }
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.ContextList parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.ContextList parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.ContextList parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.ContextList parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.ContextList parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.ContextList parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.ContextList parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.ContextList parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.ContextList parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.ContextList parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.ContextList parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.ContextList parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.ContextList prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code context.ContextList}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.ContextList)
        context.ContextOuterClass.ContextListOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_ContextList_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_ContextList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ContextList.class, context.ContextOuterClass.ContextList.Builder.class);
            }

            // Construct using context.ContextOuterClass.ContextList.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                if (contextsBuilder_ == null) {
                    contexts_ = java.util.Collections.emptyList();
                } else {
                    contexts_ = null;
                    contextsBuilder_.clear();
                }
                bitField0_ = (bitField0_ & ~0x00000001);
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_ContextList_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.ContextList getDefaultInstanceForType() {
                return context.ContextOuterClass.ContextList.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.ContextList build() {
                context.ContextOuterClass.ContextList result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.ContextList buildPartial() {
                context.ContextOuterClass.ContextList result = new context.ContextOuterClass.ContextList(this);
                buildPartialRepeatedFields(result);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartialRepeatedFields(context.ContextOuterClass.ContextList result) {
                if (contextsBuilder_ == null) {
                    if (((bitField0_ & 0x00000001) != 0)) {
                        contexts_ = java.util.Collections.unmodifiableList(contexts_);
                        bitField0_ = (bitField0_ & ~0x00000001);
                    }
                    result.contexts_ = contexts_;
                } else {
                    result.contexts_ = contextsBuilder_.build();
                }
            }

            private void buildPartial0(context.ContextOuterClass.ContextList result) {
                int from_bitField0_ = bitField0_;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.ContextList) {
                    return mergeFrom((context.ContextOuterClass.ContextList) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.ContextList other) {
                if (other == context.ContextOuterClass.ContextList.getDefaultInstance())
                    return this;
                if (contextsBuilder_ == null) {
                    if (!other.contexts_.isEmpty()) {
                        if (contexts_.isEmpty()) {
                            contexts_ = other.contexts_;
                            bitField0_ = (bitField0_ & ~0x00000001);
                        } else {
                            ensureContextsIsMutable();
                            contexts_.addAll(other.contexts_);
                        }
                        onChanged();
                    }
                } else {
                    if (!other.contexts_.isEmpty()) {
                        if (contextsBuilder_.isEmpty()) {
                            contextsBuilder_.dispose();
                            contextsBuilder_ = null;
                            contexts_ = other.contexts_;
                            bitField0_ = (bitField0_ & ~0x00000001);
                            contextsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getContextsFieldBuilder() : null;
                        } else {
                            contextsBuilder_.addAllMessages(other.contexts_);
                        }
                    }
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 10:
                                {
                                    context.ContextOuterClass.Context m = input.readMessage(context.ContextOuterClass.Context.parser(), extensionRegistry);
                                    if (contextsBuilder_ == null) {
                                        ensureContextsIsMutable();
                                        contexts_.add(m);
                                    } else {
                                        contextsBuilder_.addMessage(m);
                                    }
                                    break;
                                }
                            // case 10
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private java.util.List<context.ContextOuterClass.Context> contexts_ = java.util.Collections.emptyList();

            private void ensureContextsIsMutable() {
                if (!((bitField0_ & 0x00000001) != 0)) {
                    contexts_ = new java.util.ArrayList<context.ContextOuterClass.Context>(contexts_);
                    bitField0_ |= 0x00000001;
                }
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Context, context.ContextOuterClass.Context.Builder, context.ContextOuterClass.ContextOrBuilder> contextsBuilder_;

            /**
             * <code>repeated .context.Context contexts = 1;</code>
             */
            public java.util.List<context.ContextOuterClass.Context> getContextsList() {
                if (contextsBuilder_ == null) {
                    return java.util.Collections.unmodifiableList(contexts_);
                } else {
                    return contextsBuilder_.getMessageList();
                }
            }

            /**
             * <code>repeated .context.Context contexts = 1;</code>
             */
            public int getContextsCount() {
                if (contextsBuilder_ == null) {
                    return contexts_.size();
                } else {
                    return contextsBuilder_.getCount();
                }
            }

            /**
             * <code>repeated .context.Context contexts = 1;</code>
             */
            public context.ContextOuterClass.Context getContexts(int index) {
                if (contextsBuilder_ == null) {
                    return contexts_.get(index);
                } else {
                    return contextsBuilder_.getMessage(index);
                }
            }

            /**
             * <code>repeated .context.Context contexts = 1;</code>
             */
            public Builder setContexts(int index, context.ContextOuterClass.Context value) {
                if (contextsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureContextsIsMutable();
                    contexts_.set(index, value);
                    onChanged();
                } else {
                    contextsBuilder_.setMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.Context contexts = 1;</code>
             */
            public Builder setContexts(int index, context.ContextOuterClass.Context.Builder builderForValue) {
                if (contextsBuilder_ == null) {
                    ensureContextsIsMutable();
                    contexts_.set(index, builderForValue.build());
                    onChanged();
                } else {
                    contextsBuilder_.setMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.Context contexts = 1;</code>
             */
            public Builder addContexts(context.ContextOuterClass.Context value) {
                if (contextsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureContextsIsMutable();
                    contexts_.add(value);
                    onChanged();
                } else {
                    contextsBuilder_.addMessage(value);
                }
                return this;
            }

            /**
             * <code>repeated .context.Context contexts = 1;</code>
             */
            public Builder addContexts(int index, context.ContextOuterClass.Context value) {
                if (contextsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureContextsIsMutable();
                    contexts_.add(index, value);
                    onChanged();
                } else {
                    contextsBuilder_.addMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.Context contexts = 1;</code>
             */
            public Builder addContexts(context.ContextOuterClass.Context.Builder builderForValue) {
                if (contextsBuilder_ == null) {
                    ensureContextsIsMutable();
                    contexts_.add(builderForValue.build());
                    onChanged();
                } else {
                    contextsBuilder_.addMessage(builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.Context contexts = 1;</code>
             */
            public Builder addContexts(int index, context.ContextOuterClass.Context.Builder builderForValue) {
                if (contextsBuilder_ == null) {
                    ensureContextsIsMutable();
                    contexts_.add(index, builderForValue.build());
                    onChanged();
                } else {
                    contextsBuilder_.addMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.Context contexts = 1;</code>
             */
            public Builder addAllContexts(java.lang.Iterable<? extends context.ContextOuterClass.Context> values) {
                if (contextsBuilder_ == null) {
                    ensureContextsIsMutable();
                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, contexts_);
                    onChanged();
                } else {
                    contextsBuilder_.addAllMessages(values);
                }
                return this;
            }

            /**
             * <code>repeated .context.Context contexts = 1;</code>
             */
            public Builder clearContexts() {
                if (contextsBuilder_ == null) {
                    contexts_ = java.util.Collections.emptyList();
                    bitField0_ = (bitField0_ & ~0x00000001);
                    onChanged();
                } else {
                    contextsBuilder_.clear();
                }
                return this;
            }

            /**
             * <code>repeated .context.Context contexts = 1;</code>
             */
            public Builder removeContexts(int index) {
                if (contextsBuilder_ == null) {
                    ensureContextsIsMutable();
                    contexts_.remove(index);
                    onChanged();
                } else {
                    contextsBuilder_.remove(index);
                }
                return this;
            }

            /**
             * <code>repeated .context.Context contexts = 1;</code>
             */
            public context.ContextOuterClass.Context.Builder getContextsBuilder(int index) {
                return getContextsFieldBuilder().getBuilder(index);
            }

            /**
             * <code>repeated .context.Context contexts = 1;</code>
             */
            public context.ContextOuterClass.ContextOrBuilder getContextsOrBuilder(int index) {
                if (contextsBuilder_ == null) {
                    return contexts_.get(index);
                } else {
                    return contextsBuilder_.getMessageOrBuilder(index);
                }
            }

            /**
             * <code>repeated .context.Context contexts = 1;</code>
             */
            public java.util.List<? extends context.ContextOuterClass.ContextOrBuilder> getContextsOrBuilderList() {
                if (contextsBuilder_ != null) {
                    return contextsBuilder_.getMessageOrBuilderList();
                } else {
                    return java.util.Collections.unmodifiableList(contexts_);
                }
            }

            /**
             * <code>repeated .context.Context contexts = 1;</code>
             */
            public context.ContextOuterClass.Context.Builder addContextsBuilder() {
                return getContextsFieldBuilder().addBuilder(context.ContextOuterClass.Context.getDefaultInstance());
            }

            /**
             * <code>repeated .context.Context contexts = 1;</code>
             */
            public context.ContextOuterClass.Context.Builder addContextsBuilder(int index) {
                return getContextsFieldBuilder().addBuilder(index, context.ContextOuterClass.Context.getDefaultInstance());
            }

            /**
             * <code>repeated .context.Context contexts = 1;</code>
             */
            public java.util.List<context.ContextOuterClass.Context.Builder> getContextsBuilderList() {
                return getContextsFieldBuilder().getBuilderList();
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Context, context.ContextOuterClass.Context.Builder, context.ContextOuterClass.ContextOrBuilder> getContextsFieldBuilder() {
                if (contextsBuilder_ == null) {
                    contextsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Context, context.ContextOuterClass.Context.Builder, context.ContextOuterClass.ContextOrBuilder>(contexts_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
                    contexts_ = null;
                }
                return contextsBuilder_;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.ContextList)
        }

        // @@protoc_insertion_point(class_scope:context.ContextList)
        private static final context.ContextOuterClass.ContextList DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.ContextList();
        }

        public static context.ContextOuterClass.ContextList getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<ContextList> PARSER = new com.google.protobuf.AbstractParser<ContextList>() {

            @java.lang.Override
            public ContextList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<ContextList> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<ContextList> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.ContextList getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface ContextEventOrBuilder extends // @@protoc_insertion_point(interface_extends:context.ContextEvent)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>.context.Event event = 1;</code>
         * @return Whether the event field is set.
         */
        boolean hasEvent();

        /**
         * <code>.context.Event event = 1;</code>
         * @return The event.
         */
        context.ContextOuterClass.Event getEvent();

        /**
         * <code>.context.Event event = 1;</code>
         */
        context.ContextOuterClass.EventOrBuilder getEventOrBuilder();

        /**
         * <code>.context.ContextId context_id = 2;</code>
         * @return Whether the contextId field is set.
         */
        boolean hasContextId();

        /**
         * <code>.context.ContextId context_id = 2;</code>
         * @return The contextId.
         */
        context.ContextOuterClass.ContextId getContextId();

        /**
         * <code>.context.ContextId context_id = 2;</code>
         */
        context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder();
    }

    /**
     * Protobuf type {@code context.ContextEvent}
     */
    public static final class ContextEvent extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.ContextEvent)
    ContextEventOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use ContextEvent.newBuilder() to construct.
        private ContextEvent(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private ContextEvent() {
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new ContextEvent();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_ContextEvent_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_ContextEvent_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ContextEvent.class, context.ContextOuterClass.ContextEvent.Builder.class);
        }

        public static final int EVENT_FIELD_NUMBER = 1;

        private context.ContextOuterClass.Event event_;

        /**
         * <code>.context.Event event = 1;</code>
         * @return Whether the event field is set.
         */
        @java.lang.Override
        public boolean hasEvent() {
            return event_ != null;
        }

        /**
         * <code>.context.Event event = 1;</code>
         * @return The event.
         */
        @java.lang.Override
        public context.ContextOuterClass.Event getEvent() {
            return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
        }

        /**
         * <code>.context.Event event = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
            return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
        }

        public static final int CONTEXT_ID_FIELD_NUMBER = 2;

        private context.ContextOuterClass.ContextId contextId_;

        /**
         * <code>.context.ContextId context_id = 2;</code>
         * @return Whether the contextId field is set.
         */
        @java.lang.Override
        public boolean hasContextId() {
            return contextId_ != null;
        }

        /**
         * <code>.context.ContextId context_id = 2;</code>
         * @return The contextId.
         */
        @java.lang.Override
        public context.ContextOuterClass.ContextId getContextId() {
            return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
        }

        /**
         * <code>.context.ContextId context_id = 2;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
            return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            if (event_ != null) {
                output.writeMessage(1, getEvent());
            }
            if (contextId_ != null) {
                output.writeMessage(2, getContextId());
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            if (event_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getEvent());
            }
            if (contextId_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getContextId());
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.ContextEvent)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.ContextEvent other = (context.ContextOuterClass.ContextEvent) obj;
            if (hasEvent() != other.hasEvent())
                return false;
            if (hasEvent()) {
                if (!getEvent().equals(other.getEvent()))
                    return false;
            }
            if (hasContextId() != other.hasContextId())
                return false;
            if (hasContextId()) {
                if (!getContextId().equals(other.getContextId()))
                    return false;
            }
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            if (hasEvent()) {
                hash = (37 * hash) + EVENT_FIELD_NUMBER;
                hash = (53 * hash) + getEvent().hashCode();
            }
            if (hasContextId()) {
                hash = (37 * hash) + CONTEXT_ID_FIELD_NUMBER;
                hash = (53 * hash) + getContextId().hashCode();
            }
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.ContextEvent parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.ContextEvent parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.ContextEvent parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.ContextEvent parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.ContextEvent parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.ContextEvent parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.ContextEvent parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.ContextEvent parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.ContextEvent parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.ContextEvent parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.ContextEvent parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.ContextEvent parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.ContextEvent prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code context.ContextEvent}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.ContextEvent)
        context.ContextOuterClass.ContextEventOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_ContextEvent_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_ContextEvent_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ContextEvent.class, context.ContextOuterClass.ContextEvent.Builder.class);
            }

            // Construct using context.ContextOuterClass.ContextEvent.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                event_ = null;
                if (eventBuilder_ != null) {
                    eventBuilder_.dispose();
                    eventBuilder_ = null;
                }
                contextId_ = null;
                if (contextIdBuilder_ != null) {
                    contextIdBuilder_.dispose();
                    contextIdBuilder_ = null;
                }
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_ContextEvent_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.ContextEvent getDefaultInstanceForType() {
                return context.ContextOuterClass.ContextEvent.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.ContextEvent build() {
                context.ContextOuterClass.ContextEvent result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.ContextEvent buildPartial() {
                context.ContextOuterClass.ContextEvent result = new context.ContextOuterClass.ContextEvent(this);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartial0(context.ContextOuterClass.ContextEvent result) {
                int from_bitField0_ = bitField0_;
                if (((from_bitField0_ & 0x00000001) != 0)) {
                    result.event_ = eventBuilder_ == null ? event_ : eventBuilder_.build();
                }
                if (((from_bitField0_ & 0x00000002) != 0)) {
                    result.contextId_ = contextIdBuilder_ == null ? contextId_ : contextIdBuilder_.build();
                }
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.ContextEvent) {
                    return mergeFrom((context.ContextOuterClass.ContextEvent) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.ContextEvent other) {
                if (other == context.ContextOuterClass.ContextEvent.getDefaultInstance())
                    return this;
                if (other.hasEvent()) {
                    mergeEvent(other.getEvent());
                }
                if (other.hasContextId()) {
                    mergeContextId(other.getContextId());
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 10:
                                {
                                    input.readMessage(getEventFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000001;
                                    break;
                                }
                            // case 10
                            case 18:
                                {
                                    input.readMessage(getContextIdFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000002;
                                    break;
                                }
                            // case 18
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private context.ContextOuterClass.Event event_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> eventBuilder_;

            /**
             * <code>.context.Event event = 1;</code>
             * @return Whether the event field is set.
             */
            public boolean hasEvent() {
                return ((bitField0_ & 0x00000001) != 0);
            }

            /**
             * <code>.context.Event event = 1;</code>
             * @return The event.
             */
            public context.ContextOuterClass.Event getEvent() {
                if (eventBuilder_ == null) {
                    return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
                } else {
                    return eventBuilder_.getMessage();
                }
            }

            /**
             * <code>.context.Event event = 1;</code>
             */
            public Builder setEvent(context.ContextOuterClass.Event value) {
                if (eventBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    event_ = value;
                } else {
                    eventBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.Event event = 1;</code>
             */
            public Builder setEvent(context.ContextOuterClass.Event.Builder builderForValue) {
                if (eventBuilder_ == null) {
                    event_ = builderForValue.build();
                } else {
                    eventBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.Event event = 1;</code>
             */
            public Builder mergeEvent(context.ContextOuterClass.Event value) {
                if (eventBuilder_ == null) {
                    if (((bitField0_ & 0x00000001) != 0) && event_ != null && event_ != context.ContextOuterClass.Event.getDefaultInstance()) {
                        getEventBuilder().mergeFrom(value);
                    } else {
                        event_ = value;
                    }
                } else {
                    eventBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.Event event = 1;</code>
             */
            public Builder clearEvent() {
                bitField0_ = (bitField0_ & ~0x00000001);
                event_ = null;
                if (eventBuilder_ != null) {
                    eventBuilder_.dispose();
                    eventBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.Event event = 1;</code>
             */
            public context.ContextOuterClass.Event.Builder getEventBuilder() {
                bitField0_ |= 0x00000001;
                onChanged();
                return getEventFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.Event event = 1;</code>
             */
            public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
                if (eventBuilder_ != null) {
                    return eventBuilder_.getMessageOrBuilder();
                } else {
                    return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
                }
            }

            /**
             * <code>.context.Event event = 1;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> getEventFieldBuilder() {
                if (eventBuilder_ == null) {
                    eventBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder>(getEvent(), getParentForChildren(), isClean());
                    event_ = null;
                }
                return eventBuilder_;
            }

            private context.ContextOuterClass.ContextId contextId_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> contextIdBuilder_;

            /**
             * <code>.context.ContextId context_id = 2;</code>
             * @return Whether the contextId field is set.
             */
            public boolean hasContextId() {
                return ((bitField0_ & 0x00000002) != 0);
            }

            /**
             * <code>.context.ContextId context_id = 2;</code>
             * @return The contextId.
             */
            public context.ContextOuterClass.ContextId getContextId() {
                if (contextIdBuilder_ == null) {
                    return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
                } else {
                    return contextIdBuilder_.getMessage();
                }
            }

            /**
             * <code>.context.ContextId context_id = 2;</code>
             */
            public Builder setContextId(context.ContextOuterClass.ContextId value) {
                if (contextIdBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    contextId_ = value;
                } else {
                    contextIdBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>.context.ContextId context_id = 2;</code>
             */
            public Builder setContextId(context.ContextOuterClass.ContextId.Builder builderForValue) {
                if (contextIdBuilder_ == null) {
                    contextId_ = builderForValue.build();
                } else {
                    contextIdBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>.context.ContextId context_id = 2;</code>
             */
            public Builder mergeContextId(context.ContextOuterClass.ContextId value) {
                if (contextIdBuilder_ == null) {
                    if (((bitField0_ & 0x00000002) != 0) && contextId_ != null && contextId_ != context.ContextOuterClass.ContextId.getDefaultInstance()) {
                        getContextIdBuilder().mergeFrom(value);
                    } else {
                        contextId_ = value;
                    }
                } else {
                    contextIdBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>.context.ContextId context_id = 2;</code>
             */
            public Builder clearContextId() {
                bitField0_ = (bitField0_ & ~0x00000002);
                contextId_ = null;
                if (contextIdBuilder_ != null) {
                    contextIdBuilder_.dispose();
                    contextIdBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.ContextId context_id = 2;</code>
             */
            public context.ContextOuterClass.ContextId.Builder getContextIdBuilder() {
                bitField0_ |= 0x00000002;
                onChanged();
                return getContextIdFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.ContextId context_id = 2;</code>
             */
            public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
                if (contextIdBuilder_ != null) {
                    return contextIdBuilder_.getMessageOrBuilder();
                } else {
                    return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
                }
            }

            /**
             * <code>.context.ContextId context_id = 2;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> getContextIdFieldBuilder() {
                if (contextIdBuilder_ == null) {
                    contextIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder>(getContextId(), getParentForChildren(), isClean());
                    contextId_ = null;
                }
                return contextIdBuilder_;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.ContextEvent)
        }

        // @@protoc_insertion_point(class_scope:context.ContextEvent)
        private static final context.ContextOuterClass.ContextEvent DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.ContextEvent();
        }

        public static context.ContextOuterClass.ContextEvent getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<ContextEvent> PARSER = new com.google.protobuf.AbstractParser<ContextEvent>() {

            @java.lang.Override
            public ContextEvent parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<ContextEvent> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<ContextEvent> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.ContextEvent getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface TopologyIdOrBuilder extends // @@protoc_insertion_point(interface_extends:context.TopologyId)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>.context.ContextId context_id = 1;</code>
         * @return Whether the contextId field is set.
         */
        boolean hasContextId();

        /**
         * <code>.context.ContextId context_id = 1;</code>
         * @return The contextId.
         */
        context.ContextOuterClass.ContextId getContextId();

        /**
         * <code>.context.ContextId context_id = 1;</code>
         */
        context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder();

        /**
         * <code>.context.Uuid topology_uuid = 2;</code>
         * @return Whether the topologyUuid field is set.
         */
        boolean hasTopologyUuid();

        /**
         * <code>.context.Uuid topology_uuid = 2;</code>
         * @return The topologyUuid.
         */
        context.ContextOuterClass.Uuid getTopologyUuid();

        /**
         * <code>.context.Uuid topology_uuid = 2;</code>
         */
        context.ContextOuterClass.UuidOrBuilder getTopologyUuidOrBuilder();
    }

    /**
     * <pre>
     * ----- Topology ------------------------------------------------------------------------------------------------------
     * </pre>
     *
     * Protobuf type {@code context.TopologyId}
     */
    public static final class TopologyId extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.TopologyId)
    TopologyIdOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use TopologyId.newBuilder() to construct.
        private TopologyId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private TopologyId() {
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new TopologyId();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_TopologyId_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_TopologyId_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.TopologyId.class, context.ContextOuterClass.TopologyId.Builder.class);
        }

        public static final int CONTEXT_ID_FIELD_NUMBER = 1;

        private context.ContextOuterClass.ContextId contextId_;

        /**
         * <code>.context.ContextId context_id = 1;</code>
         * @return Whether the contextId field is set.
         */
        @java.lang.Override
        public boolean hasContextId() {
            return contextId_ != null;
        }

        /**
         * <code>.context.ContextId context_id = 1;</code>
         * @return The contextId.
         */
        @java.lang.Override
        public context.ContextOuterClass.ContextId getContextId() {
            return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
        }

        /**
         * <code>.context.ContextId context_id = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
            return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
        }

        public static final int TOPOLOGY_UUID_FIELD_NUMBER = 2;

        private context.ContextOuterClass.Uuid topologyUuid_;

        /**
         * <code>.context.Uuid topology_uuid = 2;</code>
         * @return Whether the topologyUuid field is set.
         */
        @java.lang.Override
        public boolean hasTopologyUuid() {
            return topologyUuid_ != null;
        }

        /**
         * <code>.context.Uuid topology_uuid = 2;</code>
         * @return The topologyUuid.
         */
        @java.lang.Override
        public context.ContextOuterClass.Uuid getTopologyUuid() {
            return topologyUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : topologyUuid_;
        }

        /**
         * <code>.context.Uuid topology_uuid = 2;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.UuidOrBuilder getTopologyUuidOrBuilder() {
            return topologyUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : topologyUuid_;
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            if (contextId_ != null) {
                output.writeMessage(1, getContextId());
            }
            if (topologyUuid_ != null) {
                output.writeMessage(2, getTopologyUuid());
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            if (contextId_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getContextId());
            }
            if (topologyUuid_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getTopologyUuid());
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.TopologyId)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.TopologyId other = (context.ContextOuterClass.TopologyId) obj;
            if (hasContextId() != other.hasContextId())
                return false;
            if (hasContextId()) {
                if (!getContextId().equals(other.getContextId()))
                    return false;
            }
            if (hasTopologyUuid() != other.hasTopologyUuid())
                return false;
            if (hasTopologyUuid()) {
                if (!getTopologyUuid().equals(other.getTopologyUuid()))
                    return false;
            }
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            if (hasContextId()) {
                hash = (37 * hash) + CONTEXT_ID_FIELD_NUMBER;
                hash = (53 * hash) + getContextId().hashCode();
            }
            if (hasTopologyUuid()) {
                hash = (37 * hash) + TOPOLOGY_UUID_FIELD_NUMBER;
                hash = (53 * hash) + getTopologyUuid().hashCode();
            }
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.TopologyId parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.TopologyId parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.TopologyId parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.TopologyId parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.TopologyId parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.TopologyId parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.TopologyId parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.TopologyId parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.TopologyId parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.TopologyId parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.TopologyId parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.TopologyId parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.TopologyId prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * <pre>
         * ----- Topology ------------------------------------------------------------------------------------------------------
         * </pre>
         *
         * Protobuf type {@code context.TopologyId}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.TopologyId)
        context.ContextOuterClass.TopologyIdOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_TopologyId_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_TopologyId_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.TopologyId.class, context.ContextOuterClass.TopologyId.Builder.class);
            }

            // Construct using context.ContextOuterClass.TopologyId.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                contextId_ = null;
                if (contextIdBuilder_ != null) {
                    contextIdBuilder_.dispose();
                    contextIdBuilder_ = null;
                }
                topologyUuid_ = null;
                if (topologyUuidBuilder_ != null) {
                    topologyUuidBuilder_.dispose();
                    topologyUuidBuilder_ = null;
                }
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_TopologyId_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.TopologyId getDefaultInstanceForType() {
                return context.ContextOuterClass.TopologyId.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.TopologyId build() {
                context.ContextOuterClass.TopologyId result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.TopologyId buildPartial() {
                context.ContextOuterClass.TopologyId result = new context.ContextOuterClass.TopologyId(this);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartial0(context.ContextOuterClass.TopologyId result) {
                int from_bitField0_ = bitField0_;
                if (((from_bitField0_ & 0x00000001) != 0)) {
                    result.contextId_ = contextIdBuilder_ == null ? contextId_ : contextIdBuilder_.build();
                }
                if (((from_bitField0_ & 0x00000002) != 0)) {
                    result.topologyUuid_ = topologyUuidBuilder_ == null ? topologyUuid_ : topologyUuidBuilder_.build();
                }
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.TopologyId) {
                    return mergeFrom((context.ContextOuterClass.TopologyId) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.TopologyId other) {
                if (other == context.ContextOuterClass.TopologyId.getDefaultInstance())
                    return this;
                if (other.hasContextId()) {
                    mergeContextId(other.getContextId());
                }
                if (other.hasTopologyUuid()) {
                    mergeTopologyUuid(other.getTopologyUuid());
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 10:
                                {
                                    input.readMessage(getContextIdFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000001;
                                    break;
                                }
                            // case 10
                            case 18:
                                {
                                    input.readMessage(getTopologyUuidFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000002;
                                    break;
                                }
                            // case 18
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private context.ContextOuterClass.ContextId contextId_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> contextIdBuilder_;

            /**
             * <code>.context.ContextId context_id = 1;</code>
             * @return Whether the contextId field is set.
             */
            public boolean hasContextId() {
                return ((bitField0_ & 0x00000001) != 0);
            }

            /**
             * <code>.context.ContextId context_id = 1;</code>
             * @return The contextId.
             */
            public context.ContextOuterClass.ContextId getContextId() {
                if (contextIdBuilder_ == null) {
                    return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
                } else {
                    return contextIdBuilder_.getMessage();
                }
            }

            /**
             * <code>.context.ContextId context_id = 1;</code>
             */
            public Builder setContextId(context.ContextOuterClass.ContextId value) {
                if (contextIdBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    contextId_ = value;
                } else {
                    contextIdBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.ContextId context_id = 1;</code>
             */
            public Builder setContextId(context.ContextOuterClass.ContextId.Builder builderForValue) {
                if (contextIdBuilder_ == null) {
                    contextId_ = builderForValue.build();
                } else {
                    contextIdBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.ContextId context_id = 1;</code>
             */
            public Builder mergeContextId(context.ContextOuterClass.ContextId value) {
                if (contextIdBuilder_ == null) {
                    if (((bitField0_ & 0x00000001) != 0) && contextId_ != null && contextId_ != context.ContextOuterClass.ContextId.getDefaultInstance()) {
                        getContextIdBuilder().mergeFrom(value);
                    } else {
                        contextId_ = value;
                    }
                } else {
                    contextIdBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.ContextId context_id = 1;</code>
             */
            public Builder clearContextId() {
                bitField0_ = (bitField0_ & ~0x00000001);
                contextId_ = null;
                if (contextIdBuilder_ != null) {
                    contextIdBuilder_.dispose();
                    contextIdBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.ContextId context_id = 1;</code>
             */
            public context.ContextOuterClass.ContextId.Builder getContextIdBuilder() {
                bitField0_ |= 0x00000001;
                onChanged();
                return getContextIdFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.ContextId context_id = 1;</code>
             */
            public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
                if (contextIdBuilder_ != null) {
                    return contextIdBuilder_.getMessageOrBuilder();
                } else {
                    return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
                }
            }

            /**
             * <code>.context.ContextId context_id = 1;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> getContextIdFieldBuilder() {
                if (contextIdBuilder_ == null) {
                    contextIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder>(getContextId(), getParentForChildren(), isClean());
                    contextId_ = null;
                }
                return contextIdBuilder_;
            }

            private context.ContextOuterClass.Uuid topologyUuid_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> topologyUuidBuilder_;

            /**
             * <code>.context.Uuid topology_uuid = 2;</code>
             * @return Whether the topologyUuid field is set.
             */
            public boolean hasTopologyUuid() {
                return ((bitField0_ & 0x00000002) != 0);
            }

            /**
             * <code>.context.Uuid topology_uuid = 2;</code>
             * @return The topologyUuid.
             */
            public context.ContextOuterClass.Uuid getTopologyUuid() {
                if (topologyUuidBuilder_ == null) {
                    return topologyUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : topologyUuid_;
                } else {
                    return topologyUuidBuilder_.getMessage();
                }
            }

            /**
             * <code>.context.Uuid topology_uuid = 2;</code>
             */
            public Builder setTopologyUuid(context.ContextOuterClass.Uuid value) {
                if (topologyUuidBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    topologyUuid_ = value;
                } else {
                    topologyUuidBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>.context.Uuid topology_uuid = 2;</code>
             */
            public Builder setTopologyUuid(context.ContextOuterClass.Uuid.Builder builderForValue) {
                if (topologyUuidBuilder_ == null) {
                    topologyUuid_ = builderForValue.build();
                } else {
                    topologyUuidBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>.context.Uuid topology_uuid = 2;</code>
             */
            public Builder mergeTopologyUuid(context.ContextOuterClass.Uuid value) {
                if (topologyUuidBuilder_ == null) {
                    if (((bitField0_ & 0x00000002) != 0) && topologyUuid_ != null && topologyUuid_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
                        getTopologyUuidBuilder().mergeFrom(value);
                    } else {
                        topologyUuid_ = value;
                    }
                } else {
                    topologyUuidBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>.context.Uuid topology_uuid = 2;</code>
             */
            public Builder clearTopologyUuid() {
                bitField0_ = (bitField0_ & ~0x00000002);
                topologyUuid_ = null;
                if (topologyUuidBuilder_ != null) {
                    topologyUuidBuilder_.dispose();
                    topologyUuidBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.Uuid topology_uuid = 2;</code>
             */
            public context.ContextOuterClass.Uuid.Builder getTopologyUuidBuilder() {
                bitField0_ |= 0x00000002;
                onChanged();
                return getTopologyUuidFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.Uuid topology_uuid = 2;</code>
             */
            public context.ContextOuterClass.UuidOrBuilder getTopologyUuidOrBuilder() {
                if (topologyUuidBuilder_ != null) {
                    return topologyUuidBuilder_.getMessageOrBuilder();
                } else {
                    return topologyUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : topologyUuid_;
                }
            }

            /**
             * <code>.context.Uuid topology_uuid = 2;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> getTopologyUuidFieldBuilder() {
                if (topologyUuidBuilder_ == null) {
                    topologyUuidBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder>(getTopologyUuid(), getParentForChildren(), isClean());
                    topologyUuid_ = null;
                }
                return topologyUuidBuilder_;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.TopologyId)
        }

        // @@protoc_insertion_point(class_scope:context.TopologyId)
        private static final context.ContextOuterClass.TopologyId DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.TopologyId();
        }

        public static context.ContextOuterClass.TopologyId getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<TopologyId> PARSER = new com.google.protobuf.AbstractParser<TopologyId>() {

            @java.lang.Override
            public TopologyId parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<TopologyId> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<TopologyId> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.TopologyId getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface TopologyOrBuilder extends // @@protoc_insertion_point(interface_extends:context.Topology)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>.context.TopologyId topology_id = 1;</code>
         * @return Whether the topologyId field is set.
         */
        boolean hasTopologyId();

        /**
         * <code>.context.TopologyId topology_id = 1;</code>
         * @return The topologyId.
         */
        context.ContextOuterClass.TopologyId getTopologyId();

        /**
         * <code>.context.TopologyId topology_id = 1;</code>
         */
        context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdOrBuilder();

        /**
         * <code>string name = 2;</code>
         * @return The name.
         */
        java.lang.String getName();

        /**
         * <code>string name = 2;</code>
         * @return The bytes for name.
         */
        com.google.protobuf.ByteString getNameBytes();

        /**
         * <code>repeated .context.DeviceId device_ids = 3;</code>
         */
        java.util.List<context.ContextOuterClass.DeviceId> getDeviceIdsList();

        /**
         * <code>repeated .context.DeviceId device_ids = 3;</code>
         */
        context.ContextOuterClass.DeviceId getDeviceIds(int index);

        /**
         * <code>repeated .context.DeviceId device_ids = 3;</code>
         */
        int getDeviceIdsCount();

        /**
         * <code>repeated .context.DeviceId device_ids = 3;</code>
         */
        java.util.List<? extends context.ContextOuterClass.DeviceIdOrBuilder> getDeviceIdsOrBuilderList();

        /**
         * <code>repeated .context.DeviceId device_ids = 3;</code>
         */
        context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdsOrBuilder(int index);

        /**
         * <code>repeated .context.LinkId link_ids = 4;</code>
         */
        java.util.List<context.ContextOuterClass.LinkId> getLinkIdsList();

        /**
         * <code>repeated .context.LinkId link_ids = 4;</code>
         */
        context.ContextOuterClass.LinkId getLinkIds(int index);

        /**
         * <code>repeated .context.LinkId link_ids = 4;</code>
         */
        int getLinkIdsCount();

        /**
         * <code>repeated .context.LinkId link_ids = 4;</code>
         */
        java.util.List<? extends context.ContextOuterClass.LinkIdOrBuilder> getLinkIdsOrBuilderList();

        /**
         * <code>repeated .context.LinkId link_ids = 4;</code>
         */
        context.ContextOuterClass.LinkIdOrBuilder getLinkIdsOrBuilder(int index);

        /**
         * <code>repeated .context.LinkId optical_link_ids = 5;</code>
         */
        java.util.List<context.ContextOuterClass.LinkId> getOpticalLinkIdsList();

        /**
         * <code>repeated .context.LinkId optical_link_ids = 5;</code>
         */
        context.ContextOuterClass.LinkId getOpticalLinkIds(int index);

        /**
         * <code>repeated .context.LinkId optical_link_ids = 5;</code>
         */
        int getOpticalLinkIdsCount();

        /**
         * <code>repeated .context.LinkId optical_link_ids = 5;</code>
         */
        java.util.List<? extends context.ContextOuterClass.LinkIdOrBuilder> getOpticalLinkIdsOrBuilderList();

        /**
         * <code>repeated .context.LinkId optical_link_ids = 5;</code>
         */
        context.ContextOuterClass.LinkIdOrBuilder getOpticalLinkIdsOrBuilder(int index);
    }

    /**
     * Protobuf type {@code context.Topology}
     */
    public static final class Topology extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.Topology)
    TopologyOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use Topology.newBuilder() to construct.
        private Topology(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private Topology() {
            name_ = "";
            deviceIds_ = java.util.Collections.emptyList();
            linkIds_ = java.util.Collections.emptyList();
            opticalLinkIds_ = java.util.Collections.emptyList();
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new Topology();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_Topology_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_Topology_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Topology.class, context.ContextOuterClass.Topology.Builder.class);
        }

        public static final int TOPOLOGY_ID_FIELD_NUMBER = 1;

        private context.ContextOuterClass.TopologyId topologyId_;

        /**
         * <code>.context.TopologyId topology_id = 1;</code>
         * @return Whether the topologyId field is set.
         */
        @java.lang.Override
        public boolean hasTopologyId() {
            return topologyId_ != null;
        }

        /**
         * <code>.context.TopologyId topology_id = 1;</code>
         * @return The topologyId.
         */
        @java.lang.Override
        public context.ContextOuterClass.TopologyId getTopologyId() {
            return topologyId_ == null ? context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_;
        }

        /**
         * <code>.context.TopologyId topology_id = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdOrBuilder() {
            return topologyId_ == null ? context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_;
        }

        public static final int NAME_FIELD_NUMBER = 2;

        @SuppressWarnings("serial")
        private volatile java.lang.Object name_ = "";

        /**
         * <code>string name = 2;</code>
         * @return The name.
         */
        @java.lang.Override
        public java.lang.String getName() {
            java.lang.Object ref = name_;
            if (ref instanceof java.lang.String) {
                return (java.lang.String) ref;
            } else {
                com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                java.lang.String s = bs.toStringUtf8();
                name_ = s;
                return s;
            }
        }

        /**
         * <code>string name = 2;</code>
         * @return The bytes for name.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString getNameBytes() {
            java.lang.Object ref = name_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                name_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int DEVICE_IDS_FIELD_NUMBER = 3;

        @SuppressWarnings("serial")
        private java.util.List<context.ContextOuterClass.DeviceId> deviceIds_;

        /**
         * <code>repeated .context.DeviceId device_ids = 3;</code>
         */
        @java.lang.Override
        public java.util.List<context.ContextOuterClass.DeviceId> getDeviceIdsList() {
            return deviceIds_;
        }

        /**
         * <code>repeated .context.DeviceId device_ids = 3;</code>
         */
        @java.lang.Override
        public java.util.List<? extends context.ContextOuterClass.DeviceIdOrBuilder> getDeviceIdsOrBuilderList() {
            return deviceIds_;
        }

        /**
         * <code>repeated .context.DeviceId device_ids = 3;</code>
         */
        @java.lang.Override
        public int getDeviceIdsCount() {
            return deviceIds_.size();
        }

        /**
         * <code>repeated .context.DeviceId device_ids = 3;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.DeviceId getDeviceIds(int index) {
            return deviceIds_.get(index);
        }

        /**
         * <code>repeated .context.DeviceId device_ids = 3;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdsOrBuilder(int index) {
            return deviceIds_.get(index);
        }

        public static final int LINK_IDS_FIELD_NUMBER = 4;

        @SuppressWarnings("serial")
        private java.util.List<context.ContextOuterClass.LinkId> linkIds_;

        /**
         * <code>repeated .context.LinkId link_ids = 4;</code>
         */
        @java.lang.Override
        public java.util.List<context.ContextOuterClass.LinkId> getLinkIdsList() {
            return linkIds_;
        }

        /**
         * <code>repeated .context.LinkId link_ids = 4;</code>
         */
        @java.lang.Override
        public java.util.List<? extends context.ContextOuterClass.LinkIdOrBuilder> getLinkIdsOrBuilderList() {
            return linkIds_;
        }

        /**
         * <code>repeated .context.LinkId link_ids = 4;</code>
         */
        @java.lang.Override
        public int getLinkIdsCount() {
            return linkIds_.size();
        }

        /**
         * <code>repeated .context.LinkId link_ids = 4;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.LinkId getLinkIds(int index) {
            return linkIds_.get(index);
        }

        /**
         * <code>repeated .context.LinkId link_ids = 4;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.LinkIdOrBuilder getLinkIdsOrBuilder(int index) {
            return linkIds_.get(index);
        }

        public static final int OPTICAL_LINK_IDS_FIELD_NUMBER = 5;

        @SuppressWarnings("serial")
        private java.util.List<context.ContextOuterClass.LinkId> opticalLinkIds_;

        /**
         * <code>repeated .context.LinkId optical_link_ids = 5;</code>
         */
        @java.lang.Override
        public java.util.List<context.ContextOuterClass.LinkId> getOpticalLinkIdsList() {
            return opticalLinkIds_;
        }

        /**
         * <code>repeated .context.LinkId optical_link_ids = 5;</code>
         */
        @java.lang.Override
        public java.util.List<? extends context.ContextOuterClass.LinkIdOrBuilder> getOpticalLinkIdsOrBuilderList() {
            return opticalLinkIds_;
        }

        /**
         * <code>repeated .context.LinkId optical_link_ids = 5;</code>
         */
        @java.lang.Override
        public int getOpticalLinkIdsCount() {
            return opticalLinkIds_.size();
        }

        /**
         * <code>repeated .context.LinkId optical_link_ids = 5;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.LinkId getOpticalLinkIds(int index) {
            return opticalLinkIds_.get(index);
        }

        /**
         * <code>repeated .context.LinkId optical_link_ids = 5;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.LinkIdOrBuilder getOpticalLinkIdsOrBuilder(int index) {
            return opticalLinkIds_.get(index);
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            if (topologyId_ != null) {
                output.writeMessage(1, getTopologyId());
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
            }
            for (int i = 0; i < deviceIds_.size(); i++) {
                output.writeMessage(3, deviceIds_.get(i));
            }
            for (int i = 0; i < linkIds_.size(); i++) {
                output.writeMessage(4, linkIds_.get(i));
            }
            for (int i = 0; i < opticalLinkIds_.size(); i++) {
                output.writeMessage(5, opticalLinkIds_.get(i));
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            if (topologyId_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getTopologyId());
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
            }
            for (int i = 0; i < deviceIds_.size(); i++) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, deviceIds_.get(i));
            }
            for (int i = 0; i < linkIds_.size(); i++) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, linkIds_.get(i));
            }
            for (int i = 0; i < opticalLinkIds_.size(); i++) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(5, opticalLinkIds_.get(i));
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.Topology)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.Topology other = (context.ContextOuterClass.Topology) obj;
            if (hasTopologyId() != other.hasTopologyId())
                return false;
            if (hasTopologyId()) {
                if (!getTopologyId().equals(other.getTopologyId()))
                    return false;
            }
            if (!getName().equals(other.getName()))
                return false;
            if (!getDeviceIdsList().equals(other.getDeviceIdsList()))
                return false;
            if (!getLinkIdsList().equals(other.getLinkIdsList()))
                return false;
            if (!getOpticalLinkIdsList().equals(other.getOpticalLinkIdsList()))
                return false;
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            if (hasTopologyId()) {
                hash = (37 * hash) + TOPOLOGY_ID_FIELD_NUMBER;
                hash = (53 * hash) + getTopologyId().hashCode();
            }
            hash = (37 * hash) + NAME_FIELD_NUMBER;
            hash = (53 * hash) + getName().hashCode();
            if (getDeviceIdsCount() > 0) {
                hash = (37 * hash) + DEVICE_IDS_FIELD_NUMBER;
                hash = (53 * hash) + getDeviceIdsList().hashCode();
            }
            if (getLinkIdsCount() > 0) {
                hash = (37 * hash) + LINK_IDS_FIELD_NUMBER;
                hash = (53 * hash) + getLinkIdsList().hashCode();
            }
            if (getOpticalLinkIdsCount() > 0) {
                hash = (37 * hash) + OPTICAL_LINK_IDS_FIELD_NUMBER;
                hash = (53 * hash) + getOpticalLinkIdsList().hashCode();
            }
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.Topology parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.Topology parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.Topology parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.Topology parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.Topology parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.Topology parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.Topology parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.Topology parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.Topology parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.Topology parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.Topology parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.Topology parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.Topology prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code context.Topology}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.Topology)
        context.ContextOuterClass.TopologyOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_Topology_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_Topology_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Topology.class, context.ContextOuterClass.Topology.Builder.class);
            }

            // Construct using context.ContextOuterClass.Topology.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                topologyId_ = null;
                if (topologyIdBuilder_ != null) {
                    topologyIdBuilder_.dispose();
                    topologyIdBuilder_ = null;
                }
                name_ = "";
                if (deviceIdsBuilder_ == null) {
                    deviceIds_ = java.util.Collections.emptyList();
                } else {
                    deviceIds_ = null;
                    deviceIdsBuilder_.clear();
                }
                bitField0_ = (bitField0_ & ~0x00000004);
                if (linkIdsBuilder_ == null) {
                    linkIds_ = java.util.Collections.emptyList();
                } else {
                    linkIds_ = null;
                    linkIdsBuilder_.clear();
                }
                bitField0_ = (bitField0_ & ~0x00000008);
                if (opticalLinkIdsBuilder_ == null) {
                    opticalLinkIds_ = java.util.Collections.emptyList();
                } else {
                    opticalLinkIds_ = null;
                    opticalLinkIdsBuilder_.clear();
                }
                bitField0_ = (bitField0_ & ~0x00000010);
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_Topology_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.Topology getDefaultInstanceForType() {
                return context.ContextOuterClass.Topology.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.Topology build() {
                context.ContextOuterClass.Topology result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.Topology buildPartial() {
                context.ContextOuterClass.Topology result = new context.ContextOuterClass.Topology(this);
                buildPartialRepeatedFields(result);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartialRepeatedFields(context.ContextOuterClass.Topology result) {
                if (deviceIdsBuilder_ == null) {
                    if (((bitField0_ & 0x00000004) != 0)) {
                        deviceIds_ = java.util.Collections.unmodifiableList(deviceIds_);
                        bitField0_ = (bitField0_ & ~0x00000004);
                    }
                    result.deviceIds_ = deviceIds_;
                } else {
                    result.deviceIds_ = deviceIdsBuilder_.build();
                }
                if (linkIdsBuilder_ == null) {
                    if (((bitField0_ & 0x00000008) != 0)) {
                        linkIds_ = java.util.Collections.unmodifiableList(linkIds_);
                        bitField0_ = (bitField0_ & ~0x00000008);
                    }
                    result.linkIds_ = linkIds_;
                } else {
                    result.linkIds_ = linkIdsBuilder_.build();
                }
                if (opticalLinkIdsBuilder_ == null) {
                    if (((bitField0_ & 0x00000010) != 0)) {
                        opticalLinkIds_ = java.util.Collections.unmodifiableList(opticalLinkIds_);
                        bitField0_ = (bitField0_ & ~0x00000010);
                    }
                    result.opticalLinkIds_ = opticalLinkIds_;
                } else {
                    result.opticalLinkIds_ = opticalLinkIdsBuilder_.build();
                }
            }

            private void buildPartial0(context.ContextOuterClass.Topology result) {
                int from_bitField0_ = bitField0_;
                if (((from_bitField0_ & 0x00000001) != 0)) {
                    result.topologyId_ = topologyIdBuilder_ == null ? topologyId_ : topologyIdBuilder_.build();
                }
                if (((from_bitField0_ & 0x00000002) != 0)) {
                    result.name_ = name_;
                }
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.Topology) {
                    return mergeFrom((context.ContextOuterClass.Topology) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.Topology other) {
                if (other == context.ContextOuterClass.Topology.getDefaultInstance())
                    return this;
                if (other.hasTopologyId()) {
                    mergeTopologyId(other.getTopologyId());
                }
                if (!other.getName().isEmpty()) {
                    name_ = other.name_;
                    bitField0_ |= 0x00000002;
                    onChanged();
                }
                if (deviceIdsBuilder_ == null) {
                    if (!other.deviceIds_.isEmpty()) {
                        if (deviceIds_.isEmpty()) {
                            deviceIds_ = other.deviceIds_;
                            bitField0_ = (bitField0_ & ~0x00000004);
                        } else {
                            ensureDeviceIdsIsMutable();
                            deviceIds_.addAll(other.deviceIds_);
                        }
                        onChanged();
                    }
                } else {
                    if (!other.deviceIds_.isEmpty()) {
                        if (deviceIdsBuilder_.isEmpty()) {
                            deviceIdsBuilder_.dispose();
                            deviceIdsBuilder_ = null;
                            deviceIds_ = other.deviceIds_;
                            bitField0_ = (bitField0_ & ~0x00000004);
                            deviceIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getDeviceIdsFieldBuilder() : null;
                        } else {
                            deviceIdsBuilder_.addAllMessages(other.deviceIds_);
                        }
                    }
                }
                if (linkIdsBuilder_ == null) {
                    if (!other.linkIds_.isEmpty()) {
                        if (linkIds_.isEmpty()) {
                            linkIds_ = other.linkIds_;
                            bitField0_ = (bitField0_ & ~0x00000008);
                        } else {
                            ensureLinkIdsIsMutable();
                            linkIds_.addAll(other.linkIds_);
                        }
                        onChanged();
                    }
                } else {
                    if (!other.linkIds_.isEmpty()) {
                        if (linkIdsBuilder_.isEmpty()) {
                            linkIdsBuilder_.dispose();
                            linkIdsBuilder_ = null;
                            linkIds_ = other.linkIds_;
                            bitField0_ = (bitField0_ & ~0x00000008);
                            linkIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getLinkIdsFieldBuilder() : null;
                        } else {
                            linkIdsBuilder_.addAllMessages(other.linkIds_);
                        }
                    }
                }
                if (opticalLinkIdsBuilder_ == null) {
                    if (!other.opticalLinkIds_.isEmpty()) {
                        if (opticalLinkIds_.isEmpty()) {
                            opticalLinkIds_ = other.opticalLinkIds_;
                            bitField0_ = (bitField0_ & ~0x00000010);
                        } else {
                            ensureOpticalLinkIdsIsMutable();
                            opticalLinkIds_.addAll(other.opticalLinkIds_);
                        }
                        onChanged();
                    }
                } else {
                    if (!other.opticalLinkIds_.isEmpty()) {
                        if (opticalLinkIdsBuilder_.isEmpty()) {
                            opticalLinkIdsBuilder_.dispose();
                            opticalLinkIdsBuilder_ = null;
                            opticalLinkIds_ = other.opticalLinkIds_;
                            bitField0_ = (bitField0_ & ~0x00000010);
                            opticalLinkIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getOpticalLinkIdsFieldBuilder() : null;
                        } else {
                            opticalLinkIdsBuilder_.addAllMessages(other.opticalLinkIds_);
                        }
                    }
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 10:
                                {
                                    input.readMessage(getTopologyIdFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000001;
                                    break;
                                }
                            // case 10
                            case 18:
                                {
                                    name_ = input.readStringRequireUtf8();
                                    bitField0_ |= 0x00000002;
                                    break;
                                }
                            // case 18
                            case 26:
                                {
                                    context.ContextOuterClass.DeviceId m = input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry);
                                    if (deviceIdsBuilder_ == null) {
                                        ensureDeviceIdsIsMutable();
                                        deviceIds_.add(m);
                                    } else {
                                        deviceIdsBuilder_.addMessage(m);
                                    }
                                    break;
                                }
                            // case 26
                            case 34:
                                {
                                    context.ContextOuterClass.LinkId m = input.readMessage(context.ContextOuterClass.LinkId.parser(), extensionRegistry);
                                    if (linkIdsBuilder_ == null) {
                                        ensureLinkIdsIsMutable();
                                        linkIds_.add(m);
                                    } else {
                                        linkIdsBuilder_.addMessage(m);
                                    }
                                    break;
                                }
                            // case 34
                            case 42:
                                {
                                    context.ContextOuterClass.LinkId m = input.readMessage(context.ContextOuterClass.LinkId.parser(), extensionRegistry);
                                    if (opticalLinkIdsBuilder_ == null) {
                                        ensureOpticalLinkIdsIsMutable();
                                        opticalLinkIds_.add(m);
                                    } else {
                                        opticalLinkIdsBuilder_.addMessage(m);
                                    }
                                    break;
                                }
                            // case 42
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private context.ContextOuterClass.TopologyId topologyId_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder> topologyIdBuilder_;

            /**
             * <code>.context.TopologyId topology_id = 1;</code>
             * @return Whether the topologyId field is set.
             */
            public boolean hasTopologyId() {
                return ((bitField0_ & 0x00000001) != 0);
            }

            /**
             * <code>.context.TopologyId topology_id = 1;</code>
             * @return The topologyId.
             */
            public context.ContextOuterClass.TopologyId getTopologyId() {
                if (topologyIdBuilder_ == null) {
                    return topologyId_ == null ? context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_;
                } else {
                    return topologyIdBuilder_.getMessage();
                }
            }

            /**
             * <code>.context.TopologyId topology_id = 1;</code>
             */
            public Builder setTopologyId(context.ContextOuterClass.TopologyId value) {
                if (topologyIdBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    topologyId_ = value;
                } else {
                    topologyIdBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.TopologyId topology_id = 1;</code>
             */
            public Builder setTopologyId(context.ContextOuterClass.TopologyId.Builder builderForValue) {
                if (topologyIdBuilder_ == null) {
                    topologyId_ = builderForValue.build();
                } else {
                    topologyIdBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.TopologyId topology_id = 1;</code>
             */
            public Builder mergeTopologyId(context.ContextOuterClass.TopologyId value) {
                if (topologyIdBuilder_ == null) {
                    if (((bitField0_ & 0x00000001) != 0) && topologyId_ != null && topologyId_ != context.ContextOuterClass.TopologyId.getDefaultInstance()) {
                        getTopologyIdBuilder().mergeFrom(value);
                    } else {
                        topologyId_ = value;
                    }
                } else {
                    topologyIdBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.TopologyId topology_id = 1;</code>
             */
            public Builder clearTopologyId() {
                bitField0_ = (bitField0_ & ~0x00000001);
                topologyId_ = null;
                if (topologyIdBuilder_ != null) {
                    topologyIdBuilder_.dispose();
                    topologyIdBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.TopologyId topology_id = 1;</code>
             */
            public context.ContextOuterClass.TopologyId.Builder getTopologyIdBuilder() {
                bitField0_ |= 0x00000001;
                onChanged();
                return getTopologyIdFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.TopologyId topology_id = 1;</code>
             */
            public context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdOrBuilder() {
                if (topologyIdBuilder_ != null) {
                    return topologyIdBuilder_.getMessageOrBuilder();
                } else {
                    return topologyId_ == null ? context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_;
                }
            }

            /**
             * <code>.context.TopologyId topology_id = 1;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder> getTopologyIdFieldBuilder() {
                if (topologyIdBuilder_ == null) {
                    topologyIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder>(getTopologyId(), getParentForChildren(), isClean());
                    topologyId_ = null;
                }
                return topologyIdBuilder_;
            }

            private java.lang.Object name_ = "";

            /**
             * <code>string name = 2;</code>
             * @return The name.
             */
            public java.lang.String getName() {
                java.lang.Object ref = name_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    name_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }

            /**
             * <code>string name = 2;</code>
             * @return The bytes for name.
             */
            public com.google.protobuf.ByteString getNameBytes() {
                java.lang.Object ref = name_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                    name_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }

            /**
             * <code>string name = 2;</code>
             * @param value The name to set.
             * @return This builder for chaining.
             */
            public Builder setName(java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                name_ = value;
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>string name = 2;</code>
             * @return This builder for chaining.
             */
            public Builder clearName() {
                name_ = getDefaultInstance().getName();
                bitField0_ = (bitField0_ & ~0x00000002);
                onChanged();
                return this;
            }

            /**
             * <code>string name = 2;</code>
             * @param value The bytes for name to set.
             * @return This builder for chaining.
             */
            public Builder setNameBytes(com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);
                name_ = value;
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            private java.util.List<context.ContextOuterClass.DeviceId> deviceIds_ = java.util.Collections.emptyList();

            private void ensureDeviceIdsIsMutable() {
                if (!((bitField0_ & 0x00000004) != 0)) {
                    deviceIds_ = new java.util.ArrayList<context.ContextOuterClass.DeviceId>(deviceIds_);
                    bitField0_ |= 0x00000004;
                }
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> deviceIdsBuilder_;

            /**
             * <code>repeated .context.DeviceId device_ids = 3;</code>
             */
            public java.util.List<context.ContextOuterClass.DeviceId> getDeviceIdsList() {
                if (deviceIdsBuilder_ == null) {
                    return java.util.Collections.unmodifiableList(deviceIds_);
                } else {
                    return deviceIdsBuilder_.getMessageList();
                }
            }

            /**
             * <code>repeated .context.DeviceId device_ids = 3;</code>
             */
            public int getDeviceIdsCount() {
                if (deviceIdsBuilder_ == null) {
                    return deviceIds_.size();
                } else {
                    return deviceIdsBuilder_.getCount();
                }
            }

            /**
             * <code>repeated .context.DeviceId device_ids = 3;</code>
             */
            public context.ContextOuterClass.DeviceId getDeviceIds(int index) {
                if (deviceIdsBuilder_ == null) {
                    return deviceIds_.get(index);
                } else {
                    return deviceIdsBuilder_.getMessage(index);
                }
            }

            /**
             * <code>repeated .context.DeviceId device_ids = 3;</code>
             */
            public Builder setDeviceIds(int index, context.ContextOuterClass.DeviceId value) {
                if (deviceIdsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureDeviceIdsIsMutable();
                    deviceIds_.set(index, value);
                    onChanged();
                } else {
                    deviceIdsBuilder_.setMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.DeviceId device_ids = 3;</code>
             */
            public Builder setDeviceIds(int index, context.ContextOuterClass.DeviceId.Builder builderForValue) {
                if (deviceIdsBuilder_ == null) {
                    ensureDeviceIdsIsMutable();
                    deviceIds_.set(index, builderForValue.build());
                    onChanged();
                } else {
                    deviceIdsBuilder_.setMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.DeviceId device_ids = 3;</code>
             */
            public Builder addDeviceIds(context.ContextOuterClass.DeviceId value) {
                if (deviceIdsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureDeviceIdsIsMutable();
                    deviceIds_.add(value);
                    onChanged();
                } else {
                    deviceIdsBuilder_.addMessage(value);
                }
                return this;
            }

            /**
             * <code>repeated .context.DeviceId device_ids = 3;</code>
             */
            public Builder addDeviceIds(int index, context.ContextOuterClass.DeviceId value) {
                if (deviceIdsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureDeviceIdsIsMutable();
                    deviceIds_.add(index, value);
                    onChanged();
                } else {
                    deviceIdsBuilder_.addMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.DeviceId device_ids = 3;</code>
             */
            public Builder addDeviceIds(context.ContextOuterClass.DeviceId.Builder builderForValue) {
                if (deviceIdsBuilder_ == null) {
                    ensureDeviceIdsIsMutable();
                    deviceIds_.add(builderForValue.build());
                    onChanged();
                } else {
                    deviceIdsBuilder_.addMessage(builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.DeviceId device_ids = 3;</code>
             */
            public Builder addDeviceIds(int index, context.ContextOuterClass.DeviceId.Builder builderForValue) {
                if (deviceIdsBuilder_ == null) {
                    ensureDeviceIdsIsMutable();
                    deviceIds_.add(index, builderForValue.build());
                    onChanged();
                } else {
                    deviceIdsBuilder_.addMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.DeviceId device_ids = 3;</code>
             */
            public Builder addAllDeviceIds(java.lang.Iterable<? extends context.ContextOuterClass.DeviceId> values) {
                if (deviceIdsBuilder_ == null) {
                    ensureDeviceIdsIsMutable();
                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, deviceIds_);
                    onChanged();
                } else {
                    deviceIdsBuilder_.addAllMessages(values);
                }
                return this;
            }

            /**
             * <code>repeated .context.DeviceId device_ids = 3;</code>
             */
            public Builder clearDeviceIds() {
                if (deviceIdsBuilder_ == null) {
                    deviceIds_ = java.util.Collections.emptyList();
                    bitField0_ = (bitField0_ & ~0x00000004);
                    onChanged();
                } else {
                    deviceIdsBuilder_.clear();
                }
                return this;
            }

            /**
             * <code>repeated .context.DeviceId device_ids = 3;</code>
             */
            public Builder removeDeviceIds(int index) {
                if (deviceIdsBuilder_ == null) {
                    ensureDeviceIdsIsMutable();
                    deviceIds_.remove(index);
                    onChanged();
                } else {
                    deviceIdsBuilder_.remove(index);
                }
                return this;
            }

            /**
             * <code>repeated .context.DeviceId device_ids = 3;</code>
             */
            public context.ContextOuterClass.DeviceId.Builder getDeviceIdsBuilder(int index) {
                return getDeviceIdsFieldBuilder().getBuilder(index);
            }

            /**
             * <code>repeated .context.DeviceId device_ids = 3;</code>
             */
            public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdsOrBuilder(int index) {
                if (deviceIdsBuilder_ == null) {
                    return deviceIds_.get(index);
                } else {
                    return deviceIdsBuilder_.getMessageOrBuilder(index);
                }
            }

            /**
             * <code>repeated .context.DeviceId device_ids = 3;</code>
             */
            public java.util.List<? extends context.ContextOuterClass.DeviceIdOrBuilder> getDeviceIdsOrBuilderList() {
                if (deviceIdsBuilder_ != null) {
                    return deviceIdsBuilder_.getMessageOrBuilderList();
                } else {
                    return java.util.Collections.unmodifiableList(deviceIds_);
                }
            }

            /**
             * <code>repeated .context.DeviceId device_ids = 3;</code>
             */
            public context.ContextOuterClass.DeviceId.Builder addDeviceIdsBuilder() {
                return getDeviceIdsFieldBuilder().addBuilder(context.ContextOuterClass.DeviceId.getDefaultInstance());
            }

            /**
             * <code>repeated .context.DeviceId device_ids = 3;</code>
             */
            public context.ContextOuterClass.DeviceId.Builder addDeviceIdsBuilder(int index) {
                return getDeviceIdsFieldBuilder().addBuilder(index, context.ContextOuterClass.DeviceId.getDefaultInstance());
            }

            /**
             * <code>repeated .context.DeviceId device_ids = 3;</code>
             */
            public java.util.List<context.ContextOuterClass.DeviceId.Builder> getDeviceIdsBuilderList() {
                return getDeviceIdsFieldBuilder().getBuilderList();
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> getDeviceIdsFieldBuilder() {
                if (deviceIdsBuilder_ == null) {
                    deviceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder>(deviceIds_, ((bitField0_ & 0x00000004) != 0), getParentForChildren(), isClean());
                    deviceIds_ = null;
                }
                return deviceIdsBuilder_;
            }

            private java.util.List<context.ContextOuterClass.LinkId> linkIds_ = java.util.Collections.emptyList();

            private void ensureLinkIdsIsMutable() {
                if (!((bitField0_ & 0x00000008) != 0)) {
                    linkIds_ = new java.util.ArrayList<context.ContextOuterClass.LinkId>(linkIds_);
                    bitField0_ |= 0x00000008;
                }
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder> linkIdsBuilder_;

            /**
             * <code>repeated .context.LinkId link_ids = 4;</code>
             */
            public java.util.List<context.ContextOuterClass.LinkId> getLinkIdsList() {
                if (linkIdsBuilder_ == null) {
                    return java.util.Collections.unmodifiableList(linkIds_);
                } else {
                    return linkIdsBuilder_.getMessageList();
                }
            }

            /**
             * <code>repeated .context.LinkId link_ids = 4;</code>
             */
            public int getLinkIdsCount() {
                if (linkIdsBuilder_ == null) {
                    return linkIds_.size();
                } else {
                    return linkIdsBuilder_.getCount();
                }
            }

            /**
             * <code>repeated .context.LinkId link_ids = 4;</code>
             */
            public context.ContextOuterClass.LinkId getLinkIds(int index) {
                if (linkIdsBuilder_ == null) {
                    return linkIds_.get(index);
                } else {
                    return linkIdsBuilder_.getMessage(index);
                }
            }

            /**
             * <code>repeated .context.LinkId link_ids = 4;</code>
             */
            public Builder setLinkIds(int index, context.ContextOuterClass.LinkId value) {
                if (linkIdsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureLinkIdsIsMutable();
                    linkIds_.set(index, value);
                    onChanged();
                } else {
                    linkIdsBuilder_.setMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.LinkId link_ids = 4;</code>
             */
            public Builder setLinkIds(int index, context.ContextOuterClass.LinkId.Builder builderForValue) {
                if (linkIdsBuilder_ == null) {
                    ensureLinkIdsIsMutable();
                    linkIds_.set(index, builderForValue.build());
                    onChanged();
                } else {
                    linkIdsBuilder_.setMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.LinkId link_ids = 4;</code>
             */
            public Builder addLinkIds(context.ContextOuterClass.LinkId value) {
                if (linkIdsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureLinkIdsIsMutable();
                    linkIds_.add(value);
                    onChanged();
                } else {
                    linkIdsBuilder_.addMessage(value);
                }
                return this;
            }

            /**
             * <code>repeated .context.LinkId link_ids = 4;</code>
             */
            public Builder addLinkIds(int index, context.ContextOuterClass.LinkId value) {
                if (linkIdsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureLinkIdsIsMutable();
                    linkIds_.add(index, value);
                    onChanged();
                } else {
                    linkIdsBuilder_.addMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.LinkId link_ids = 4;</code>
             */
            public Builder addLinkIds(context.ContextOuterClass.LinkId.Builder builderForValue) {
                if (linkIdsBuilder_ == null) {
                    ensureLinkIdsIsMutable();
                    linkIds_.add(builderForValue.build());
                    onChanged();
                } else {
                    linkIdsBuilder_.addMessage(builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.LinkId link_ids = 4;</code>
             */
            public Builder addLinkIds(int index, context.ContextOuterClass.LinkId.Builder builderForValue) {
                if (linkIdsBuilder_ == null) {
                    ensureLinkIdsIsMutable();
                    linkIds_.add(index, builderForValue.build());
                    onChanged();
                } else {
                    linkIdsBuilder_.addMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.LinkId link_ids = 4;</code>
             */
            public Builder addAllLinkIds(java.lang.Iterable<? extends context.ContextOuterClass.LinkId> values) {
                if (linkIdsBuilder_ == null) {
                    ensureLinkIdsIsMutable();
                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, linkIds_);
                    onChanged();
                } else {
                    linkIdsBuilder_.addAllMessages(values);
                }
                return this;
            }

            /**
             * <code>repeated .context.LinkId link_ids = 4;</code>
             */
            public Builder clearLinkIds() {
                if (linkIdsBuilder_ == null) {
                    linkIds_ = java.util.Collections.emptyList();
                    bitField0_ = (bitField0_ & ~0x00000008);
                    onChanged();
                } else {
                    linkIdsBuilder_.clear();
                }
                return this;
            }

            /**
             * <code>repeated .context.LinkId link_ids = 4;</code>
             */
            public Builder removeLinkIds(int index) {
                if (linkIdsBuilder_ == null) {
                    ensureLinkIdsIsMutable();
                    linkIds_.remove(index);
                    onChanged();
                } else {
                    linkIdsBuilder_.remove(index);
                }
                return this;
            }

            /**
             * <code>repeated .context.LinkId link_ids = 4;</code>
             */
            public context.ContextOuterClass.LinkId.Builder getLinkIdsBuilder(int index) {
                return getLinkIdsFieldBuilder().getBuilder(index);
            }

            /**
             * <code>repeated .context.LinkId link_ids = 4;</code>
             */
            public context.ContextOuterClass.LinkIdOrBuilder getLinkIdsOrBuilder(int index) {
                if (linkIdsBuilder_ == null) {
                    return linkIds_.get(index);
                } else {
                    return linkIdsBuilder_.getMessageOrBuilder(index);
                }
            }

            /**
             * <code>repeated .context.LinkId link_ids = 4;</code>
             */
            public java.util.List<? extends context.ContextOuterClass.LinkIdOrBuilder> getLinkIdsOrBuilderList() {
                if (linkIdsBuilder_ != null) {
                    return linkIdsBuilder_.getMessageOrBuilderList();
                } else {
                    return java.util.Collections.unmodifiableList(linkIds_);
                }
            }

            /**
             * <code>repeated .context.LinkId link_ids = 4;</code>
             */
            public context.ContextOuterClass.LinkId.Builder addLinkIdsBuilder() {
                return getLinkIdsFieldBuilder().addBuilder(context.ContextOuterClass.LinkId.getDefaultInstance());
            }

            /**
             * <code>repeated .context.LinkId link_ids = 4;</code>
             */
            public context.ContextOuterClass.LinkId.Builder addLinkIdsBuilder(int index) {
                return getLinkIdsFieldBuilder().addBuilder(index, context.ContextOuterClass.LinkId.getDefaultInstance());
            }

            /**
             * <code>repeated .context.LinkId link_ids = 4;</code>
             */
            public java.util.List<context.ContextOuterClass.LinkId.Builder> getLinkIdsBuilderList() {
                return getLinkIdsFieldBuilder().getBuilderList();
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder> getLinkIdsFieldBuilder() {
                if (linkIdsBuilder_ == null) {
                    linkIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder>(linkIds_, ((bitField0_ & 0x00000008) != 0), getParentForChildren(), isClean());
                    linkIds_ = null;
                }
                return linkIdsBuilder_;
            }

            private java.util.List<context.ContextOuterClass.LinkId> opticalLinkIds_ = java.util.Collections.emptyList();

            private void ensureOpticalLinkIdsIsMutable() {
                if (!((bitField0_ & 0x00000010) != 0)) {
                    opticalLinkIds_ = new java.util.ArrayList<context.ContextOuterClass.LinkId>(opticalLinkIds_);
                    bitField0_ |= 0x00000010;
                }
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder> opticalLinkIdsBuilder_;

            /**
             * <code>repeated .context.LinkId optical_link_ids = 5;</code>
             */
            public java.util.List<context.ContextOuterClass.LinkId> getOpticalLinkIdsList() {
                if (opticalLinkIdsBuilder_ == null) {
                    return java.util.Collections.unmodifiableList(opticalLinkIds_);
                } else {
                    return opticalLinkIdsBuilder_.getMessageList();
                }
            }

            /**
             * <code>repeated .context.LinkId optical_link_ids = 5;</code>
             */
            public int getOpticalLinkIdsCount() {
                if (opticalLinkIdsBuilder_ == null) {
                    return opticalLinkIds_.size();
                } else {
                    return opticalLinkIdsBuilder_.getCount();
                }
            }

            /**
             * <code>repeated .context.LinkId optical_link_ids = 5;</code>
             */
            public context.ContextOuterClass.LinkId getOpticalLinkIds(int index) {
                if (opticalLinkIdsBuilder_ == null) {
                    return opticalLinkIds_.get(index);
                } else {
                    return opticalLinkIdsBuilder_.getMessage(index);
                }
            }

            /**
             * <code>repeated .context.LinkId optical_link_ids = 5;</code>
             */
            public Builder setOpticalLinkIds(int index, context.ContextOuterClass.LinkId value) {
                if (opticalLinkIdsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureOpticalLinkIdsIsMutable();
                    opticalLinkIds_.set(index, value);
                    onChanged();
                } else {
                    opticalLinkIdsBuilder_.setMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.LinkId optical_link_ids = 5;</code>
             */
            public Builder setOpticalLinkIds(int index, context.ContextOuterClass.LinkId.Builder builderForValue) {
                if (opticalLinkIdsBuilder_ == null) {
                    ensureOpticalLinkIdsIsMutable();
                    opticalLinkIds_.set(index, builderForValue.build());
                    onChanged();
                } else {
                    opticalLinkIdsBuilder_.setMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.LinkId optical_link_ids = 5;</code>
             */
            public Builder addOpticalLinkIds(context.ContextOuterClass.LinkId value) {
                if (opticalLinkIdsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureOpticalLinkIdsIsMutable();
                    opticalLinkIds_.add(value);
                    onChanged();
                } else {
                    opticalLinkIdsBuilder_.addMessage(value);
                }
                return this;
            }

            /**
             * <code>repeated .context.LinkId optical_link_ids = 5;</code>
             */
            public Builder addOpticalLinkIds(int index, context.ContextOuterClass.LinkId value) {
                if (opticalLinkIdsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureOpticalLinkIdsIsMutable();
                    opticalLinkIds_.add(index, value);
                    onChanged();
                } else {
                    opticalLinkIdsBuilder_.addMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.LinkId optical_link_ids = 5;</code>
             */
            public Builder addOpticalLinkIds(context.ContextOuterClass.LinkId.Builder builderForValue) {
                if (opticalLinkIdsBuilder_ == null) {
                    ensureOpticalLinkIdsIsMutable();
                    opticalLinkIds_.add(builderForValue.build());
                    onChanged();
                } else {
                    opticalLinkIdsBuilder_.addMessage(builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.LinkId optical_link_ids = 5;</code>
             */
            public Builder addOpticalLinkIds(int index, context.ContextOuterClass.LinkId.Builder builderForValue) {
                if (opticalLinkIdsBuilder_ == null) {
                    ensureOpticalLinkIdsIsMutable();
                    opticalLinkIds_.add(index, builderForValue.build());
                    onChanged();
                } else {
                    opticalLinkIdsBuilder_.addMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.LinkId optical_link_ids = 5;</code>
             */
            public Builder addAllOpticalLinkIds(java.lang.Iterable<? extends context.ContextOuterClass.LinkId> values) {
                if (opticalLinkIdsBuilder_ == null) {
                    ensureOpticalLinkIdsIsMutable();
                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, opticalLinkIds_);
                    onChanged();
                } else {
                    opticalLinkIdsBuilder_.addAllMessages(values);
                }
                return this;
            }

            /**
             * <code>repeated .context.LinkId optical_link_ids = 5;</code>
             */
            public Builder clearOpticalLinkIds() {
                if (opticalLinkIdsBuilder_ == null) {
                    opticalLinkIds_ = java.util.Collections.emptyList();
                    bitField0_ = (bitField0_ & ~0x00000010);
                    onChanged();
                } else {
                    opticalLinkIdsBuilder_.clear();
                }
                return this;
            }

            /**
             * <code>repeated .context.LinkId optical_link_ids = 5;</code>
             */
            public Builder removeOpticalLinkIds(int index) {
                if (opticalLinkIdsBuilder_ == null) {
                    ensureOpticalLinkIdsIsMutable();
                    opticalLinkIds_.remove(index);
                    onChanged();
                } else {
                    opticalLinkIdsBuilder_.remove(index);
                }
                return this;
            }

            /**
             * <code>repeated .context.LinkId optical_link_ids = 5;</code>
             */
            public context.ContextOuterClass.LinkId.Builder getOpticalLinkIdsBuilder(int index) {
                return getOpticalLinkIdsFieldBuilder().getBuilder(index);
            }

            /**
             * <code>repeated .context.LinkId optical_link_ids = 5;</code>
             */
            public context.ContextOuterClass.LinkIdOrBuilder getOpticalLinkIdsOrBuilder(int index) {
                if (opticalLinkIdsBuilder_ == null) {
                    return opticalLinkIds_.get(index);
                } else {
                    return opticalLinkIdsBuilder_.getMessageOrBuilder(index);
                }
            }

            /**
             * <code>repeated .context.LinkId optical_link_ids = 5;</code>
             */
            public java.util.List<? extends context.ContextOuterClass.LinkIdOrBuilder> getOpticalLinkIdsOrBuilderList() {
                if (opticalLinkIdsBuilder_ != null) {
                    return opticalLinkIdsBuilder_.getMessageOrBuilderList();
                } else {
                    return java.util.Collections.unmodifiableList(opticalLinkIds_);
                }
            }

            /**
             * <code>repeated .context.LinkId optical_link_ids = 5;</code>
             */
            public context.ContextOuterClass.LinkId.Builder addOpticalLinkIdsBuilder() {
                return getOpticalLinkIdsFieldBuilder().addBuilder(context.ContextOuterClass.LinkId.getDefaultInstance());
            }

            /**
             * <code>repeated .context.LinkId optical_link_ids = 5;</code>
             */
            public context.ContextOuterClass.LinkId.Builder addOpticalLinkIdsBuilder(int index) {
                return getOpticalLinkIdsFieldBuilder().addBuilder(index, context.ContextOuterClass.LinkId.getDefaultInstance());
            }

            /**
             * <code>repeated .context.LinkId optical_link_ids = 5;</code>
             */
            public java.util.List<context.ContextOuterClass.LinkId.Builder> getOpticalLinkIdsBuilderList() {
                return getOpticalLinkIdsFieldBuilder().getBuilderList();
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder> getOpticalLinkIdsFieldBuilder() {
                if (opticalLinkIdsBuilder_ == null) {
                    opticalLinkIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder>(opticalLinkIds_, ((bitField0_ & 0x00000010) != 0), getParentForChildren(), isClean());
                    opticalLinkIds_ = null;
                }
                return opticalLinkIdsBuilder_;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.Topology)
        }

        // @@protoc_insertion_point(class_scope:context.Topology)
        private static final context.ContextOuterClass.Topology DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.Topology();
        }

        public static context.ContextOuterClass.Topology getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<Topology> PARSER = new com.google.protobuf.AbstractParser<Topology>() {

            @java.lang.Override
            public Topology parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<Topology> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<Topology> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.Topology getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface TopologyDetailsOrBuilder extends // @@protoc_insertion_point(interface_extends:context.TopologyDetails)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>.context.TopologyId topology_id = 1;</code>
         * @return Whether the topologyId field is set.
         */
        boolean hasTopologyId();

        /**
         * <code>.context.TopologyId topology_id = 1;</code>
         * @return The topologyId.
         */
        context.ContextOuterClass.TopologyId getTopologyId();

        /**
         * <code>.context.TopologyId topology_id = 1;</code>
         */
        context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdOrBuilder();

        /**
         * <code>string name = 2;</code>
         * @return The name.
         */
        java.lang.String getName();

        /**
         * <code>string name = 2;</code>
         * @return The bytes for name.
         */
        com.google.protobuf.ByteString getNameBytes();

        /**
         * <code>repeated .context.Device devices = 3;</code>
         */
        java.util.List<context.ContextOuterClass.Device> getDevicesList();

        /**
         * <code>repeated .context.Device devices = 3;</code>
         */
        context.ContextOuterClass.Device getDevices(int index);

        /**
         * <code>repeated .context.Device devices = 3;</code>
         */
        int getDevicesCount();

        /**
         * <code>repeated .context.Device devices = 3;</code>
         */
        java.util.List<? extends context.ContextOuterClass.DeviceOrBuilder> getDevicesOrBuilderList();

        /**
         * <code>repeated .context.Device devices = 3;</code>
         */
        context.ContextOuterClass.DeviceOrBuilder getDevicesOrBuilder(int index);

        /**
         * <code>repeated .context.Link links = 4;</code>
         */
        java.util.List<context.ContextOuterClass.Link> getLinksList();

        /**
         * <code>repeated .context.Link links = 4;</code>
         */
        context.ContextOuterClass.Link getLinks(int index);

        /**
         * <code>repeated .context.Link links = 4;</code>
         */
        int getLinksCount();

        /**
         * <code>repeated .context.Link links = 4;</code>
         */
        java.util.List<? extends context.ContextOuterClass.LinkOrBuilder> getLinksOrBuilderList();

        /**
         * <code>repeated .context.Link links = 4;</code>
         */
        context.ContextOuterClass.LinkOrBuilder getLinksOrBuilder(int index);

        /**
         * <code>repeated .context.OpticalLink optical_links = 5;</code>
         */
        java.util.List<context.ContextOuterClass.OpticalLink> getOpticalLinksList();

        /**
         * <code>repeated .context.OpticalLink optical_links = 5;</code>
         */
        context.ContextOuterClass.OpticalLink getOpticalLinks(int index);

        /**
         * <code>repeated .context.OpticalLink optical_links = 5;</code>
         */
        int getOpticalLinksCount();

        /**
         * <code>repeated .context.OpticalLink optical_links = 5;</code>
         */
        java.util.List<? extends context.ContextOuterClass.OpticalLinkOrBuilder> getOpticalLinksOrBuilderList();

        /**
         * <code>repeated .context.OpticalLink optical_links = 5;</code>
         */
        context.ContextOuterClass.OpticalLinkOrBuilder getOpticalLinksOrBuilder(int index);
    }

    /**
     * Protobuf type {@code context.TopologyDetails}
     */
    public static final class TopologyDetails extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.TopologyDetails)
    TopologyDetailsOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use TopologyDetails.newBuilder() to construct.
        private TopologyDetails(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private TopologyDetails() {
            name_ = "";
            devices_ = java.util.Collections.emptyList();
            links_ = java.util.Collections.emptyList();
            opticalLinks_ = java.util.Collections.emptyList();
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new TopologyDetails();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_TopologyDetails_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_TopologyDetails_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.TopologyDetails.class, context.ContextOuterClass.TopologyDetails.Builder.class);
        }

        public static final int TOPOLOGY_ID_FIELD_NUMBER = 1;

        private context.ContextOuterClass.TopologyId topologyId_;

        /**
         * <code>.context.TopologyId topology_id = 1;</code>
         * @return Whether the topologyId field is set.
         */
        @java.lang.Override
        public boolean hasTopologyId() {
            return topologyId_ != null;
        }

        /**
         * <code>.context.TopologyId topology_id = 1;</code>
         * @return The topologyId.
         */
        @java.lang.Override
        public context.ContextOuterClass.TopologyId getTopologyId() {
            return topologyId_ == null ? context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_;
        }

        /**
         * <code>.context.TopologyId topology_id = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdOrBuilder() {
            return topologyId_ == null ? context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_;
        }

        public static final int NAME_FIELD_NUMBER = 2;

        @SuppressWarnings("serial")
        private volatile java.lang.Object name_ = "";

        /**
         * <code>string name = 2;</code>
         * @return The name.
         */
        @java.lang.Override
        public java.lang.String getName() {
            java.lang.Object ref = name_;
            if (ref instanceof java.lang.String) {
                return (java.lang.String) ref;
            } else {
                com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                java.lang.String s = bs.toStringUtf8();
                name_ = s;
                return s;
            }
        }

        /**
         * <code>string name = 2;</code>
         * @return The bytes for name.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString getNameBytes() {
            java.lang.Object ref = name_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                name_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int DEVICES_FIELD_NUMBER = 3;

        @SuppressWarnings("serial")
        private java.util.List<context.ContextOuterClass.Device> devices_;

        /**
         * <code>repeated .context.Device devices = 3;</code>
         */
        @java.lang.Override
        public java.util.List<context.ContextOuterClass.Device> getDevicesList() {
            return devices_;
        }

        /**
         * <code>repeated .context.Device devices = 3;</code>
         */
        @java.lang.Override
        public java.util.List<? extends context.ContextOuterClass.DeviceOrBuilder> getDevicesOrBuilderList() {
            return devices_;
        }

        /**
         * <code>repeated .context.Device devices = 3;</code>
         */
        @java.lang.Override
        public int getDevicesCount() {
            return devices_.size();
        }

        /**
         * <code>repeated .context.Device devices = 3;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.Device getDevices(int index) {
            return devices_.get(index);
        }

        /**
         * <code>repeated .context.Device devices = 3;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.DeviceOrBuilder getDevicesOrBuilder(int index) {
            return devices_.get(index);
        }

        public static final int LINKS_FIELD_NUMBER = 4;

        @SuppressWarnings("serial")
        private java.util.List<context.ContextOuterClass.Link> links_;

        /**
         * <code>repeated .context.Link links = 4;</code>
         */
        @java.lang.Override
        public java.util.List<context.ContextOuterClass.Link> getLinksList() {
            return links_;
        }

        /**
         * <code>repeated .context.Link links = 4;</code>
         */
        @java.lang.Override
        public java.util.List<? extends context.ContextOuterClass.LinkOrBuilder> getLinksOrBuilderList() {
            return links_;
        }

        /**
         * <code>repeated .context.Link links = 4;</code>
         */
        @java.lang.Override
        public int getLinksCount() {
            return links_.size();
        }

        /**
         * <code>repeated .context.Link links = 4;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.Link getLinks(int index) {
            return links_.get(index);
        }

        /**
         * <code>repeated .context.Link links = 4;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.LinkOrBuilder getLinksOrBuilder(int index) {
            return links_.get(index);
        }

        public static final int OPTICAL_LINKS_FIELD_NUMBER = 5;

        @SuppressWarnings("serial")
        private java.util.List<context.ContextOuterClass.OpticalLink> opticalLinks_;

        /**
         * <code>repeated .context.OpticalLink optical_links = 5;</code>
         */
        @java.lang.Override
        public java.util.List<context.ContextOuterClass.OpticalLink> getOpticalLinksList() {
            return opticalLinks_;
        }

        /**
         * <code>repeated .context.OpticalLink optical_links = 5;</code>
         */
        @java.lang.Override
        public java.util.List<? extends context.ContextOuterClass.OpticalLinkOrBuilder> getOpticalLinksOrBuilderList() {
            return opticalLinks_;
        }

        /**
         * <code>repeated .context.OpticalLink optical_links = 5;</code>
         */
        @java.lang.Override
        public int getOpticalLinksCount() {
            return opticalLinks_.size();
        }

        /**
         * <code>repeated .context.OpticalLink optical_links = 5;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.OpticalLink getOpticalLinks(int index) {
            return opticalLinks_.get(index);
        }

        /**
         * <code>repeated .context.OpticalLink optical_links = 5;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.OpticalLinkOrBuilder getOpticalLinksOrBuilder(int index) {
            return opticalLinks_.get(index);
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            if (topologyId_ != null) {
                output.writeMessage(1, getTopologyId());
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
            }
            for (int i = 0; i < devices_.size(); i++) {
                output.writeMessage(3, devices_.get(i));
            }
            for (int i = 0; i < links_.size(); i++) {
                output.writeMessage(4, links_.get(i));
            }
            for (int i = 0; i < opticalLinks_.size(); i++) {
                output.writeMessage(5, opticalLinks_.get(i));
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            if (topologyId_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getTopologyId());
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
            }
            for (int i = 0; i < devices_.size(); i++) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, devices_.get(i));
            }
            for (int i = 0; i < links_.size(); i++) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, links_.get(i));
            }
            for (int i = 0; i < opticalLinks_.size(); i++) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(5, opticalLinks_.get(i));
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.TopologyDetails)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.TopologyDetails other = (context.ContextOuterClass.TopologyDetails) obj;
            if (hasTopologyId() != other.hasTopologyId())
                return false;
            if (hasTopologyId()) {
                if (!getTopologyId().equals(other.getTopologyId()))
                    return false;
            }
            if (!getName().equals(other.getName()))
                return false;
            if (!getDevicesList().equals(other.getDevicesList()))
                return false;
            if (!getLinksList().equals(other.getLinksList()))
                return false;
            if (!getOpticalLinksList().equals(other.getOpticalLinksList()))
                return false;
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            if (hasTopologyId()) {
                hash = (37 * hash) + TOPOLOGY_ID_FIELD_NUMBER;
                hash = (53 * hash) + getTopologyId().hashCode();
            }
            hash = (37 * hash) + NAME_FIELD_NUMBER;
            hash = (53 * hash) + getName().hashCode();
            if (getDevicesCount() > 0) {
                hash = (37 * hash) + DEVICES_FIELD_NUMBER;
                hash = (53 * hash) + getDevicesList().hashCode();
            }
            if (getLinksCount() > 0) {
                hash = (37 * hash) + LINKS_FIELD_NUMBER;
                hash = (53 * hash) + getLinksList().hashCode();
            }
            if (getOpticalLinksCount() > 0) {
                hash = (37 * hash) + OPTICAL_LINKS_FIELD_NUMBER;
                hash = (53 * hash) + getOpticalLinksList().hashCode();
            }
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.TopologyDetails parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.TopologyDetails parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.TopologyDetails parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.TopologyDetails parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.TopologyDetails parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.TopologyDetails parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.TopologyDetails parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.TopologyDetails parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.TopologyDetails parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.TopologyDetails parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.TopologyDetails parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.TopologyDetails parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.TopologyDetails prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code context.TopologyDetails}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.TopologyDetails)
        context.ContextOuterClass.TopologyDetailsOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_TopologyDetails_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_TopologyDetails_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.TopologyDetails.class, context.ContextOuterClass.TopologyDetails.Builder.class);
            }

            // Construct using context.ContextOuterClass.TopologyDetails.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                topologyId_ = null;
                if (topologyIdBuilder_ != null) {
                    topologyIdBuilder_.dispose();
                    topologyIdBuilder_ = null;
                }
                name_ = "";
                if (devicesBuilder_ == null) {
                    devices_ = java.util.Collections.emptyList();
                } else {
                    devices_ = null;
                    devicesBuilder_.clear();
                }
                bitField0_ = (bitField0_ & ~0x00000004);
                if (linksBuilder_ == null) {
                    links_ = java.util.Collections.emptyList();
                } else {
                    links_ = null;
                    linksBuilder_.clear();
                }
                bitField0_ = (bitField0_ & ~0x00000008);
                if (opticalLinksBuilder_ == null) {
                    opticalLinks_ = java.util.Collections.emptyList();
                } else {
                    opticalLinks_ = null;
                    opticalLinksBuilder_.clear();
                }
                bitField0_ = (bitField0_ & ~0x00000010);
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_TopologyDetails_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.TopologyDetails getDefaultInstanceForType() {
                return context.ContextOuterClass.TopologyDetails.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.TopologyDetails build() {
                context.ContextOuterClass.TopologyDetails result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.TopologyDetails buildPartial() {
                context.ContextOuterClass.TopologyDetails result = new context.ContextOuterClass.TopologyDetails(this);
                buildPartialRepeatedFields(result);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartialRepeatedFields(context.ContextOuterClass.TopologyDetails result) {
                if (devicesBuilder_ == null) {
                    if (((bitField0_ & 0x00000004) != 0)) {
                        devices_ = java.util.Collections.unmodifiableList(devices_);
                        bitField0_ = (bitField0_ & ~0x00000004);
                    }
                    result.devices_ = devices_;
                } else {
                    result.devices_ = devicesBuilder_.build();
                }
                if (linksBuilder_ == null) {
                    if (((bitField0_ & 0x00000008) != 0)) {
                        links_ = java.util.Collections.unmodifiableList(links_);
                        bitField0_ = (bitField0_ & ~0x00000008);
                    }
                    result.links_ = links_;
                } else {
                    result.links_ = linksBuilder_.build();
                }
                if (opticalLinksBuilder_ == null) {
                    if (((bitField0_ & 0x00000010) != 0)) {
                        opticalLinks_ = java.util.Collections.unmodifiableList(opticalLinks_);
                        bitField0_ = (bitField0_ & ~0x00000010);
                    }
                    result.opticalLinks_ = opticalLinks_;
                } else {
                    result.opticalLinks_ = opticalLinksBuilder_.build();
                }
            }

            private void buildPartial0(context.ContextOuterClass.TopologyDetails result) {
                int from_bitField0_ = bitField0_;
                if (((from_bitField0_ & 0x00000001) != 0)) {
                    result.topologyId_ = topologyIdBuilder_ == null ? topologyId_ : topologyIdBuilder_.build();
                }
                if (((from_bitField0_ & 0x00000002) != 0)) {
                    result.name_ = name_;
                }
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.TopologyDetails) {
                    return mergeFrom((context.ContextOuterClass.TopologyDetails) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.TopologyDetails other) {
                if (other == context.ContextOuterClass.TopologyDetails.getDefaultInstance())
                    return this;
                if (other.hasTopologyId()) {
                    mergeTopologyId(other.getTopologyId());
                }
                if (!other.getName().isEmpty()) {
                    name_ = other.name_;
                    bitField0_ |= 0x00000002;
                    onChanged();
                }
                if (devicesBuilder_ == null) {
                    if (!other.devices_.isEmpty()) {
                        if (devices_.isEmpty()) {
                            devices_ = other.devices_;
                            bitField0_ = (bitField0_ & ~0x00000004);
                        } else {
                            ensureDevicesIsMutable();
                            devices_.addAll(other.devices_);
                        }
                        onChanged();
                    }
                } else {
                    if (!other.devices_.isEmpty()) {
                        if (devicesBuilder_.isEmpty()) {
                            devicesBuilder_.dispose();
                            devicesBuilder_ = null;
                            devices_ = other.devices_;
                            bitField0_ = (bitField0_ & ~0x00000004);
                            devicesBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getDevicesFieldBuilder() : null;
                        } else {
                            devicesBuilder_.addAllMessages(other.devices_);
                        }
                    }
                }
                if (linksBuilder_ == null) {
                    if (!other.links_.isEmpty()) {
                        if (links_.isEmpty()) {
                            links_ = other.links_;
                            bitField0_ = (bitField0_ & ~0x00000008);
                        } else {
                            ensureLinksIsMutable();
                            links_.addAll(other.links_);
                        }
                        onChanged();
                    }
                } else {
                    if (!other.links_.isEmpty()) {
                        if (linksBuilder_.isEmpty()) {
                            linksBuilder_.dispose();
                            linksBuilder_ = null;
                            links_ = other.links_;
                            bitField0_ = (bitField0_ & ~0x00000008);
                            linksBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getLinksFieldBuilder() : null;
                        } else {
                            linksBuilder_.addAllMessages(other.links_);
                        }
                    }
                }
                if (opticalLinksBuilder_ == null) {
                    if (!other.opticalLinks_.isEmpty()) {
                        if (opticalLinks_.isEmpty()) {
                            opticalLinks_ = other.opticalLinks_;
                            bitField0_ = (bitField0_ & ~0x00000010);
                        } else {
                            ensureOpticalLinksIsMutable();
                            opticalLinks_.addAll(other.opticalLinks_);
                        }
                        onChanged();
                    }
                } else {
                    if (!other.opticalLinks_.isEmpty()) {
                        if (opticalLinksBuilder_.isEmpty()) {
                            opticalLinksBuilder_.dispose();
                            opticalLinksBuilder_ = null;
                            opticalLinks_ = other.opticalLinks_;
                            bitField0_ = (bitField0_ & ~0x00000010);
                            opticalLinksBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getOpticalLinksFieldBuilder() : null;
                        } else {
                            opticalLinksBuilder_.addAllMessages(other.opticalLinks_);
                        }
                    }
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 10:
                                {
                                    input.readMessage(getTopologyIdFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000001;
                                    break;
                                }
                            // case 10
                            case 18:
                                {
                                    name_ = input.readStringRequireUtf8();
                                    bitField0_ |= 0x00000002;
                                    break;
                                }
                            // case 18
                            case 26:
                                {
                                    context.ContextOuterClass.Device m = input.readMessage(context.ContextOuterClass.Device.parser(), extensionRegistry);
                                    if (devicesBuilder_ == null) {
                                        ensureDevicesIsMutable();
                                        devices_.add(m);
                                    } else {
                                        devicesBuilder_.addMessage(m);
                                    }
                                    break;
                                }
                            // case 26
                            case 34:
                                {
                                    context.ContextOuterClass.Link m = input.readMessage(context.ContextOuterClass.Link.parser(), extensionRegistry);
                                    if (linksBuilder_ == null) {
                                        ensureLinksIsMutable();
                                        links_.add(m);
                                    } else {
                                        linksBuilder_.addMessage(m);
                                    }
                                    break;
                                }
                            // case 34
                            case 42:
                                {
                                    context.ContextOuterClass.OpticalLink m = input.readMessage(context.ContextOuterClass.OpticalLink.parser(), extensionRegistry);
                                    if (opticalLinksBuilder_ == null) {
                                        ensureOpticalLinksIsMutable();
                                        opticalLinks_.add(m);
                                    } else {
                                        opticalLinksBuilder_.addMessage(m);
                                    }
                                    break;
                                }
                            // case 42
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private context.ContextOuterClass.TopologyId topologyId_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder> topologyIdBuilder_;

            /**
             * <code>.context.TopologyId topology_id = 1;</code>
             * @return Whether the topologyId field is set.
             */
            public boolean hasTopologyId() {
                return ((bitField0_ & 0x00000001) != 0);
            }

            /**
             * <code>.context.TopologyId topology_id = 1;</code>
             * @return The topologyId.
             */
            public context.ContextOuterClass.TopologyId getTopologyId() {
                if (topologyIdBuilder_ == null) {
                    return topologyId_ == null ? context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_;
                } else {
                    return topologyIdBuilder_.getMessage();
                }
            }

            /**
             * <code>.context.TopologyId topology_id = 1;</code>
             */
            public Builder setTopologyId(context.ContextOuterClass.TopologyId value) {
                if (topologyIdBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    topologyId_ = value;
                } else {
                    topologyIdBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.TopologyId topology_id = 1;</code>
             */
            public Builder setTopologyId(context.ContextOuterClass.TopologyId.Builder builderForValue) {
                if (topologyIdBuilder_ == null) {
                    topologyId_ = builderForValue.build();
                } else {
                    topologyIdBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.TopologyId topology_id = 1;</code>
             */
            public Builder mergeTopologyId(context.ContextOuterClass.TopologyId value) {
                if (topologyIdBuilder_ == null) {
                    if (((bitField0_ & 0x00000001) != 0) && topologyId_ != null && topologyId_ != context.ContextOuterClass.TopologyId.getDefaultInstance()) {
                        getTopologyIdBuilder().mergeFrom(value);
                    } else {
                        topologyId_ = value;
                    }
                } else {
                    topologyIdBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.TopologyId topology_id = 1;</code>
             */
            public Builder clearTopologyId() {
                bitField0_ = (bitField0_ & ~0x00000001);
                topologyId_ = null;
                if (topologyIdBuilder_ != null) {
                    topologyIdBuilder_.dispose();
                    topologyIdBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.TopologyId topology_id = 1;</code>
             */
            public context.ContextOuterClass.TopologyId.Builder getTopologyIdBuilder() {
                bitField0_ |= 0x00000001;
                onChanged();
                return getTopologyIdFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.TopologyId topology_id = 1;</code>
             */
            public context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdOrBuilder() {
                if (topologyIdBuilder_ != null) {
                    return topologyIdBuilder_.getMessageOrBuilder();
                } else {
                    return topologyId_ == null ? context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_;
                }
            }

            /**
             * <code>.context.TopologyId topology_id = 1;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder> getTopologyIdFieldBuilder() {
                if (topologyIdBuilder_ == null) {
                    topologyIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder>(getTopologyId(), getParentForChildren(), isClean());
                    topologyId_ = null;
                }
                return topologyIdBuilder_;
            }

            private java.lang.Object name_ = "";

            /**
             * <code>string name = 2;</code>
             * @return The name.
             */
            public java.lang.String getName() {
                java.lang.Object ref = name_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    name_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }

            /**
             * <code>string name = 2;</code>
             * @return The bytes for name.
             */
            public com.google.protobuf.ByteString getNameBytes() {
                java.lang.Object ref = name_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                    name_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }

            /**
             * <code>string name = 2;</code>
             * @param value The name to set.
             * @return This builder for chaining.
             */
            public Builder setName(java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                name_ = value;
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>string name = 2;</code>
             * @return This builder for chaining.
             */
            public Builder clearName() {
                name_ = getDefaultInstance().getName();
                bitField0_ = (bitField0_ & ~0x00000002);
                onChanged();
                return this;
            }

            /**
             * <code>string name = 2;</code>
             * @param value The bytes for name to set.
             * @return This builder for chaining.
             */
            public Builder setNameBytes(com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);
                name_ = value;
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            private java.util.List<context.ContextOuterClass.Device> devices_ = java.util.Collections.emptyList();

            private void ensureDevicesIsMutable() {
                if (!((bitField0_ & 0x00000004) != 0)) {
                    devices_ = new java.util.ArrayList<context.ContextOuterClass.Device>(devices_);
                    bitField0_ |= 0x00000004;
                }
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Device, context.ContextOuterClass.Device.Builder, context.ContextOuterClass.DeviceOrBuilder> devicesBuilder_;

            /**
             * <code>repeated .context.Device devices = 3;</code>
             */
            public java.util.List<context.ContextOuterClass.Device> getDevicesList() {
                if (devicesBuilder_ == null) {
                    return java.util.Collections.unmodifiableList(devices_);
                } else {
                    return devicesBuilder_.getMessageList();
                }
            }

            /**
             * <code>repeated .context.Device devices = 3;</code>
             */
            public int getDevicesCount() {
                if (devicesBuilder_ == null) {
                    return devices_.size();
                } else {
                    return devicesBuilder_.getCount();
                }
            }

            /**
             * <code>repeated .context.Device devices = 3;</code>
             */
            public context.ContextOuterClass.Device getDevices(int index) {
                if (devicesBuilder_ == null) {
                    return devices_.get(index);
                } else {
                    return devicesBuilder_.getMessage(index);
                }
            }

            /**
             * <code>repeated .context.Device devices = 3;</code>
             */
            public Builder setDevices(int index, context.ContextOuterClass.Device value) {
                if (devicesBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureDevicesIsMutable();
                    devices_.set(index, value);
                    onChanged();
                } else {
                    devicesBuilder_.setMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.Device devices = 3;</code>
             */
            public Builder setDevices(int index, context.ContextOuterClass.Device.Builder builderForValue) {
                if (devicesBuilder_ == null) {
                    ensureDevicesIsMutable();
                    devices_.set(index, builderForValue.build());
                    onChanged();
                } else {
                    devicesBuilder_.setMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.Device devices = 3;</code>
             */
            public Builder addDevices(context.ContextOuterClass.Device value) {
                if (devicesBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureDevicesIsMutable();
                    devices_.add(value);
                    onChanged();
                } else {
                    devicesBuilder_.addMessage(value);
                }
                return this;
            }

            /**
             * <code>repeated .context.Device devices = 3;</code>
             */
            public Builder addDevices(int index, context.ContextOuterClass.Device value) {
                if (devicesBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureDevicesIsMutable();
                    devices_.add(index, value);
                    onChanged();
                } else {
                    devicesBuilder_.addMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.Device devices = 3;</code>
             */
            public Builder addDevices(context.ContextOuterClass.Device.Builder builderForValue) {
                if (devicesBuilder_ == null) {
                    ensureDevicesIsMutable();
                    devices_.add(builderForValue.build());
                    onChanged();
                } else {
                    devicesBuilder_.addMessage(builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.Device devices = 3;</code>
             */
            public Builder addDevices(int index, context.ContextOuterClass.Device.Builder builderForValue) {
                if (devicesBuilder_ == null) {
                    ensureDevicesIsMutable();
                    devices_.add(index, builderForValue.build());
                    onChanged();
                } else {
                    devicesBuilder_.addMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.Device devices = 3;</code>
             */
            public Builder addAllDevices(java.lang.Iterable<? extends context.ContextOuterClass.Device> values) {
                if (devicesBuilder_ == null) {
                    ensureDevicesIsMutable();
                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, devices_);
                    onChanged();
                } else {
                    devicesBuilder_.addAllMessages(values);
                }
                return this;
            }

            /**
             * <code>repeated .context.Device devices = 3;</code>
             */
            public Builder clearDevices() {
                if (devicesBuilder_ == null) {
                    devices_ = java.util.Collections.emptyList();
                    bitField0_ = (bitField0_ & ~0x00000004);
                    onChanged();
                } else {
                    devicesBuilder_.clear();
                }
                return this;
            }

            /**
             * <code>repeated .context.Device devices = 3;</code>
             */
            public Builder removeDevices(int index) {
                if (devicesBuilder_ == null) {
                    ensureDevicesIsMutable();
                    devices_.remove(index);
                    onChanged();
                } else {
                    devicesBuilder_.remove(index);
                }
                return this;
            }

            /**
             * <code>repeated .context.Device devices = 3;</code>
             */
            public context.ContextOuterClass.Device.Builder getDevicesBuilder(int index) {
                return getDevicesFieldBuilder().getBuilder(index);
            }

            /**
             * <code>repeated .context.Device devices = 3;</code>
             */
            public context.ContextOuterClass.DeviceOrBuilder getDevicesOrBuilder(int index) {
                if (devicesBuilder_ == null) {
                    return devices_.get(index);
                } else {
                    return devicesBuilder_.getMessageOrBuilder(index);
                }
            }

            /**
             * <code>repeated .context.Device devices = 3;</code>
             */
            public java.util.List<? extends context.ContextOuterClass.DeviceOrBuilder> getDevicesOrBuilderList() {
                if (devicesBuilder_ != null) {
                    return devicesBuilder_.getMessageOrBuilderList();
                } else {
                    return java.util.Collections.unmodifiableList(devices_);
                }
            }

            /**
             * <code>repeated .context.Device devices = 3;</code>
             */
            public context.ContextOuterClass.Device.Builder addDevicesBuilder() {
                return getDevicesFieldBuilder().addBuilder(context.ContextOuterClass.Device.getDefaultInstance());
            }

            /**
             * <code>repeated .context.Device devices = 3;</code>
             */
            public context.ContextOuterClass.Device.Builder addDevicesBuilder(int index) {
                return getDevicesFieldBuilder().addBuilder(index, context.ContextOuterClass.Device.getDefaultInstance());
            }

            /**
             * <code>repeated .context.Device devices = 3;</code>
             */
            public java.util.List<context.ContextOuterClass.Device.Builder> getDevicesBuilderList() {
                return getDevicesFieldBuilder().getBuilderList();
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Device, context.ContextOuterClass.Device.Builder, context.ContextOuterClass.DeviceOrBuilder> getDevicesFieldBuilder() {
                if (devicesBuilder_ == null) {
                    devicesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Device, context.ContextOuterClass.Device.Builder, context.ContextOuterClass.DeviceOrBuilder>(devices_, ((bitField0_ & 0x00000004) != 0), getParentForChildren(), isClean());
                    devices_ = null;
                }
                return devicesBuilder_;
            }

            private java.util.List<context.ContextOuterClass.Link> links_ = java.util.Collections.emptyList();

            private void ensureLinksIsMutable() {
                if (!((bitField0_ & 0x00000008) != 0)) {
                    links_ = new java.util.ArrayList<context.ContextOuterClass.Link>(links_);
                    bitField0_ |= 0x00000008;
                }
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Link, context.ContextOuterClass.Link.Builder, context.ContextOuterClass.LinkOrBuilder> linksBuilder_;

            /**
             * <code>repeated .context.Link links = 4;</code>
             */
            public java.util.List<context.ContextOuterClass.Link> getLinksList() {
                if (linksBuilder_ == null) {
                    return java.util.Collections.unmodifiableList(links_);
                } else {
                    return linksBuilder_.getMessageList();
                }
            }

            /**
             * <code>repeated .context.Link links = 4;</code>
             */
            public int getLinksCount() {
                if (linksBuilder_ == null) {
                    return links_.size();
                } else {
                    return linksBuilder_.getCount();
                }
            }

            /**
             * <code>repeated .context.Link links = 4;</code>
             */
            public context.ContextOuterClass.Link getLinks(int index) {
                if (linksBuilder_ == null) {
                    return links_.get(index);
                } else {
                    return linksBuilder_.getMessage(index);
                }
            }

            /**
             * <code>repeated .context.Link links = 4;</code>
             */
            public Builder setLinks(int index, context.ContextOuterClass.Link value) {
                if (linksBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureLinksIsMutable();
                    links_.set(index, value);
                    onChanged();
                } else {
                    linksBuilder_.setMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.Link links = 4;</code>
             */
            public Builder setLinks(int index, context.ContextOuterClass.Link.Builder builderForValue) {
                if (linksBuilder_ == null) {
                    ensureLinksIsMutable();
                    links_.set(index, builderForValue.build());
                    onChanged();
                } else {
                    linksBuilder_.setMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.Link links = 4;</code>
             */
            public Builder addLinks(context.ContextOuterClass.Link value) {
                if (linksBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureLinksIsMutable();
                    links_.add(value);
                    onChanged();
                } else {
                    linksBuilder_.addMessage(value);
                }
                return this;
            }

            /**
             * <code>repeated .context.Link links = 4;</code>
             */
            public Builder addLinks(int index, context.ContextOuterClass.Link value) {
                if (linksBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureLinksIsMutable();
                    links_.add(index, value);
                    onChanged();
                } else {
                    linksBuilder_.addMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.Link links = 4;</code>
             */
            public Builder addLinks(context.ContextOuterClass.Link.Builder builderForValue) {
                if (linksBuilder_ == null) {
                    ensureLinksIsMutable();
                    links_.add(builderForValue.build());
                    onChanged();
                } else {
                    linksBuilder_.addMessage(builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.Link links = 4;</code>
             */
            public Builder addLinks(int index, context.ContextOuterClass.Link.Builder builderForValue) {
                if (linksBuilder_ == null) {
                    ensureLinksIsMutable();
                    links_.add(index, builderForValue.build());
                    onChanged();
                } else {
                    linksBuilder_.addMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.Link links = 4;</code>
             */
            public Builder addAllLinks(java.lang.Iterable<? extends context.ContextOuterClass.Link> values) {
                if (linksBuilder_ == null) {
                    ensureLinksIsMutable();
                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, links_);
                    onChanged();
                } else {
                    linksBuilder_.addAllMessages(values);
                }
                return this;
            }

            /**
             * <code>repeated .context.Link links = 4;</code>
             */
            public Builder clearLinks() {
                if (linksBuilder_ == null) {
                    links_ = java.util.Collections.emptyList();
                    bitField0_ = (bitField0_ & ~0x00000008);
                    onChanged();
                } else {
                    linksBuilder_.clear();
                }
                return this;
            }

            /**
             * <code>repeated .context.Link links = 4;</code>
             */
            public Builder removeLinks(int index) {
                if (linksBuilder_ == null) {
                    ensureLinksIsMutable();
                    links_.remove(index);
                    onChanged();
                } else {
                    linksBuilder_.remove(index);
                }
                return this;
            }

            /**
             * <code>repeated .context.Link links = 4;</code>
             */
            public context.ContextOuterClass.Link.Builder getLinksBuilder(int index) {
                return getLinksFieldBuilder().getBuilder(index);
            }

            /**
             * <code>repeated .context.Link links = 4;</code>
             */
            public context.ContextOuterClass.LinkOrBuilder getLinksOrBuilder(int index) {
                if (linksBuilder_ == null) {
                    return links_.get(index);
                } else {
                    return linksBuilder_.getMessageOrBuilder(index);
                }
            }

            /**
             * <code>repeated .context.Link links = 4;</code>
             */
            public java.util.List<? extends context.ContextOuterClass.LinkOrBuilder> getLinksOrBuilderList() {
                if (linksBuilder_ != null) {
                    return linksBuilder_.getMessageOrBuilderList();
                } else {
                    return java.util.Collections.unmodifiableList(links_);
                }
            }

            /**
             * <code>repeated .context.Link links = 4;</code>
             */
            public context.ContextOuterClass.Link.Builder addLinksBuilder() {
                return getLinksFieldBuilder().addBuilder(context.ContextOuterClass.Link.getDefaultInstance());
            }

            /**
             * <code>repeated .context.Link links = 4;</code>
             */
            public context.ContextOuterClass.Link.Builder addLinksBuilder(int index) {
                return getLinksFieldBuilder().addBuilder(index, context.ContextOuterClass.Link.getDefaultInstance());
            }

            /**
             * <code>repeated .context.Link links = 4;</code>
             */
            public java.util.List<context.ContextOuterClass.Link.Builder> getLinksBuilderList() {
                return getLinksFieldBuilder().getBuilderList();
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Link, context.ContextOuterClass.Link.Builder, context.ContextOuterClass.LinkOrBuilder> getLinksFieldBuilder() {
                if (linksBuilder_ == null) {
                    linksBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Link, context.ContextOuterClass.Link.Builder, context.ContextOuterClass.LinkOrBuilder>(links_, ((bitField0_ & 0x00000008) != 0), getParentForChildren(), isClean());
                    links_ = null;
                }
                return linksBuilder_;
            }

            private java.util.List<context.ContextOuterClass.OpticalLink> opticalLinks_ = java.util.Collections.emptyList();

            private void ensureOpticalLinksIsMutable() {
                if (!((bitField0_ & 0x00000010) != 0)) {
                    opticalLinks_ = new java.util.ArrayList<context.ContextOuterClass.OpticalLink>(opticalLinks_);
                    bitField0_ |= 0x00000010;
                }
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.OpticalLink, context.ContextOuterClass.OpticalLink.Builder, context.ContextOuterClass.OpticalLinkOrBuilder> opticalLinksBuilder_;

            /**
             * <code>repeated .context.OpticalLink optical_links = 5;</code>
             */
            public java.util.List<context.ContextOuterClass.OpticalLink> getOpticalLinksList() {
                if (opticalLinksBuilder_ == null) {
                    return java.util.Collections.unmodifiableList(opticalLinks_);
                } else {
                    return opticalLinksBuilder_.getMessageList();
                }
            }

            /**
             * <code>repeated .context.OpticalLink optical_links = 5;</code>
             */
            public int getOpticalLinksCount() {
                if (opticalLinksBuilder_ == null) {
                    return opticalLinks_.size();
                } else {
                    return opticalLinksBuilder_.getCount();
                }
            }

            /**
             * <code>repeated .context.OpticalLink optical_links = 5;</code>
             */
            public context.ContextOuterClass.OpticalLink getOpticalLinks(int index) {
                if (opticalLinksBuilder_ == null) {
                    return opticalLinks_.get(index);
                } else {
                    return opticalLinksBuilder_.getMessage(index);
                }
            }

            /**
             * <code>repeated .context.OpticalLink optical_links = 5;</code>
             */
            public Builder setOpticalLinks(int index, context.ContextOuterClass.OpticalLink value) {
                if (opticalLinksBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureOpticalLinksIsMutable();
                    opticalLinks_.set(index, value);
                    onChanged();
                } else {
                    opticalLinksBuilder_.setMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.OpticalLink optical_links = 5;</code>
             */
            public Builder setOpticalLinks(int index, context.ContextOuterClass.OpticalLink.Builder builderForValue) {
                if (opticalLinksBuilder_ == null) {
                    ensureOpticalLinksIsMutable();
                    opticalLinks_.set(index, builderForValue.build());
                    onChanged();
                } else {
                    opticalLinksBuilder_.setMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.OpticalLink optical_links = 5;</code>
             */
            public Builder addOpticalLinks(context.ContextOuterClass.OpticalLink value) {
                if (opticalLinksBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureOpticalLinksIsMutable();
                    opticalLinks_.add(value);
                    onChanged();
                } else {
                    opticalLinksBuilder_.addMessage(value);
                }
                return this;
            }

            /**
             * <code>repeated .context.OpticalLink optical_links = 5;</code>
             */
            public Builder addOpticalLinks(int index, context.ContextOuterClass.OpticalLink value) {
                if (opticalLinksBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureOpticalLinksIsMutable();
                    opticalLinks_.add(index, value);
                    onChanged();
                } else {
                    opticalLinksBuilder_.addMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.OpticalLink optical_links = 5;</code>
             */
            public Builder addOpticalLinks(context.ContextOuterClass.OpticalLink.Builder builderForValue) {
                if (opticalLinksBuilder_ == null) {
                    ensureOpticalLinksIsMutable();
                    opticalLinks_.add(builderForValue.build());
                    onChanged();
                } else {
                    opticalLinksBuilder_.addMessage(builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.OpticalLink optical_links = 5;</code>
             */
            public Builder addOpticalLinks(int index, context.ContextOuterClass.OpticalLink.Builder builderForValue) {
                if (opticalLinksBuilder_ == null) {
                    ensureOpticalLinksIsMutable();
                    opticalLinks_.add(index, builderForValue.build());
                    onChanged();
                } else {
                    opticalLinksBuilder_.addMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.OpticalLink optical_links = 5;</code>
             */
            public Builder addAllOpticalLinks(java.lang.Iterable<? extends context.ContextOuterClass.OpticalLink> values) {
                if (opticalLinksBuilder_ == null) {
                    ensureOpticalLinksIsMutable();
                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, opticalLinks_);
                    onChanged();
                } else {
                    opticalLinksBuilder_.addAllMessages(values);
                }
                return this;
            }

            /**
             * <code>repeated .context.OpticalLink optical_links = 5;</code>
             */
            public Builder clearOpticalLinks() {
                if (opticalLinksBuilder_ == null) {
                    opticalLinks_ = java.util.Collections.emptyList();
                    bitField0_ = (bitField0_ & ~0x00000010);
                    onChanged();
                } else {
                    opticalLinksBuilder_.clear();
                }
                return this;
            }

            /**
             * <code>repeated .context.OpticalLink optical_links = 5;</code>
             */
            public Builder removeOpticalLinks(int index) {
                if (opticalLinksBuilder_ == null) {
                    ensureOpticalLinksIsMutable();
                    opticalLinks_.remove(index);
                    onChanged();
                } else {
                    opticalLinksBuilder_.remove(index);
                }
                return this;
            }

            /**
             * <code>repeated .context.OpticalLink optical_links = 5;</code>
             */
            public context.ContextOuterClass.OpticalLink.Builder getOpticalLinksBuilder(int index) {
                return getOpticalLinksFieldBuilder().getBuilder(index);
            }

            /**
             * <code>repeated .context.OpticalLink optical_links = 5;</code>
             */
            public context.ContextOuterClass.OpticalLinkOrBuilder getOpticalLinksOrBuilder(int index) {
                if (opticalLinksBuilder_ == null) {
                    return opticalLinks_.get(index);
                } else {
                    return opticalLinksBuilder_.getMessageOrBuilder(index);
                }
            }

            /**
             * <code>repeated .context.OpticalLink optical_links = 5;</code>
             */
            public java.util.List<? extends context.ContextOuterClass.OpticalLinkOrBuilder> getOpticalLinksOrBuilderList() {
                if (opticalLinksBuilder_ != null) {
                    return opticalLinksBuilder_.getMessageOrBuilderList();
                } else {
                    return java.util.Collections.unmodifiableList(opticalLinks_);
                }
            }

            /**
             * <code>repeated .context.OpticalLink optical_links = 5;</code>
             */
            public context.ContextOuterClass.OpticalLink.Builder addOpticalLinksBuilder() {
                return getOpticalLinksFieldBuilder().addBuilder(context.ContextOuterClass.OpticalLink.getDefaultInstance());
            }

            /**
             * <code>repeated .context.OpticalLink optical_links = 5;</code>
             */
            public context.ContextOuterClass.OpticalLink.Builder addOpticalLinksBuilder(int index) {
                return getOpticalLinksFieldBuilder().addBuilder(index, context.ContextOuterClass.OpticalLink.getDefaultInstance());
            }

            /**
             * <code>repeated .context.OpticalLink optical_links = 5;</code>
             */
            public java.util.List<context.ContextOuterClass.OpticalLink.Builder> getOpticalLinksBuilderList() {
                return getOpticalLinksFieldBuilder().getBuilderList();
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.OpticalLink, context.ContextOuterClass.OpticalLink.Builder, context.ContextOuterClass.OpticalLinkOrBuilder> getOpticalLinksFieldBuilder() {
                if (opticalLinksBuilder_ == null) {
                    opticalLinksBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.OpticalLink, context.ContextOuterClass.OpticalLink.Builder, context.ContextOuterClass.OpticalLinkOrBuilder>(opticalLinks_, ((bitField0_ & 0x00000010) != 0), getParentForChildren(), isClean());
                    opticalLinks_ = null;
                }
                return opticalLinksBuilder_;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.TopologyDetails)
        }

        // @@protoc_insertion_point(class_scope:context.TopologyDetails)
        private static final context.ContextOuterClass.TopologyDetails DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.TopologyDetails();
        }

        public static context.ContextOuterClass.TopologyDetails getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<TopologyDetails> PARSER = new com.google.protobuf.AbstractParser<TopologyDetails>() {

            @java.lang.Override
            public TopologyDetails parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<TopologyDetails> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<TopologyDetails> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.TopologyDetails getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface TopologyIdListOrBuilder extends // @@protoc_insertion_point(interface_extends:context.TopologyIdList)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>repeated .context.TopologyId topology_ids = 1;</code>
         */
        java.util.List<context.ContextOuterClass.TopologyId> getTopologyIdsList();

        /**
         * <code>repeated .context.TopologyId topology_ids = 1;</code>
         */
        context.ContextOuterClass.TopologyId getTopologyIds(int index);

        /**
         * <code>repeated .context.TopologyId topology_ids = 1;</code>
         */
        int getTopologyIdsCount();

        /**
         * <code>repeated .context.TopologyId topology_ids = 1;</code>
         */
        java.util.List<? extends context.ContextOuterClass.TopologyIdOrBuilder> getTopologyIdsOrBuilderList();

        /**
         * <code>repeated .context.TopologyId topology_ids = 1;</code>
         */
        context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdsOrBuilder(int index);
    }

    /**
     * Protobuf type {@code context.TopologyIdList}
     */
    public static final class TopologyIdList extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.TopologyIdList)
    TopologyIdListOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use TopologyIdList.newBuilder() to construct.
        private TopologyIdList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private TopologyIdList() {
            topologyIds_ = java.util.Collections.emptyList();
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new TopologyIdList();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_TopologyIdList_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_TopologyIdList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.TopologyIdList.class, context.ContextOuterClass.TopologyIdList.Builder.class);
        }

        public static final int TOPOLOGY_IDS_FIELD_NUMBER = 1;

        @SuppressWarnings("serial")
        private java.util.List<context.ContextOuterClass.TopologyId> topologyIds_;

        /**
         * <code>repeated .context.TopologyId topology_ids = 1;</code>
         */
        @java.lang.Override
        public java.util.List<context.ContextOuterClass.TopologyId> getTopologyIdsList() {
            return topologyIds_;
        }

        /**
         * <code>repeated .context.TopologyId topology_ids = 1;</code>
         */
        @java.lang.Override
        public java.util.List<? extends context.ContextOuterClass.TopologyIdOrBuilder> getTopologyIdsOrBuilderList() {
            return topologyIds_;
        }

        /**
         * <code>repeated .context.TopologyId topology_ids = 1;</code>
         */
        @java.lang.Override
        public int getTopologyIdsCount() {
            return topologyIds_.size();
        }

        /**
         * <code>repeated .context.TopologyId topology_ids = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.TopologyId getTopologyIds(int index) {
            return topologyIds_.get(index);
        }

        /**
         * <code>repeated .context.TopologyId topology_ids = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdsOrBuilder(int index) {
            return topologyIds_.get(index);
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            for (int i = 0; i < topologyIds_.size(); i++) {
                output.writeMessage(1, topologyIds_.get(i));
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            for (int i = 0; i < topologyIds_.size(); i++) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, topologyIds_.get(i));
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.TopologyIdList)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.TopologyIdList other = (context.ContextOuterClass.TopologyIdList) obj;
            if (!getTopologyIdsList().equals(other.getTopologyIdsList()))
                return false;
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            if (getTopologyIdsCount() > 0) {
                hash = (37 * hash) + TOPOLOGY_IDS_FIELD_NUMBER;
                hash = (53 * hash) + getTopologyIdsList().hashCode();
            }
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.TopologyIdList parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.TopologyIdList parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.TopologyIdList parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.TopologyIdList parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.TopologyIdList parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.TopologyIdList parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.TopologyIdList parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.TopologyIdList parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.TopologyIdList parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.TopologyIdList parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.TopologyIdList parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.TopologyIdList parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.TopologyIdList prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code context.TopologyIdList}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.TopologyIdList)
        context.ContextOuterClass.TopologyIdListOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_TopologyIdList_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_TopologyIdList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.TopologyIdList.class, context.ContextOuterClass.TopologyIdList.Builder.class);
            }

            // Construct using context.ContextOuterClass.TopologyIdList.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                if (topologyIdsBuilder_ == null) {
                    topologyIds_ = java.util.Collections.emptyList();
                } else {
                    topologyIds_ = null;
                    topologyIdsBuilder_.clear();
                }
                bitField0_ = (bitField0_ & ~0x00000001);
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_TopologyIdList_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.TopologyIdList getDefaultInstanceForType() {
                return context.ContextOuterClass.TopologyIdList.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.TopologyIdList build() {
                context.ContextOuterClass.TopologyIdList result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.TopologyIdList buildPartial() {
                context.ContextOuterClass.TopologyIdList result = new context.ContextOuterClass.TopologyIdList(this);
                buildPartialRepeatedFields(result);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartialRepeatedFields(context.ContextOuterClass.TopologyIdList result) {
                if (topologyIdsBuilder_ == null) {
                    if (((bitField0_ & 0x00000001) != 0)) {
                        topologyIds_ = java.util.Collections.unmodifiableList(topologyIds_);
                        bitField0_ = (bitField0_ & ~0x00000001);
                    }
                    result.topologyIds_ = topologyIds_;
                } else {
                    result.topologyIds_ = topologyIdsBuilder_.build();
                }
            }

            private void buildPartial0(context.ContextOuterClass.TopologyIdList result) {
                int from_bitField0_ = bitField0_;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.TopologyIdList) {
                    return mergeFrom((context.ContextOuterClass.TopologyIdList) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.TopologyIdList other) {
                if (other == context.ContextOuterClass.TopologyIdList.getDefaultInstance())
                    return this;
                if (topologyIdsBuilder_ == null) {
                    if (!other.topologyIds_.isEmpty()) {
                        if (topologyIds_.isEmpty()) {
                            topologyIds_ = other.topologyIds_;
                            bitField0_ = (bitField0_ & ~0x00000001);
                        } else {
                            ensureTopologyIdsIsMutable();
                            topologyIds_.addAll(other.topologyIds_);
                        }
                        onChanged();
                    }
                } else {
                    if (!other.topologyIds_.isEmpty()) {
                        if (topologyIdsBuilder_.isEmpty()) {
                            topologyIdsBuilder_.dispose();
                            topologyIdsBuilder_ = null;
                            topologyIds_ = other.topologyIds_;
                            bitField0_ = (bitField0_ & ~0x00000001);
                            topologyIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getTopologyIdsFieldBuilder() : null;
                        } else {
                            topologyIdsBuilder_.addAllMessages(other.topologyIds_);
                        }
                    }
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 10:
                                {
                                    context.ContextOuterClass.TopologyId m = input.readMessage(context.ContextOuterClass.TopologyId.parser(), extensionRegistry);
                                    if (topologyIdsBuilder_ == null) {
                                        ensureTopologyIdsIsMutable();
                                        topologyIds_.add(m);
                                    } else {
                                        topologyIdsBuilder_.addMessage(m);
                                    }
                                    break;
                                }
                            // case 10
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private java.util.List<context.ContextOuterClass.TopologyId> topologyIds_ = java.util.Collections.emptyList();

            private void ensureTopologyIdsIsMutable() {
                if (!((bitField0_ & 0x00000001) != 0)) {
                    topologyIds_ = new java.util.ArrayList<context.ContextOuterClass.TopologyId>(topologyIds_);
                    bitField0_ |= 0x00000001;
                }
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder> topologyIdsBuilder_;

            /**
             * <code>repeated .context.TopologyId topology_ids = 1;</code>
             */
            public java.util.List<context.ContextOuterClass.TopologyId> getTopologyIdsList() {
                if (topologyIdsBuilder_ == null) {
                    return java.util.Collections.unmodifiableList(topologyIds_);
                } else {
                    return topologyIdsBuilder_.getMessageList();
                }
            }

            /**
             * <code>repeated .context.TopologyId topology_ids = 1;</code>
             */
            public int getTopologyIdsCount() {
                if (topologyIdsBuilder_ == null) {
                    return topologyIds_.size();
                } else {
                    return topologyIdsBuilder_.getCount();
                }
            }

            /**
             * <code>repeated .context.TopologyId topology_ids = 1;</code>
             */
            public context.ContextOuterClass.TopologyId getTopologyIds(int index) {
                if (topologyIdsBuilder_ == null) {
                    return topologyIds_.get(index);
                } else {
                    return topologyIdsBuilder_.getMessage(index);
                }
            }

            /**
             * <code>repeated .context.TopologyId topology_ids = 1;</code>
             */
            public Builder setTopologyIds(int index, context.ContextOuterClass.TopologyId value) {
                if (topologyIdsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureTopologyIdsIsMutable();
                    topologyIds_.set(index, value);
                    onChanged();
                } else {
                    topologyIdsBuilder_.setMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.TopologyId topology_ids = 1;</code>
             */
            public Builder setTopologyIds(int index, context.ContextOuterClass.TopologyId.Builder builderForValue) {
                if (topologyIdsBuilder_ == null) {
                    ensureTopologyIdsIsMutable();
                    topologyIds_.set(index, builderForValue.build());
                    onChanged();
                } else {
                    topologyIdsBuilder_.setMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.TopologyId topology_ids = 1;</code>
             */
            public Builder addTopologyIds(context.ContextOuterClass.TopologyId value) {
                if (topologyIdsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureTopologyIdsIsMutable();
                    topologyIds_.add(value);
                    onChanged();
                } else {
                    topologyIdsBuilder_.addMessage(value);
                }
                return this;
            }

            /**
             * <code>repeated .context.TopologyId topology_ids = 1;</code>
             */
            public Builder addTopologyIds(int index, context.ContextOuterClass.TopologyId value) {
                if (topologyIdsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureTopologyIdsIsMutable();
                    topologyIds_.add(index, value);
                    onChanged();
                } else {
                    topologyIdsBuilder_.addMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.TopologyId topology_ids = 1;</code>
             */
            public Builder addTopologyIds(context.ContextOuterClass.TopologyId.Builder builderForValue) {
                if (topologyIdsBuilder_ == null) {
                    ensureTopologyIdsIsMutable();
                    topologyIds_.add(builderForValue.build());
                    onChanged();
                } else {
                    topologyIdsBuilder_.addMessage(builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.TopologyId topology_ids = 1;</code>
             */
            public Builder addTopologyIds(int index, context.ContextOuterClass.TopologyId.Builder builderForValue) {
                if (topologyIdsBuilder_ == null) {
                    ensureTopologyIdsIsMutable();
                    topologyIds_.add(index, builderForValue.build());
                    onChanged();
                } else {
                    topologyIdsBuilder_.addMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.TopologyId topology_ids = 1;</code>
             */
            public Builder addAllTopologyIds(java.lang.Iterable<? extends context.ContextOuterClass.TopologyId> values) {
                if (topologyIdsBuilder_ == null) {
                    ensureTopologyIdsIsMutable();
                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, topologyIds_);
                    onChanged();
                } else {
                    topologyIdsBuilder_.addAllMessages(values);
                }
                return this;
            }

            /**
             * <code>repeated .context.TopologyId topology_ids = 1;</code>
             */
            public Builder clearTopologyIds() {
                if (topologyIdsBuilder_ == null) {
                    topologyIds_ = java.util.Collections.emptyList();
                    bitField0_ = (bitField0_ & ~0x00000001);
                    onChanged();
                } else {
                    topologyIdsBuilder_.clear();
                }
                return this;
            }

            /**
             * <code>repeated .context.TopologyId topology_ids = 1;</code>
             */
            public Builder removeTopologyIds(int index) {
                if (topologyIdsBuilder_ == null) {
                    ensureTopologyIdsIsMutable();
                    topologyIds_.remove(index);
                    onChanged();
                } else {
                    topologyIdsBuilder_.remove(index);
                }
                return this;
            }

            /**
             * <code>repeated .context.TopologyId topology_ids = 1;</code>
             */
            public context.ContextOuterClass.TopologyId.Builder getTopologyIdsBuilder(int index) {
                return getTopologyIdsFieldBuilder().getBuilder(index);
            }

            /**
             * <code>repeated .context.TopologyId topology_ids = 1;</code>
             */
            public context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdsOrBuilder(int index) {
                if (topologyIdsBuilder_ == null) {
                    return topologyIds_.get(index);
                } else {
                    return topologyIdsBuilder_.getMessageOrBuilder(index);
                }
            }

            /**
             * <code>repeated .context.TopologyId topology_ids = 1;</code>
             */
            public java.util.List<? extends context.ContextOuterClass.TopologyIdOrBuilder> getTopologyIdsOrBuilderList() {
                if (topologyIdsBuilder_ != null) {
                    return topologyIdsBuilder_.getMessageOrBuilderList();
                } else {
                    return java.util.Collections.unmodifiableList(topologyIds_);
                }
            }

            /**
             * <code>repeated .context.TopologyId topology_ids = 1;</code>
             */
            public context.ContextOuterClass.TopologyId.Builder addTopologyIdsBuilder() {
                return getTopologyIdsFieldBuilder().addBuilder(context.ContextOuterClass.TopologyId.getDefaultInstance());
            }

            /**
             * <code>repeated .context.TopologyId topology_ids = 1;</code>
             */
            public context.ContextOuterClass.TopologyId.Builder addTopologyIdsBuilder(int index) {
                return getTopologyIdsFieldBuilder().addBuilder(index, context.ContextOuterClass.TopologyId.getDefaultInstance());
            }

            /**
             * <code>repeated .context.TopologyId topology_ids = 1;</code>
             */
            public java.util.List<context.ContextOuterClass.TopologyId.Builder> getTopologyIdsBuilderList() {
                return getTopologyIdsFieldBuilder().getBuilderList();
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder> getTopologyIdsFieldBuilder() {
                if (topologyIdsBuilder_ == null) {
                    topologyIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder>(topologyIds_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
                    topologyIds_ = null;
                }
                return topologyIdsBuilder_;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.TopologyIdList)
        }

        // @@protoc_insertion_point(class_scope:context.TopologyIdList)
        private static final context.ContextOuterClass.TopologyIdList DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.TopologyIdList();
        }

        public static context.ContextOuterClass.TopologyIdList getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<TopologyIdList> PARSER = new com.google.protobuf.AbstractParser<TopologyIdList>() {

            @java.lang.Override
            public TopologyIdList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<TopologyIdList> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<TopologyIdList> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.TopologyIdList getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface TopologyListOrBuilder extends // @@protoc_insertion_point(interface_extends:context.TopologyList)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>repeated .context.Topology topologies = 1;</code>
         */
        java.util.List<context.ContextOuterClass.Topology> getTopologiesList();

        /**
         * <code>repeated .context.Topology topologies = 1;</code>
         */
        context.ContextOuterClass.Topology getTopologies(int index);

        /**
         * <code>repeated .context.Topology topologies = 1;</code>
         */
        int getTopologiesCount();

        /**
         * <code>repeated .context.Topology topologies = 1;</code>
         */
        java.util.List<? extends context.ContextOuterClass.TopologyOrBuilder> getTopologiesOrBuilderList();

        /**
         * <code>repeated .context.Topology topologies = 1;</code>
         */
        context.ContextOuterClass.TopologyOrBuilder getTopologiesOrBuilder(int index);
    }

    /**
     * Protobuf type {@code context.TopologyList}
     */
    public static final class TopologyList extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.TopologyList)
    TopologyListOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use TopologyList.newBuilder() to construct.
        private TopologyList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private TopologyList() {
            topologies_ = java.util.Collections.emptyList();
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new TopologyList();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_TopologyList_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_TopologyList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.TopologyList.class, context.ContextOuterClass.TopologyList.Builder.class);
        }

        public static final int TOPOLOGIES_FIELD_NUMBER = 1;

        @SuppressWarnings("serial")
        private java.util.List<context.ContextOuterClass.Topology> topologies_;

        /**
         * <code>repeated .context.Topology topologies = 1;</code>
         */
        @java.lang.Override
        public java.util.List<context.ContextOuterClass.Topology> getTopologiesList() {
            return topologies_;
        }

        /**
         * <code>repeated .context.Topology topologies = 1;</code>
         */
        @java.lang.Override
        public java.util.List<? extends context.ContextOuterClass.TopologyOrBuilder> getTopologiesOrBuilderList() {
            return topologies_;
        }

        /**
         * <code>repeated .context.Topology topologies = 1;</code>
         */
        @java.lang.Override
        public int getTopologiesCount() {
            return topologies_.size();
        }

        /**
         * <code>repeated .context.Topology topologies = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.Topology getTopologies(int index) {
            return topologies_.get(index);
        }

        /**
         * <code>repeated .context.Topology topologies = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.TopologyOrBuilder getTopologiesOrBuilder(int index) {
            return topologies_.get(index);
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            for (int i = 0; i < topologies_.size(); i++) {
                output.writeMessage(1, topologies_.get(i));
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            for (int i = 0; i < topologies_.size(); i++) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, topologies_.get(i));
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.TopologyList)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.TopologyList other = (context.ContextOuterClass.TopologyList) obj;
            if (!getTopologiesList().equals(other.getTopologiesList()))
                return false;
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            if (getTopologiesCount() > 0) {
                hash = (37 * hash) + TOPOLOGIES_FIELD_NUMBER;
                hash = (53 * hash) + getTopologiesList().hashCode();
            }
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.TopologyList parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.TopologyList parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.TopologyList parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.TopologyList parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.TopologyList parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.TopologyList parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.TopologyList parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.TopologyList parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.TopologyList parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.TopologyList parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.TopologyList parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.TopologyList parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.TopologyList prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code context.TopologyList}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.TopologyList)
        context.ContextOuterClass.TopologyListOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_TopologyList_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_TopologyList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.TopologyList.class, context.ContextOuterClass.TopologyList.Builder.class);
            }

            // Construct using context.ContextOuterClass.TopologyList.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                if (topologiesBuilder_ == null) {
                    topologies_ = java.util.Collections.emptyList();
                } else {
                    topologies_ = null;
                    topologiesBuilder_.clear();
                }
                bitField0_ = (bitField0_ & ~0x00000001);
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_TopologyList_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.TopologyList getDefaultInstanceForType() {
                return context.ContextOuterClass.TopologyList.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.TopologyList build() {
                context.ContextOuterClass.TopologyList result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.TopologyList buildPartial() {
                context.ContextOuterClass.TopologyList result = new context.ContextOuterClass.TopologyList(this);
                buildPartialRepeatedFields(result);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartialRepeatedFields(context.ContextOuterClass.TopologyList result) {
                if (topologiesBuilder_ == null) {
                    if (((bitField0_ & 0x00000001) != 0)) {
                        topologies_ = java.util.Collections.unmodifiableList(topologies_);
                        bitField0_ = (bitField0_ & ~0x00000001);
                    }
                    result.topologies_ = topologies_;
                } else {
                    result.topologies_ = topologiesBuilder_.build();
                }
            }

            private void buildPartial0(context.ContextOuterClass.TopologyList result) {
                int from_bitField0_ = bitField0_;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.TopologyList) {
                    return mergeFrom((context.ContextOuterClass.TopologyList) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.TopologyList other) {
                if (other == context.ContextOuterClass.TopologyList.getDefaultInstance())
                    return this;
                if (topologiesBuilder_ == null) {
                    if (!other.topologies_.isEmpty()) {
                        if (topologies_.isEmpty()) {
                            topologies_ = other.topologies_;
                            bitField0_ = (bitField0_ & ~0x00000001);
                        } else {
                            ensureTopologiesIsMutable();
                            topologies_.addAll(other.topologies_);
                        }
                        onChanged();
                    }
                } else {
                    if (!other.topologies_.isEmpty()) {
                        if (topologiesBuilder_.isEmpty()) {
                            topologiesBuilder_.dispose();
                            topologiesBuilder_ = null;
                            topologies_ = other.topologies_;
                            bitField0_ = (bitField0_ & ~0x00000001);
                            topologiesBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getTopologiesFieldBuilder() : null;
                        } else {
                            topologiesBuilder_.addAllMessages(other.topologies_);
                        }
                    }
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 10:
                                {
                                    context.ContextOuterClass.Topology m = input.readMessage(context.ContextOuterClass.Topology.parser(), extensionRegistry);
                                    if (topologiesBuilder_ == null) {
                                        ensureTopologiesIsMutable();
                                        topologies_.add(m);
                                    } else {
                                        topologiesBuilder_.addMessage(m);
                                    }
                                    break;
                                }
                            // case 10
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private java.util.List<context.ContextOuterClass.Topology> topologies_ = java.util.Collections.emptyList();

            private void ensureTopologiesIsMutable() {
                if (!((bitField0_ & 0x00000001) != 0)) {
                    topologies_ = new java.util.ArrayList<context.ContextOuterClass.Topology>(topologies_);
                    bitField0_ |= 0x00000001;
                }
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Topology, context.ContextOuterClass.Topology.Builder, context.ContextOuterClass.TopologyOrBuilder> topologiesBuilder_;

            /**
             * <code>repeated .context.Topology topologies = 1;</code>
             */
            public java.util.List<context.ContextOuterClass.Topology> getTopologiesList() {
                if (topologiesBuilder_ == null) {
                    return java.util.Collections.unmodifiableList(topologies_);
                } else {
                    return topologiesBuilder_.getMessageList();
                }
            }

            /**
             * <code>repeated .context.Topology topologies = 1;</code>
             */
            public int getTopologiesCount() {
                if (topologiesBuilder_ == null) {
                    return topologies_.size();
                } else {
                    return topologiesBuilder_.getCount();
                }
            }

            /**
             * <code>repeated .context.Topology topologies = 1;</code>
             */
            public context.ContextOuterClass.Topology getTopologies(int index) {
                if (topologiesBuilder_ == null) {
                    return topologies_.get(index);
                } else {
                    return topologiesBuilder_.getMessage(index);
                }
            }

            /**
             * <code>repeated .context.Topology topologies = 1;</code>
             */
            public Builder setTopologies(int index, context.ContextOuterClass.Topology value) {
                if (topologiesBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureTopologiesIsMutable();
                    topologies_.set(index, value);
                    onChanged();
                } else {
                    topologiesBuilder_.setMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.Topology topologies = 1;</code>
             */
            public Builder setTopologies(int index, context.ContextOuterClass.Topology.Builder builderForValue) {
                if (topologiesBuilder_ == null) {
                    ensureTopologiesIsMutable();
                    topologies_.set(index, builderForValue.build());
                    onChanged();
                } else {
                    topologiesBuilder_.setMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.Topology topologies = 1;</code>
             */
            public Builder addTopologies(context.ContextOuterClass.Topology value) {
                if (topologiesBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureTopologiesIsMutable();
                    topologies_.add(value);
                    onChanged();
                } else {
                    topologiesBuilder_.addMessage(value);
                }
                return this;
            }

            /**
             * <code>repeated .context.Topology topologies = 1;</code>
             */
            public Builder addTopologies(int index, context.ContextOuterClass.Topology value) {
                if (topologiesBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureTopologiesIsMutable();
                    topologies_.add(index, value);
                    onChanged();
                } else {
                    topologiesBuilder_.addMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.Topology topologies = 1;</code>
             */
            public Builder addTopologies(context.ContextOuterClass.Topology.Builder builderForValue) {
                if (topologiesBuilder_ == null) {
                    ensureTopologiesIsMutable();
                    topologies_.add(builderForValue.build());
                    onChanged();
                } else {
                    topologiesBuilder_.addMessage(builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.Topology topologies = 1;</code>
             */
            public Builder addTopologies(int index, context.ContextOuterClass.Topology.Builder builderForValue) {
                if (topologiesBuilder_ == null) {
                    ensureTopologiesIsMutable();
                    topologies_.add(index, builderForValue.build());
                    onChanged();
                } else {
                    topologiesBuilder_.addMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.Topology topologies = 1;</code>
             */
            public Builder addAllTopologies(java.lang.Iterable<? extends context.ContextOuterClass.Topology> values) {
                if (topologiesBuilder_ == null) {
                    ensureTopologiesIsMutable();
                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, topologies_);
                    onChanged();
                } else {
                    topologiesBuilder_.addAllMessages(values);
                }
                return this;
            }

            /**
             * <code>repeated .context.Topology topologies = 1;</code>
             */
            public Builder clearTopologies() {
                if (topologiesBuilder_ == null) {
                    topologies_ = java.util.Collections.emptyList();
                    bitField0_ = (bitField0_ & ~0x00000001);
                    onChanged();
                } else {
                    topologiesBuilder_.clear();
                }
                return this;
            }

            /**
             * <code>repeated .context.Topology topologies = 1;</code>
             */
            public Builder removeTopologies(int index) {
                if (topologiesBuilder_ == null) {
                    ensureTopologiesIsMutable();
                    topologies_.remove(index);
                    onChanged();
                } else {
                    topologiesBuilder_.remove(index);
                }
                return this;
            }

            /**
             * <code>repeated .context.Topology topologies = 1;</code>
             */
            public context.ContextOuterClass.Topology.Builder getTopologiesBuilder(int index) {
                return getTopologiesFieldBuilder().getBuilder(index);
            }

            /**
             * <code>repeated .context.Topology topologies = 1;</code>
             */
            public context.ContextOuterClass.TopologyOrBuilder getTopologiesOrBuilder(int index) {
                if (topologiesBuilder_ == null) {
                    return topologies_.get(index);
                } else {
                    return topologiesBuilder_.getMessageOrBuilder(index);
                }
            }

            /**
             * <code>repeated .context.Topology topologies = 1;</code>
             */
            public java.util.List<? extends context.ContextOuterClass.TopologyOrBuilder> getTopologiesOrBuilderList() {
                if (topologiesBuilder_ != null) {
                    return topologiesBuilder_.getMessageOrBuilderList();
                } else {
                    return java.util.Collections.unmodifiableList(topologies_);
                }
            }

            /**
             * <code>repeated .context.Topology topologies = 1;</code>
             */
            public context.ContextOuterClass.Topology.Builder addTopologiesBuilder() {
                return getTopologiesFieldBuilder().addBuilder(context.ContextOuterClass.Topology.getDefaultInstance());
            }

            /**
             * <code>repeated .context.Topology topologies = 1;</code>
             */
            public context.ContextOuterClass.Topology.Builder addTopologiesBuilder(int index) {
                return getTopologiesFieldBuilder().addBuilder(index, context.ContextOuterClass.Topology.getDefaultInstance());
            }

            /**
             * <code>repeated .context.Topology topologies = 1;</code>
             */
            public java.util.List<context.ContextOuterClass.Topology.Builder> getTopologiesBuilderList() {
                return getTopologiesFieldBuilder().getBuilderList();
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Topology, context.ContextOuterClass.Topology.Builder, context.ContextOuterClass.TopologyOrBuilder> getTopologiesFieldBuilder() {
                if (topologiesBuilder_ == null) {
                    topologiesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Topology, context.ContextOuterClass.Topology.Builder, context.ContextOuterClass.TopologyOrBuilder>(topologies_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
                    topologies_ = null;
                }
                return topologiesBuilder_;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.TopologyList)
        }

        // @@protoc_insertion_point(class_scope:context.TopologyList)
        private static final context.ContextOuterClass.TopologyList DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.TopologyList();
        }

        public static context.ContextOuterClass.TopologyList getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<TopologyList> PARSER = new com.google.protobuf.AbstractParser<TopologyList>() {

            @java.lang.Override
            public TopologyList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<TopologyList> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<TopologyList> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.TopologyList getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface TopologyEventOrBuilder extends // @@protoc_insertion_point(interface_extends:context.TopologyEvent)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>.context.Event event = 1;</code>
         * @return Whether the event field is set.
         */
        boolean hasEvent();

        /**
         * <code>.context.Event event = 1;</code>
         * @return The event.
         */
        context.ContextOuterClass.Event getEvent();

        /**
         * <code>.context.Event event = 1;</code>
         */
        context.ContextOuterClass.EventOrBuilder getEventOrBuilder();

        /**
         * <code>.context.TopologyId topology_id = 2;</code>
         * @return Whether the topologyId field is set.
         */
        boolean hasTopologyId();

        /**
         * <code>.context.TopologyId topology_id = 2;</code>
         * @return The topologyId.
         */
        context.ContextOuterClass.TopologyId getTopologyId();

        /**
         * <code>.context.TopologyId topology_id = 2;</code>
         */
        context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdOrBuilder();
    }

    /**
     * Protobuf type {@code context.TopologyEvent}
     */
    public static final class TopologyEvent extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.TopologyEvent)
    TopologyEventOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use TopologyEvent.newBuilder() to construct.
        private TopologyEvent(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private TopologyEvent() {
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new TopologyEvent();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_TopologyEvent_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_TopologyEvent_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.TopologyEvent.class, context.ContextOuterClass.TopologyEvent.Builder.class);
        }

        public static final int EVENT_FIELD_NUMBER = 1;

        private context.ContextOuterClass.Event event_;

        /**
         * <code>.context.Event event = 1;</code>
         * @return Whether the event field is set.
         */
        @java.lang.Override
        public boolean hasEvent() {
            return event_ != null;
        }

        /**
         * <code>.context.Event event = 1;</code>
         * @return The event.
         */
        @java.lang.Override
        public context.ContextOuterClass.Event getEvent() {
            return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
        }

        /**
         * <code>.context.Event event = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
            return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
        }

        public static final int TOPOLOGY_ID_FIELD_NUMBER = 2;

        private context.ContextOuterClass.TopologyId topologyId_;

        /**
         * <code>.context.TopologyId topology_id = 2;</code>
         * @return Whether the topologyId field is set.
         */
        @java.lang.Override
        public boolean hasTopologyId() {
            return topologyId_ != null;
        }

        /**
         * <code>.context.TopologyId topology_id = 2;</code>
         * @return The topologyId.
         */
        @java.lang.Override
        public context.ContextOuterClass.TopologyId getTopologyId() {
            return topologyId_ == null ? context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_;
        }

        /**
         * <code>.context.TopologyId topology_id = 2;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdOrBuilder() {
            return topologyId_ == null ? context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_;
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            if (event_ != null) {
                output.writeMessage(1, getEvent());
            }
            if (topologyId_ != null) {
                output.writeMessage(2, getTopologyId());
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            if (event_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getEvent());
            }
            if (topologyId_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getTopologyId());
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.TopologyEvent)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.TopologyEvent other = (context.ContextOuterClass.TopologyEvent) obj;
            if (hasEvent() != other.hasEvent())
                return false;
            if (hasEvent()) {
                if (!getEvent().equals(other.getEvent()))
                    return false;
            }
            if (hasTopologyId() != other.hasTopologyId())
                return false;
            if (hasTopologyId()) {
                if (!getTopologyId().equals(other.getTopologyId()))
                    return false;
            }
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            if (hasEvent()) {
                hash = (37 * hash) + EVENT_FIELD_NUMBER;
                hash = (53 * hash) + getEvent().hashCode();
            }
            if (hasTopologyId()) {
                hash = (37 * hash) + TOPOLOGY_ID_FIELD_NUMBER;
                hash = (53 * hash) + getTopologyId().hashCode();
            }
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.TopologyEvent parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.TopologyEvent parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.TopologyEvent parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.TopologyEvent parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.TopologyEvent parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.TopologyEvent parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.TopologyEvent parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.TopologyEvent parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.TopologyEvent parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.TopologyEvent parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.TopologyEvent parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.TopologyEvent parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.TopologyEvent prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code context.TopologyEvent}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.TopologyEvent)
        context.ContextOuterClass.TopologyEventOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_TopologyEvent_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_TopologyEvent_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.TopologyEvent.class, context.ContextOuterClass.TopologyEvent.Builder.class);
            }

            // Construct using context.ContextOuterClass.TopologyEvent.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                event_ = null;
                if (eventBuilder_ != null) {
                    eventBuilder_.dispose();
                    eventBuilder_ = null;
                }
                topologyId_ = null;
                if (topologyIdBuilder_ != null) {
                    topologyIdBuilder_.dispose();
                    topologyIdBuilder_ = null;
                }
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_TopologyEvent_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.TopologyEvent getDefaultInstanceForType() {
                return context.ContextOuterClass.TopologyEvent.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.TopologyEvent build() {
                context.ContextOuterClass.TopologyEvent result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.TopologyEvent buildPartial() {
                context.ContextOuterClass.TopologyEvent result = new context.ContextOuterClass.TopologyEvent(this);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartial0(context.ContextOuterClass.TopologyEvent result) {
                int from_bitField0_ = bitField0_;
                if (((from_bitField0_ & 0x00000001) != 0)) {
                    result.event_ = eventBuilder_ == null ? event_ : eventBuilder_.build();
                }
                if (((from_bitField0_ & 0x00000002) != 0)) {
                    result.topologyId_ = topologyIdBuilder_ == null ? topologyId_ : topologyIdBuilder_.build();
                }
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.TopologyEvent) {
                    return mergeFrom((context.ContextOuterClass.TopologyEvent) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.TopologyEvent other) {
                if (other == context.ContextOuterClass.TopologyEvent.getDefaultInstance())
                    return this;
                if (other.hasEvent()) {
                    mergeEvent(other.getEvent());
                }
                if (other.hasTopologyId()) {
                    mergeTopologyId(other.getTopologyId());
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 10:
                                {
                                    input.readMessage(getEventFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000001;
                                    break;
                                }
                            // case 10
                            case 18:
                                {
                                    input.readMessage(getTopologyIdFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000002;
                                    break;
                                }
                            // case 18
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private context.ContextOuterClass.Event event_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> eventBuilder_;

            /**
             * <code>.context.Event event = 1;</code>
             * @return Whether the event field is set.
             */
            public boolean hasEvent() {
                return ((bitField0_ & 0x00000001) != 0);
            }

            /**
             * <code>.context.Event event = 1;</code>
             * @return The event.
             */
            public context.ContextOuterClass.Event getEvent() {
                if (eventBuilder_ == null) {
                    return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
                } else {
                    return eventBuilder_.getMessage();
                }
            }

            /**
             * <code>.context.Event event = 1;</code>
             */
            public Builder setEvent(context.ContextOuterClass.Event value) {
                if (eventBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    event_ = value;
                } else {
                    eventBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.Event event = 1;</code>
             */
            public Builder setEvent(context.ContextOuterClass.Event.Builder builderForValue) {
                if (eventBuilder_ == null) {
                    event_ = builderForValue.build();
                } else {
                    eventBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.Event event = 1;</code>
             */
            public Builder mergeEvent(context.ContextOuterClass.Event value) {
                if (eventBuilder_ == null) {
                    if (((bitField0_ & 0x00000001) != 0) && event_ != null && event_ != context.ContextOuterClass.Event.getDefaultInstance()) {
                        getEventBuilder().mergeFrom(value);
                    } else {
                        event_ = value;
                    }
                } else {
                    eventBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.Event event = 1;</code>
             */
            public Builder clearEvent() {
                bitField0_ = (bitField0_ & ~0x00000001);
                event_ = null;
                if (eventBuilder_ != null) {
                    eventBuilder_.dispose();
                    eventBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.Event event = 1;</code>
             */
            public context.ContextOuterClass.Event.Builder getEventBuilder() {
                bitField0_ |= 0x00000001;
                onChanged();
                return getEventFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.Event event = 1;</code>
             */
            public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
                if (eventBuilder_ != null) {
                    return eventBuilder_.getMessageOrBuilder();
                } else {
                    return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
                }
            }

            /**
             * <code>.context.Event event = 1;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> getEventFieldBuilder() {
                if (eventBuilder_ == null) {
                    eventBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder>(getEvent(), getParentForChildren(), isClean());
                    event_ = null;
                }
                return eventBuilder_;
            }

            private context.ContextOuterClass.TopologyId topologyId_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder> topologyIdBuilder_;

            /**
             * <code>.context.TopologyId topology_id = 2;</code>
             * @return Whether the topologyId field is set.
             */
            public boolean hasTopologyId() {
                return ((bitField0_ & 0x00000002) != 0);
            }

            /**
             * <code>.context.TopologyId topology_id = 2;</code>
             * @return The topologyId.
             */
            public context.ContextOuterClass.TopologyId getTopologyId() {
                if (topologyIdBuilder_ == null) {
                    return topologyId_ == null ? context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_;
                } else {
                    return topologyIdBuilder_.getMessage();
                }
            }

            /**
             * <code>.context.TopologyId topology_id = 2;</code>
             */
            public Builder setTopologyId(context.ContextOuterClass.TopologyId value) {
                if (topologyIdBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    topologyId_ = value;
                } else {
                    topologyIdBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>.context.TopologyId topology_id = 2;</code>
             */
            public Builder setTopologyId(context.ContextOuterClass.TopologyId.Builder builderForValue) {
                if (topologyIdBuilder_ == null) {
                    topologyId_ = builderForValue.build();
                } else {
                    topologyIdBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>.context.TopologyId topology_id = 2;</code>
             */
            public Builder mergeTopologyId(context.ContextOuterClass.TopologyId value) {
                if (topologyIdBuilder_ == null) {
                    if (((bitField0_ & 0x00000002) != 0) && topologyId_ != null && topologyId_ != context.ContextOuterClass.TopologyId.getDefaultInstance()) {
                        getTopologyIdBuilder().mergeFrom(value);
                    } else {
                        topologyId_ = value;
                    }
                } else {
                    topologyIdBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>.context.TopologyId topology_id = 2;</code>
             */
            public Builder clearTopologyId() {
                bitField0_ = (bitField0_ & ~0x00000002);
                topologyId_ = null;
                if (topologyIdBuilder_ != null) {
                    topologyIdBuilder_.dispose();
                    topologyIdBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.TopologyId topology_id = 2;</code>
             */
            public context.ContextOuterClass.TopologyId.Builder getTopologyIdBuilder() {
                bitField0_ |= 0x00000002;
                onChanged();
                return getTopologyIdFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.TopologyId topology_id = 2;</code>
             */
            public context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdOrBuilder() {
                if (topologyIdBuilder_ != null) {
                    return topologyIdBuilder_.getMessageOrBuilder();
                } else {
                    return topologyId_ == null ? context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_;
                }
            }

            /**
             * <code>.context.TopologyId topology_id = 2;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder> getTopologyIdFieldBuilder() {
                if (topologyIdBuilder_ == null) {
                    topologyIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder>(getTopologyId(), getParentForChildren(), isClean());
                    topologyId_ = null;
                }
                return topologyIdBuilder_;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.TopologyEvent)
        }

        // @@protoc_insertion_point(class_scope:context.TopologyEvent)
        private static final context.ContextOuterClass.TopologyEvent DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.TopologyEvent();
        }

        public static context.ContextOuterClass.TopologyEvent getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<TopologyEvent> PARSER = new com.google.protobuf.AbstractParser<TopologyEvent>() {

            @java.lang.Override
            public TopologyEvent parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<TopologyEvent> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<TopologyEvent> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.TopologyEvent getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface DeviceIdOrBuilder extends // @@protoc_insertion_point(interface_extends:context.DeviceId)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>.context.Uuid device_uuid = 1;</code>
         * @return Whether the deviceUuid field is set.
         */
        boolean hasDeviceUuid();

        /**
         * <code>.context.Uuid device_uuid = 1;</code>
         * @return The deviceUuid.
         */
        context.ContextOuterClass.Uuid getDeviceUuid();

        /**
         * <code>.context.Uuid device_uuid = 1;</code>
         */
        context.ContextOuterClass.UuidOrBuilder getDeviceUuidOrBuilder();
    }

    /**
     * <pre>
     * ----- Device --------------------------------------------------------------------------------------------------------
     * </pre>
     *
     * Protobuf type {@code context.DeviceId}
     */
    public static final class DeviceId extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.DeviceId)
    DeviceIdOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use DeviceId.newBuilder() to construct.
        private DeviceId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private DeviceId() {
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new DeviceId();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_DeviceId_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_DeviceId_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.DeviceId.class, context.ContextOuterClass.DeviceId.Builder.class);
        }

        public static final int DEVICE_UUID_FIELD_NUMBER = 1;

        private context.ContextOuterClass.Uuid deviceUuid_;

        /**
         * <code>.context.Uuid device_uuid = 1;</code>
         * @return Whether the deviceUuid field is set.
         */
        @java.lang.Override
        public boolean hasDeviceUuid() {
            return deviceUuid_ != null;
        }

        /**
         * <code>.context.Uuid device_uuid = 1;</code>
         * @return The deviceUuid.
         */
        @java.lang.Override
        public context.ContextOuterClass.Uuid getDeviceUuid() {
            return deviceUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : deviceUuid_;
        }

        /**
         * <code>.context.Uuid device_uuid = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.UuidOrBuilder getDeviceUuidOrBuilder() {
            return deviceUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : deviceUuid_;
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            if (deviceUuid_ != null) {
                output.writeMessage(1, getDeviceUuid());
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            if (deviceUuid_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getDeviceUuid());
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.DeviceId)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.DeviceId other = (context.ContextOuterClass.DeviceId) obj;
            if (hasDeviceUuid() != other.hasDeviceUuid())
                return false;
            if (hasDeviceUuid()) {
                if (!getDeviceUuid().equals(other.getDeviceUuid()))
                    return false;
            }
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            if (hasDeviceUuid()) {
                hash = (37 * hash) + DEVICE_UUID_FIELD_NUMBER;
                hash = (53 * hash) + getDeviceUuid().hashCode();
            }
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.DeviceId parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.DeviceId parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.DeviceId parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.DeviceId parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.DeviceId parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.DeviceId parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.DeviceId parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.DeviceId parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.DeviceId parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.DeviceId parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.DeviceId parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.DeviceId parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.DeviceId prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * <pre>
         * ----- Device --------------------------------------------------------------------------------------------------------
         * </pre>
         *
         * Protobuf type {@code context.DeviceId}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.DeviceId)
        context.ContextOuterClass.DeviceIdOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_DeviceId_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_DeviceId_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.DeviceId.class, context.ContextOuterClass.DeviceId.Builder.class);
            }

            // Construct using context.ContextOuterClass.DeviceId.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                deviceUuid_ = null;
                if (deviceUuidBuilder_ != null) {
                    deviceUuidBuilder_.dispose();
                    deviceUuidBuilder_ = null;
                }
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_DeviceId_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.DeviceId getDefaultInstanceForType() {
                return context.ContextOuterClass.DeviceId.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.DeviceId build() {
                context.ContextOuterClass.DeviceId result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.DeviceId buildPartial() {
                context.ContextOuterClass.DeviceId result = new context.ContextOuterClass.DeviceId(this);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartial0(context.ContextOuterClass.DeviceId result) {
                int from_bitField0_ = bitField0_;
                if (((from_bitField0_ & 0x00000001) != 0)) {
                    result.deviceUuid_ = deviceUuidBuilder_ == null ? deviceUuid_ : deviceUuidBuilder_.build();
                }
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.DeviceId) {
                    return mergeFrom((context.ContextOuterClass.DeviceId) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.DeviceId other) {
                if (other == context.ContextOuterClass.DeviceId.getDefaultInstance())
                    return this;
                if (other.hasDeviceUuid()) {
                    mergeDeviceUuid(other.getDeviceUuid());
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 10:
                                {
                                    input.readMessage(getDeviceUuidFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000001;
                                    break;
                                }
                            // case 10
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private context.ContextOuterClass.Uuid deviceUuid_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> deviceUuidBuilder_;

            /**
             * <code>.context.Uuid device_uuid = 1;</code>
             * @return Whether the deviceUuid field is set.
             */
            public boolean hasDeviceUuid() {
                return ((bitField0_ & 0x00000001) != 0);
            }

            /**
             * <code>.context.Uuid device_uuid = 1;</code>
             * @return The deviceUuid.
             */
            public context.ContextOuterClass.Uuid getDeviceUuid() {
                if (deviceUuidBuilder_ == null) {
                    return deviceUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : deviceUuid_;
                } else {
                    return deviceUuidBuilder_.getMessage();
                }
            }

            /**
             * <code>.context.Uuid device_uuid = 1;</code>
             */
            public Builder setDeviceUuid(context.ContextOuterClass.Uuid value) {
                if (deviceUuidBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    deviceUuid_ = value;
                } else {
                    deviceUuidBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.Uuid device_uuid = 1;</code>
             */
            public Builder setDeviceUuid(context.ContextOuterClass.Uuid.Builder builderForValue) {
                if (deviceUuidBuilder_ == null) {
                    deviceUuid_ = builderForValue.build();
                } else {
                    deviceUuidBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.Uuid device_uuid = 1;</code>
             */
            public Builder mergeDeviceUuid(context.ContextOuterClass.Uuid value) {
                if (deviceUuidBuilder_ == null) {
                    if (((bitField0_ & 0x00000001) != 0) && deviceUuid_ != null && deviceUuid_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
                        getDeviceUuidBuilder().mergeFrom(value);
                    } else {
                        deviceUuid_ = value;
                    }
                } else {
                    deviceUuidBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.Uuid device_uuid = 1;</code>
             */
            public Builder clearDeviceUuid() {
                bitField0_ = (bitField0_ & ~0x00000001);
                deviceUuid_ = null;
                if (deviceUuidBuilder_ != null) {
                    deviceUuidBuilder_.dispose();
                    deviceUuidBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.Uuid device_uuid = 1;</code>
             */
            public context.ContextOuterClass.Uuid.Builder getDeviceUuidBuilder() {
                bitField0_ |= 0x00000001;
                onChanged();
                return getDeviceUuidFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.Uuid device_uuid = 1;</code>
             */
            public context.ContextOuterClass.UuidOrBuilder getDeviceUuidOrBuilder() {
                if (deviceUuidBuilder_ != null) {
                    return deviceUuidBuilder_.getMessageOrBuilder();
                } else {
                    return deviceUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : deviceUuid_;
                }
            }

            /**
             * <code>.context.Uuid device_uuid = 1;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> getDeviceUuidFieldBuilder() {
                if (deviceUuidBuilder_ == null) {
                    deviceUuidBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder>(getDeviceUuid(), getParentForChildren(), isClean());
                    deviceUuid_ = null;
                }
                return deviceUuidBuilder_;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.DeviceId)
        }

        // @@protoc_insertion_point(class_scope:context.DeviceId)
        private static final context.ContextOuterClass.DeviceId DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.DeviceId();
        }

        public static context.ContextOuterClass.DeviceId getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<DeviceId> PARSER = new com.google.protobuf.AbstractParser<DeviceId>() {

            @java.lang.Override
            public DeviceId parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<DeviceId> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<DeviceId> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.DeviceId getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface DeviceOrBuilder extends // @@protoc_insertion_point(interface_extends:context.Device)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>.context.DeviceId device_id = 1;</code>
         * @return Whether the deviceId field is set.
         */
        boolean hasDeviceId();

        /**
         * <code>.context.DeviceId device_id = 1;</code>
         * @return The deviceId.
         */
        context.ContextOuterClass.DeviceId getDeviceId();

        /**
         * <code>.context.DeviceId device_id = 1;</code>
         */
        context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder();

        /**
         * <code>string name = 2;</code>
         * @return The name.
         */
        java.lang.String getName();

        /**
         * <code>string name = 2;</code>
         * @return The bytes for name.
         */
        com.google.protobuf.ByteString getNameBytes();

        /**
         * <code>string device_type = 3;</code>
         * @return The deviceType.
         */
        java.lang.String getDeviceType();

        /**
         * <code>string device_type = 3;</code>
         * @return The bytes for deviceType.
         */
        com.google.protobuf.ByteString getDeviceTypeBytes();

        /**
         * <code>.context.DeviceConfig device_config = 4;</code>
         * @return Whether the deviceConfig field is set.
         */
        boolean hasDeviceConfig();

        /**
         * <code>.context.DeviceConfig device_config = 4;</code>
         * @return The deviceConfig.
         */
        context.ContextOuterClass.DeviceConfig getDeviceConfig();

        /**
         * <code>.context.DeviceConfig device_config = 4;</code>
         */
        context.ContextOuterClass.DeviceConfigOrBuilder getDeviceConfigOrBuilder();

        /**
         * <code>.context.DeviceOperationalStatusEnum device_operational_status = 5;</code>
         * @return The enum numeric value on the wire for deviceOperationalStatus.
         */
        int getDeviceOperationalStatusValue();

        /**
         * <code>.context.DeviceOperationalStatusEnum device_operational_status = 5;</code>
         * @return The deviceOperationalStatus.
         */
        context.ContextOuterClass.DeviceOperationalStatusEnum getDeviceOperationalStatus();

        /**
         * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
         * @return A list containing the deviceDrivers.
         */
        java.util.List<context.ContextOuterClass.DeviceDriverEnum> getDeviceDriversList();

        /**
         * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
         * @return The count of deviceDrivers.
         */
        int getDeviceDriversCount();

        /**
         * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
         * @param index The index of the element to return.
         * @return The deviceDrivers at the given index.
         */
        context.ContextOuterClass.DeviceDriverEnum getDeviceDrivers(int index);

        /**
         * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
         * @return A list containing the enum numeric values on the wire for deviceDrivers.
         */
        java.util.List<java.lang.Integer> getDeviceDriversValueList();

        /**
         * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
         * @param index The index of the value to return.
         * @return The enum numeric value on the wire of deviceDrivers at the given index.
         */
        int getDeviceDriversValue(int index);

        /**
         * <code>repeated .context.EndPoint device_endpoints = 7;</code>
         */
        java.util.List<context.ContextOuterClass.EndPoint> getDeviceEndpointsList();

        /**
         * <code>repeated .context.EndPoint device_endpoints = 7;</code>
         */
        context.ContextOuterClass.EndPoint getDeviceEndpoints(int index);

        /**
         * <code>repeated .context.EndPoint device_endpoints = 7;</code>
         */
        int getDeviceEndpointsCount();

        /**
         * <code>repeated .context.EndPoint device_endpoints = 7;</code>
         */
        java.util.List<? extends context.ContextOuterClass.EndPointOrBuilder> getDeviceEndpointsOrBuilderList();

        /**
         * <code>repeated .context.EndPoint device_endpoints = 7;</code>
         */
        context.ContextOuterClass.EndPointOrBuilder getDeviceEndpointsOrBuilder(int index);

        /**
         * <pre>
         * Used for inventory
         * </pre>
         *
         * <code>repeated .context.Component components = 8;</code>
         */
        java.util.List<context.ContextOuterClass.Component> getComponentsList();

        /**
         * <pre>
         * Used for inventory
         * </pre>
         *
         * <code>repeated .context.Component components = 8;</code>
         */
        context.ContextOuterClass.Component getComponents(int index);

        /**
         * <pre>
         * Used for inventory
         * </pre>
         *
         * <code>repeated .context.Component components = 8;</code>
         */
        int getComponentsCount();

        /**
         * <pre>
         * Used for inventory
         * </pre>
         *
         * <code>repeated .context.Component components = 8;</code>
         */
        java.util.List<? extends context.ContextOuterClass.ComponentOrBuilder> getComponentsOrBuilderList();

        /**
         * <pre>
         * Used for inventory
         * </pre>
         *
         * <code>repeated .context.Component components = 8;</code>
         */
        context.ContextOuterClass.ComponentOrBuilder getComponentsOrBuilder(int index);

        /**
         * <pre>
         * Identifier of node controlling the actual device
         * </pre>
         *
         * <code>.context.DeviceId controller_id = 9;</code>
         * @return Whether the controllerId field is set.
         */
        boolean hasControllerId();

        /**
         * <pre>
         * Identifier of node controlling the actual device
         * </pre>
         *
         * <code>.context.DeviceId controller_id = 9;</code>
         * @return The controllerId.
         */
        context.ContextOuterClass.DeviceId getControllerId();

        /**
         * <pre>
         * Identifier of node controlling the actual device
         * </pre>
         *
         * <code>.context.DeviceId controller_id = 9;</code>
         */
        context.ContextOuterClass.DeviceIdOrBuilder getControllerIdOrBuilder();
    }

    /**
     * Protobuf type {@code context.Device}
     */
    public static final class Device extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.Device)
    DeviceOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use Device.newBuilder() to construct.
        private Device(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private Device() {
            name_ = "";
            deviceType_ = "";
            deviceOperationalStatus_ = 0;
            deviceDrivers_ = java.util.Collections.emptyList();
            deviceEndpoints_ = java.util.Collections.emptyList();
            components_ = java.util.Collections.emptyList();
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new Device();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_Device_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_Device_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Device.class, context.ContextOuterClass.Device.Builder.class);
        }

        public static final int DEVICE_ID_FIELD_NUMBER = 1;

        private context.ContextOuterClass.DeviceId deviceId_;

        /**
         * <code>.context.DeviceId device_id = 1;</code>
         * @return Whether the deviceId field is set.
         */
        @java.lang.Override
        public boolean hasDeviceId() {
            return deviceId_ != null;
        }

        /**
         * <code>.context.DeviceId device_id = 1;</code>
         * @return The deviceId.
         */
        @java.lang.Override
        public context.ContextOuterClass.DeviceId getDeviceId() {
            return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
        }

        /**
         * <code>.context.DeviceId device_id = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder() {
            return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
        }

        public static final int NAME_FIELD_NUMBER = 2;

        @SuppressWarnings("serial")
        private volatile java.lang.Object name_ = "";

        /**
         * <code>string name = 2;</code>
         * @return The name.
         */
        @java.lang.Override
        public java.lang.String getName() {
            java.lang.Object ref = name_;
            if (ref instanceof java.lang.String) {
                return (java.lang.String) ref;
            } else {
                com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                java.lang.String s = bs.toStringUtf8();
                name_ = s;
                return s;
            }
        }

        /**
         * <code>string name = 2;</code>
         * @return The bytes for name.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString getNameBytes() {
            java.lang.Object ref = name_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                name_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int DEVICE_TYPE_FIELD_NUMBER = 3;

        @SuppressWarnings("serial")
        private volatile java.lang.Object deviceType_ = "";

        /**
         * <code>string device_type = 3;</code>
         * @return The deviceType.
         */
        @java.lang.Override
        public java.lang.String getDeviceType() {
            java.lang.Object ref = deviceType_;
            if (ref instanceof java.lang.String) {
                return (java.lang.String) ref;
            } else {
                com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                java.lang.String s = bs.toStringUtf8();
                deviceType_ = s;
                return s;
            }
        }

        /**
         * <code>string device_type = 3;</code>
         * @return The bytes for deviceType.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString getDeviceTypeBytes() {
            java.lang.Object ref = deviceType_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                deviceType_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int DEVICE_CONFIG_FIELD_NUMBER = 4;

        private context.ContextOuterClass.DeviceConfig deviceConfig_;

        /**
         * <code>.context.DeviceConfig device_config = 4;</code>
         * @return Whether the deviceConfig field is set.
         */
        @java.lang.Override
        public boolean hasDeviceConfig() {
            return deviceConfig_ != null;
        }

        /**
         * <code>.context.DeviceConfig device_config = 4;</code>
         * @return The deviceConfig.
         */
        @java.lang.Override
        public context.ContextOuterClass.DeviceConfig getDeviceConfig() {
            return deviceConfig_ == null ? context.ContextOuterClass.DeviceConfig.getDefaultInstance() : deviceConfig_;
        }

        /**
         * <code>.context.DeviceConfig device_config = 4;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.DeviceConfigOrBuilder getDeviceConfigOrBuilder() {
            return deviceConfig_ == null ? context.ContextOuterClass.DeviceConfig.getDefaultInstance() : deviceConfig_;
        }

        public static final int DEVICE_OPERATIONAL_STATUS_FIELD_NUMBER = 5;

        private int deviceOperationalStatus_ = 0;

        /**
         * <code>.context.DeviceOperationalStatusEnum device_operational_status = 5;</code>
         * @return The enum numeric value on the wire for deviceOperationalStatus.
         */
        @java.lang.Override
        public int getDeviceOperationalStatusValue() {
            return deviceOperationalStatus_;
        }

        /**
         * <code>.context.DeviceOperationalStatusEnum device_operational_status = 5;</code>
         * @return The deviceOperationalStatus.
         */
        @java.lang.Override
        public context.ContextOuterClass.DeviceOperationalStatusEnum getDeviceOperationalStatus() {
            context.ContextOuterClass.DeviceOperationalStatusEnum result = context.ContextOuterClass.DeviceOperationalStatusEnum.forNumber(deviceOperationalStatus_);
            return result == null ? context.ContextOuterClass.DeviceOperationalStatusEnum.UNRECOGNIZED : result;
        }

        public static final int DEVICE_DRIVERS_FIELD_NUMBER = 6;

        @SuppressWarnings("serial")
        private java.util.List<java.lang.Integer> deviceDrivers_;

        private static final com.google.protobuf.Internal.ListAdapter.Converter<java.lang.Integer, context.ContextOuterClass.DeviceDriverEnum> deviceDrivers_converter_ = new com.google.protobuf.Internal.ListAdapter.Converter<java.lang.Integer, context.ContextOuterClass.DeviceDriverEnum>() {

            public context.ContextOuterClass.DeviceDriverEnum convert(java.lang.Integer from) {
                context.ContextOuterClass.DeviceDriverEnum result = context.ContextOuterClass.DeviceDriverEnum.forNumber(from);
                return result == null ? context.ContextOuterClass.DeviceDriverEnum.UNRECOGNIZED : result;
            }
        };

        /**
         * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
         * @return A list containing the deviceDrivers.
         */
        @java.lang.Override
        public java.util.List<context.ContextOuterClass.DeviceDriverEnum> getDeviceDriversList() {
            return new com.google.protobuf.Internal.ListAdapter<java.lang.Integer, context.ContextOuterClass.DeviceDriverEnum>(deviceDrivers_, deviceDrivers_converter_);
        }

        /**
         * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
         * @return The count of deviceDrivers.
         */
        @java.lang.Override
        public int getDeviceDriversCount() {
            return deviceDrivers_.size();
        }

        /**
         * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
         * @param index The index of the element to return.
         * @return The deviceDrivers at the given index.
         */
        @java.lang.Override
        public context.ContextOuterClass.DeviceDriverEnum getDeviceDrivers(int index) {
            return deviceDrivers_converter_.convert(deviceDrivers_.get(index));
        }

        /**
         * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
         * @return A list containing the enum numeric values on the wire for deviceDrivers.
         */
        @java.lang.Override
        public java.util.List<java.lang.Integer> getDeviceDriversValueList() {
            return deviceDrivers_;
        }

        /**
         * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
         * @param index The index of the value to return.
         * @return The enum numeric value on the wire of deviceDrivers at the given index.
         */
        @java.lang.Override
        public int getDeviceDriversValue(int index) {
            return deviceDrivers_.get(index);
        }

        private int deviceDriversMemoizedSerializedSize;

        public static final int DEVICE_ENDPOINTS_FIELD_NUMBER = 7;

        @SuppressWarnings("serial")
        private java.util.List<context.ContextOuterClass.EndPoint> deviceEndpoints_;

        /**
         * <code>repeated .context.EndPoint device_endpoints = 7;</code>
         */
        @java.lang.Override
        public java.util.List<context.ContextOuterClass.EndPoint> getDeviceEndpointsList() {
            return deviceEndpoints_;
        }

        /**
         * <code>repeated .context.EndPoint device_endpoints = 7;</code>
         */
        @java.lang.Override
        public java.util.List<? extends context.ContextOuterClass.EndPointOrBuilder> getDeviceEndpointsOrBuilderList() {
            return deviceEndpoints_;
        }

        /**
         * <code>repeated .context.EndPoint device_endpoints = 7;</code>
         */
        @java.lang.Override
        public int getDeviceEndpointsCount() {
            return deviceEndpoints_.size();
        }

        /**
         * <code>repeated .context.EndPoint device_endpoints = 7;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.EndPoint getDeviceEndpoints(int index) {
            return deviceEndpoints_.get(index);
        }

        /**
         * <code>repeated .context.EndPoint device_endpoints = 7;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.EndPointOrBuilder getDeviceEndpointsOrBuilder(int index) {
            return deviceEndpoints_.get(index);
        }

        public static final int COMPONENTS_FIELD_NUMBER = 8;

        @SuppressWarnings("serial")
        private java.util.List<context.ContextOuterClass.Component> components_;

        /**
         * <pre>
         * Used for inventory
         * </pre>
         *
         * <code>repeated .context.Component components = 8;</code>
         */
        @java.lang.Override
        public java.util.List<context.ContextOuterClass.Component> getComponentsList() {
            return components_;
        }

        /**
         * <pre>
         * Used for inventory
         * </pre>
         *
         * <code>repeated .context.Component components = 8;</code>
         */
        @java.lang.Override
        public java.util.List<? extends context.ContextOuterClass.ComponentOrBuilder> getComponentsOrBuilderList() {
            return components_;
        }

        /**
         * <pre>
         * Used for inventory
         * </pre>
         *
         * <code>repeated .context.Component components = 8;</code>
         */
        @java.lang.Override
        public int getComponentsCount() {
            return components_.size();
        }

        /**
         * <pre>
         * Used for inventory
         * </pre>
         *
         * <code>repeated .context.Component components = 8;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.Component getComponents(int index) {
            return components_.get(index);
        }

        /**
         * <pre>
         * Used for inventory
         * </pre>
         *
         * <code>repeated .context.Component components = 8;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.ComponentOrBuilder getComponentsOrBuilder(int index) {
            return components_.get(index);
        }

        public static final int CONTROLLER_ID_FIELD_NUMBER = 9;

        private context.ContextOuterClass.DeviceId controllerId_;

        /**
         * <pre>
         * Identifier of node controlling the actual device
         * </pre>
         *
         * <code>.context.DeviceId controller_id = 9;</code>
         * @return Whether the controllerId field is set.
         */
        @java.lang.Override
        public boolean hasControllerId() {
            return controllerId_ != null;
        }

        /**
         * <pre>
         * Identifier of node controlling the actual device
         * </pre>
         *
         * <code>.context.DeviceId controller_id = 9;</code>
         * @return The controllerId.
         */
        @java.lang.Override
        public context.ContextOuterClass.DeviceId getControllerId() {
            return controllerId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : controllerId_;
        }

        /**
         * <pre>
         * Identifier of node controlling the actual device
         * </pre>
         *
         * <code>.context.DeviceId controller_id = 9;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.DeviceIdOrBuilder getControllerIdOrBuilder() {
            return controllerId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : controllerId_;
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            getSerializedSize();
            if (deviceId_ != null) {
                output.writeMessage(1, getDeviceId());
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(deviceType_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 3, deviceType_);
            }
            if (deviceConfig_ != null) {
                output.writeMessage(4, getDeviceConfig());
            }
            if (deviceOperationalStatus_ != context.ContextOuterClass.DeviceOperationalStatusEnum.DEVICEOPERATIONALSTATUS_UNDEFINED.getNumber()) {
                output.writeEnum(5, deviceOperationalStatus_);
            }
            if (getDeviceDriversList().size() > 0) {
                output.writeUInt32NoTag(50);
                output.writeUInt32NoTag(deviceDriversMemoizedSerializedSize);
            }
            for (int i = 0; i < deviceDrivers_.size(); i++) {
                output.writeEnumNoTag(deviceDrivers_.get(i));
            }
            for (int i = 0; i < deviceEndpoints_.size(); i++) {
                output.writeMessage(7, deviceEndpoints_.get(i));
            }
            for (int i = 0; i < components_.size(); i++) {
                output.writeMessage(8, components_.get(i));
            }
            if (controllerId_ != null) {
                output.writeMessage(9, getControllerId());
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            if (deviceId_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getDeviceId());
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(deviceType_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, deviceType_);
            }
            if (deviceConfig_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, getDeviceConfig());
            }
            if (deviceOperationalStatus_ != context.ContextOuterClass.DeviceOperationalStatusEnum.DEVICEOPERATIONALSTATUS_UNDEFINED.getNumber()) {
                size += com.google.protobuf.CodedOutputStream.computeEnumSize(5, deviceOperationalStatus_);
            }
            {
                int dataSize = 0;
                for (int i = 0; i < deviceDrivers_.size(); i++) {
                    dataSize += com.google.protobuf.CodedOutputStream.computeEnumSizeNoTag(deviceDrivers_.get(i));
                }
                size += dataSize;
                if (!getDeviceDriversList().isEmpty()) {
                    size += 1;
                    size += com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(dataSize);
                }
                deviceDriversMemoizedSerializedSize = dataSize;
            }
            for (int i = 0; i < deviceEndpoints_.size(); i++) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(7, deviceEndpoints_.get(i));
            }
            for (int i = 0; i < components_.size(); i++) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(8, components_.get(i));
            }
            if (controllerId_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(9, getControllerId());
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.Device)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.Device other = (context.ContextOuterClass.Device) obj;
            if (hasDeviceId() != other.hasDeviceId())
                return false;
            if (hasDeviceId()) {
                if (!getDeviceId().equals(other.getDeviceId()))
                    return false;
            }
            if (!getName().equals(other.getName()))
                return false;
            if (!getDeviceType().equals(other.getDeviceType()))
                return false;
            if (hasDeviceConfig() != other.hasDeviceConfig())
                return false;
            if (hasDeviceConfig()) {
                if (!getDeviceConfig().equals(other.getDeviceConfig()))
                    return false;
            }
            if (deviceOperationalStatus_ != other.deviceOperationalStatus_)
                return false;
            if (!deviceDrivers_.equals(other.deviceDrivers_))
                return false;
            if (!getDeviceEndpointsList().equals(other.getDeviceEndpointsList()))
                return false;
            if (!getComponentsList().equals(other.getComponentsList()))
                return false;
            if (hasControllerId() != other.hasControllerId())
                return false;
            if (hasControllerId()) {
                if (!getControllerId().equals(other.getControllerId()))
                    return false;
            }
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            if (hasDeviceId()) {
                hash = (37 * hash) + DEVICE_ID_FIELD_NUMBER;
                hash = (53 * hash) + getDeviceId().hashCode();
            }
            hash = (37 * hash) + NAME_FIELD_NUMBER;
            hash = (53 * hash) + getName().hashCode();
            hash = (37 * hash) + DEVICE_TYPE_FIELD_NUMBER;
            hash = (53 * hash) + getDeviceType().hashCode();
            if (hasDeviceConfig()) {
                hash = (37 * hash) + DEVICE_CONFIG_FIELD_NUMBER;
                hash = (53 * hash) + getDeviceConfig().hashCode();
            }
            hash = (37 * hash) + DEVICE_OPERATIONAL_STATUS_FIELD_NUMBER;
            hash = (53 * hash) + deviceOperationalStatus_;
            if (getDeviceDriversCount() > 0) {
                hash = (37 * hash) + DEVICE_DRIVERS_FIELD_NUMBER;
                hash = (53 * hash) + deviceDrivers_.hashCode();
            }
            if (getDeviceEndpointsCount() > 0) {
                hash = (37 * hash) + DEVICE_ENDPOINTS_FIELD_NUMBER;
                hash = (53 * hash) + getDeviceEndpointsList().hashCode();
            }
            if (getComponentsCount() > 0) {
                hash = (37 * hash) + COMPONENTS_FIELD_NUMBER;
                hash = (53 * hash) + getComponentsList().hashCode();
            }
            if (hasControllerId()) {
                hash = (37 * hash) + CONTROLLER_ID_FIELD_NUMBER;
                hash = (53 * hash) + getControllerId().hashCode();
            }
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.Device parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.Device parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.Device parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.Device parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.Device parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.Device parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.Device parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.Device parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.Device parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.Device parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.Device parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.Device parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.Device prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code context.Device}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.Device)
        context.ContextOuterClass.DeviceOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_Device_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_Device_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Device.class, context.ContextOuterClass.Device.Builder.class);
            }

            // Construct using context.ContextOuterClass.Device.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                deviceId_ = null;
                if (deviceIdBuilder_ != null) {
                    deviceIdBuilder_.dispose();
                    deviceIdBuilder_ = null;
                }
                name_ = "";
                deviceType_ = "";
                deviceConfig_ = null;
                if (deviceConfigBuilder_ != null) {
                    deviceConfigBuilder_.dispose();
                    deviceConfigBuilder_ = null;
                }
                deviceOperationalStatus_ = 0;
                deviceDrivers_ = java.util.Collections.emptyList();
                bitField0_ = (bitField0_ & ~0x00000020);
                if (deviceEndpointsBuilder_ == null) {
                    deviceEndpoints_ = java.util.Collections.emptyList();
                } else {
                    deviceEndpoints_ = null;
                    deviceEndpointsBuilder_.clear();
                }
                bitField0_ = (bitField0_ & ~0x00000040);
                if (componentsBuilder_ == null) {
                    components_ = java.util.Collections.emptyList();
                } else {
                    components_ = null;
                    componentsBuilder_.clear();
                }
                bitField0_ = (bitField0_ & ~0x00000080);
                controllerId_ = null;
                if (controllerIdBuilder_ != null) {
                    controllerIdBuilder_.dispose();
                    controllerIdBuilder_ = null;
                }
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_Device_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.Device getDefaultInstanceForType() {
                return context.ContextOuterClass.Device.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.Device build() {
                context.ContextOuterClass.Device result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.Device buildPartial() {
                context.ContextOuterClass.Device result = new context.ContextOuterClass.Device(this);
                buildPartialRepeatedFields(result);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartialRepeatedFields(context.ContextOuterClass.Device result) {
                if (((bitField0_ & 0x00000020) != 0)) {
                    deviceDrivers_ = java.util.Collections.unmodifiableList(deviceDrivers_);
                    bitField0_ = (bitField0_ & ~0x00000020);
                }
                result.deviceDrivers_ = deviceDrivers_;
                if (deviceEndpointsBuilder_ == null) {
                    if (((bitField0_ & 0x00000040) != 0)) {
                        deviceEndpoints_ = java.util.Collections.unmodifiableList(deviceEndpoints_);
                        bitField0_ = (bitField0_ & ~0x00000040);
                    }
                    result.deviceEndpoints_ = deviceEndpoints_;
                } else {
                    result.deviceEndpoints_ = deviceEndpointsBuilder_.build();
                }
                if (componentsBuilder_ == null) {
                    if (((bitField0_ & 0x00000080) != 0)) {
                        components_ = java.util.Collections.unmodifiableList(components_);
                        bitField0_ = (bitField0_ & ~0x00000080);
                    }
                    result.components_ = components_;
                } else {
                    result.components_ = componentsBuilder_.build();
                }
            }

            private void buildPartial0(context.ContextOuterClass.Device result) {
                int from_bitField0_ = bitField0_;
                if (((from_bitField0_ & 0x00000001) != 0)) {
                    result.deviceId_ = deviceIdBuilder_ == null ? deviceId_ : deviceIdBuilder_.build();
                }
                if (((from_bitField0_ & 0x00000002) != 0)) {
                    result.name_ = name_;
                }
                if (((from_bitField0_ & 0x00000004) != 0)) {
                    result.deviceType_ = deviceType_;
                }
                if (((from_bitField0_ & 0x00000008) != 0)) {
                    result.deviceConfig_ = deviceConfigBuilder_ == null ? deviceConfig_ : deviceConfigBuilder_.build();
                }
                if (((from_bitField0_ & 0x00000010) != 0)) {
                    result.deviceOperationalStatus_ = deviceOperationalStatus_;
                }
                if (((from_bitField0_ & 0x00000100) != 0)) {
                    result.controllerId_ = controllerIdBuilder_ == null ? controllerId_ : controllerIdBuilder_.build();
                }
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.Device) {
                    return mergeFrom((context.ContextOuterClass.Device) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.Device other) {
                if (other == context.ContextOuterClass.Device.getDefaultInstance())
                    return this;
                if (other.hasDeviceId()) {
                    mergeDeviceId(other.getDeviceId());
                }
                if (!other.getName().isEmpty()) {
                    name_ = other.name_;
                    bitField0_ |= 0x00000002;
                    onChanged();
                }
                if (!other.getDeviceType().isEmpty()) {
                    deviceType_ = other.deviceType_;
                    bitField0_ |= 0x00000004;
                    onChanged();
                }
                if (other.hasDeviceConfig()) {
                    mergeDeviceConfig(other.getDeviceConfig());
                }
                if (other.deviceOperationalStatus_ != 0) {
                    setDeviceOperationalStatusValue(other.getDeviceOperationalStatusValue());
                }
                if (!other.deviceDrivers_.isEmpty()) {
                    if (deviceDrivers_.isEmpty()) {
                        deviceDrivers_ = other.deviceDrivers_;
                        bitField0_ = (bitField0_ & ~0x00000020);
                    } else {
                        ensureDeviceDriversIsMutable();
                        deviceDrivers_.addAll(other.deviceDrivers_);
                    }
                    onChanged();
                }
                if (deviceEndpointsBuilder_ == null) {
                    if (!other.deviceEndpoints_.isEmpty()) {
                        if (deviceEndpoints_.isEmpty()) {
                            deviceEndpoints_ = other.deviceEndpoints_;
                            bitField0_ = (bitField0_ & ~0x00000040);
                        } else {
                            ensureDeviceEndpointsIsMutable();
                            deviceEndpoints_.addAll(other.deviceEndpoints_);
                        }
                        onChanged();
                    }
                } else {
                    if (!other.deviceEndpoints_.isEmpty()) {
                        if (deviceEndpointsBuilder_.isEmpty()) {
                            deviceEndpointsBuilder_.dispose();
                            deviceEndpointsBuilder_ = null;
                            deviceEndpoints_ = other.deviceEndpoints_;
                            bitField0_ = (bitField0_ & ~0x00000040);
                            deviceEndpointsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getDeviceEndpointsFieldBuilder() : null;
                        } else {
                            deviceEndpointsBuilder_.addAllMessages(other.deviceEndpoints_);
                        }
                    }
                }
                if (componentsBuilder_ == null) {
                    if (!other.components_.isEmpty()) {
                        if (components_.isEmpty()) {
                            components_ = other.components_;
                            bitField0_ = (bitField0_ & ~0x00000080);
                        } else {
                            ensureComponentsIsMutable();
                            components_.addAll(other.components_);
                        }
                        onChanged();
                    }
                } else {
                    if (!other.components_.isEmpty()) {
                        if (componentsBuilder_.isEmpty()) {
                            componentsBuilder_.dispose();
                            componentsBuilder_ = null;
                            components_ = other.components_;
                            bitField0_ = (bitField0_ & ~0x00000080);
                            componentsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getComponentsFieldBuilder() : null;
                        } else {
                            componentsBuilder_.addAllMessages(other.components_);
                        }
                    }
                }
                if (other.hasControllerId()) {
                    mergeControllerId(other.getControllerId());
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 10:
                                {
                                    input.readMessage(getDeviceIdFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000001;
                                    break;
                                }
                            // case 10
                            case 18:
                                {
                                    name_ = input.readStringRequireUtf8();
                                    bitField0_ |= 0x00000002;
                                    break;
                                }
                            // case 18
                            case 26:
                                {
                                    deviceType_ = input.readStringRequireUtf8();
                                    bitField0_ |= 0x00000004;
                                    break;
                                }
                            // case 26
                            case 34:
                                {
                                    input.readMessage(getDeviceConfigFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000008;
                                    break;
                                }
                            // case 34
                            case 40:
                                {
                                    deviceOperationalStatus_ = input.readEnum();
                                    bitField0_ |= 0x00000010;
                                    break;
                                }
                            // case 40
                            case 48:
                                {
                                    int tmpRaw = input.readEnum();
                                    ensureDeviceDriversIsMutable();
                                    deviceDrivers_.add(tmpRaw);
                                    break;
                                }
                            // case 48
                            case 50:
                                {
                                    int length = input.readRawVarint32();
                                    int oldLimit = input.pushLimit(length);
                                    while (input.getBytesUntilLimit() > 0) {
                                        int tmpRaw = input.readEnum();
                                        ensureDeviceDriversIsMutable();
                                        deviceDrivers_.add(tmpRaw);
                                    }
                                    input.popLimit(oldLimit);
                                    break;
                                }
                            // case 50
                            case 58:
                                {
                                    context.ContextOuterClass.EndPoint m = input.readMessage(context.ContextOuterClass.EndPoint.parser(), extensionRegistry);
                                    if (deviceEndpointsBuilder_ == null) {
                                        ensureDeviceEndpointsIsMutable();
                                        deviceEndpoints_.add(m);
                                    } else {
                                        deviceEndpointsBuilder_.addMessage(m);
                                    }
                                    break;
                                }
                            // case 58
                            case 66:
                                {
                                    context.ContextOuterClass.Component m = input.readMessage(context.ContextOuterClass.Component.parser(), extensionRegistry);
                                    if (componentsBuilder_ == null) {
                                        ensureComponentsIsMutable();
                                        components_.add(m);
                                    } else {
                                        componentsBuilder_.addMessage(m);
                                    }
                                    break;
                                }
                            // case 66
                            case 74:
                                {
                                    input.readMessage(getControllerIdFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000100;
                                    break;
                                }
                            // case 74
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private context.ContextOuterClass.DeviceId deviceId_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> deviceIdBuilder_;

            /**
             * <code>.context.DeviceId device_id = 1;</code>
             * @return Whether the deviceId field is set.
             */
            public boolean hasDeviceId() {
                return ((bitField0_ & 0x00000001) != 0);
            }

            /**
             * <code>.context.DeviceId device_id = 1;</code>
             * @return The deviceId.
             */
            public context.ContextOuterClass.DeviceId getDeviceId() {
                if (deviceIdBuilder_ == null) {
                    return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
                } else {
                    return deviceIdBuilder_.getMessage();
                }
            }

            /**
             * <code>.context.DeviceId device_id = 1;</code>
             */
            public Builder setDeviceId(context.ContextOuterClass.DeviceId value) {
                if (deviceIdBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    deviceId_ = value;
                } else {
                    deviceIdBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.DeviceId device_id = 1;</code>
             */
            public Builder setDeviceId(context.ContextOuterClass.DeviceId.Builder builderForValue) {
                if (deviceIdBuilder_ == null) {
                    deviceId_ = builderForValue.build();
                } else {
                    deviceIdBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.DeviceId device_id = 1;</code>
             */
            public Builder mergeDeviceId(context.ContextOuterClass.DeviceId value) {
                if (deviceIdBuilder_ == null) {
                    if (((bitField0_ & 0x00000001) != 0) && deviceId_ != null && deviceId_ != context.ContextOuterClass.DeviceId.getDefaultInstance()) {
                        getDeviceIdBuilder().mergeFrom(value);
                    } else {
                        deviceId_ = value;
                    }
                } else {
                    deviceIdBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.DeviceId device_id = 1;</code>
             */
            public Builder clearDeviceId() {
                bitField0_ = (bitField0_ & ~0x00000001);
                deviceId_ = null;
                if (deviceIdBuilder_ != null) {
                    deviceIdBuilder_.dispose();
                    deviceIdBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.DeviceId device_id = 1;</code>
             */
            public context.ContextOuterClass.DeviceId.Builder getDeviceIdBuilder() {
                bitField0_ |= 0x00000001;
                onChanged();
                return getDeviceIdFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.DeviceId device_id = 1;</code>
             */
            public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder() {
                if (deviceIdBuilder_ != null) {
                    return deviceIdBuilder_.getMessageOrBuilder();
                } else {
                    return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
                }
            }

            /**
             * <code>.context.DeviceId device_id = 1;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> getDeviceIdFieldBuilder() {
                if (deviceIdBuilder_ == null) {
                    deviceIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder>(getDeviceId(), getParentForChildren(), isClean());
                    deviceId_ = null;
                }
                return deviceIdBuilder_;
            }

            private java.lang.Object name_ = "";

            /**
             * <code>string name = 2;</code>
             * @return The name.
             */
            public java.lang.String getName() {
                java.lang.Object ref = name_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    name_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }

            /**
             * <code>string name = 2;</code>
             * @return The bytes for name.
             */
            public com.google.protobuf.ByteString getNameBytes() {
                java.lang.Object ref = name_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                    name_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }

            /**
             * <code>string name = 2;</code>
             * @param value The name to set.
             * @return This builder for chaining.
             */
            public Builder setName(java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                name_ = value;
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>string name = 2;</code>
             * @return This builder for chaining.
             */
            public Builder clearName() {
                name_ = getDefaultInstance().getName();
                bitField0_ = (bitField0_ & ~0x00000002);
                onChanged();
                return this;
            }

            /**
             * <code>string name = 2;</code>
             * @param value The bytes for name to set.
             * @return This builder for chaining.
             */
            public Builder setNameBytes(com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);
                name_ = value;
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            private java.lang.Object deviceType_ = "";

            /**
             * <code>string device_type = 3;</code>
             * @return The deviceType.
             */
            public java.lang.String getDeviceType() {
                java.lang.Object ref = deviceType_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    deviceType_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }

            /**
             * <code>string device_type = 3;</code>
             * @return The bytes for deviceType.
             */
            public com.google.protobuf.ByteString getDeviceTypeBytes() {
                java.lang.Object ref = deviceType_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                    deviceType_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }

            /**
             * <code>string device_type = 3;</code>
             * @param value The deviceType to set.
             * @return This builder for chaining.
             */
            public Builder setDeviceType(java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                deviceType_ = value;
                bitField0_ |= 0x00000004;
                onChanged();
                return this;
            }

            /**
             * <code>string device_type = 3;</code>
             * @return This builder for chaining.
             */
            public Builder clearDeviceType() {
                deviceType_ = getDefaultInstance().getDeviceType();
                bitField0_ = (bitField0_ & ~0x00000004);
                onChanged();
                return this;
            }

            /**
             * <code>string device_type = 3;</code>
             * @param value The bytes for deviceType to set.
             * @return This builder for chaining.
             */
            public Builder setDeviceTypeBytes(com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);
                deviceType_ = value;
                bitField0_ |= 0x00000004;
                onChanged();
                return this;
            }

            private context.ContextOuterClass.DeviceConfig deviceConfig_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.DeviceConfig, context.ContextOuterClass.DeviceConfig.Builder, context.ContextOuterClass.DeviceConfigOrBuilder> deviceConfigBuilder_;

            /**
             * <code>.context.DeviceConfig device_config = 4;</code>
             * @return Whether the deviceConfig field is set.
             */
            public boolean hasDeviceConfig() {
                return ((bitField0_ & 0x00000008) != 0);
            }

            /**
             * <code>.context.DeviceConfig device_config = 4;</code>
             * @return The deviceConfig.
             */
            public context.ContextOuterClass.DeviceConfig getDeviceConfig() {
                if (deviceConfigBuilder_ == null) {
                    return deviceConfig_ == null ? context.ContextOuterClass.DeviceConfig.getDefaultInstance() : deviceConfig_;
                } else {
                    return deviceConfigBuilder_.getMessage();
                }
            }

            /**
             * <code>.context.DeviceConfig device_config = 4;</code>
             */
            public Builder setDeviceConfig(context.ContextOuterClass.DeviceConfig value) {
                if (deviceConfigBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    deviceConfig_ = value;
                } else {
                    deviceConfigBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000008;
                onChanged();
                return this;
            }

            /**
             * <code>.context.DeviceConfig device_config = 4;</code>
             */
            public Builder setDeviceConfig(context.ContextOuterClass.DeviceConfig.Builder builderForValue) {
                if (deviceConfigBuilder_ == null) {
                    deviceConfig_ = builderForValue.build();
                } else {
                    deviceConfigBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000008;
                onChanged();
                return this;
            }

            /**
             * <code>.context.DeviceConfig device_config = 4;</code>
             */
            public Builder mergeDeviceConfig(context.ContextOuterClass.DeviceConfig value) {
                if (deviceConfigBuilder_ == null) {
                    if (((bitField0_ & 0x00000008) != 0) && deviceConfig_ != null && deviceConfig_ != context.ContextOuterClass.DeviceConfig.getDefaultInstance()) {
                        getDeviceConfigBuilder().mergeFrom(value);
                    } else {
                        deviceConfig_ = value;
                    }
                } else {
                    deviceConfigBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000008;
                onChanged();
                return this;
            }

            /**
             * <code>.context.DeviceConfig device_config = 4;</code>
             */
            public Builder clearDeviceConfig() {
                bitField0_ = (bitField0_ & ~0x00000008);
                deviceConfig_ = null;
                if (deviceConfigBuilder_ != null) {
                    deviceConfigBuilder_.dispose();
                    deviceConfigBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.DeviceConfig device_config = 4;</code>
             */
            public context.ContextOuterClass.DeviceConfig.Builder getDeviceConfigBuilder() {
                bitField0_ |= 0x00000008;
                onChanged();
                return getDeviceConfigFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.DeviceConfig device_config = 4;</code>
             */
            public context.ContextOuterClass.DeviceConfigOrBuilder getDeviceConfigOrBuilder() {
                if (deviceConfigBuilder_ != null) {
                    return deviceConfigBuilder_.getMessageOrBuilder();
                } else {
                    return deviceConfig_ == null ? context.ContextOuterClass.DeviceConfig.getDefaultInstance() : deviceConfig_;
                }
            }

            /**
             * <code>.context.DeviceConfig device_config = 4;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.DeviceConfig, context.ContextOuterClass.DeviceConfig.Builder, context.ContextOuterClass.DeviceConfigOrBuilder> getDeviceConfigFieldBuilder() {
                if (deviceConfigBuilder_ == null) {
                    deviceConfigBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.DeviceConfig, context.ContextOuterClass.DeviceConfig.Builder, context.ContextOuterClass.DeviceConfigOrBuilder>(getDeviceConfig(), getParentForChildren(), isClean());
                    deviceConfig_ = null;
                }
                return deviceConfigBuilder_;
            }

            private int deviceOperationalStatus_ = 0;

            /**
             * <code>.context.DeviceOperationalStatusEnum device_operational_status = 5;</code>
             * @return The enum numeric value on the wire for deviceOperationalStatus.
             */
            @java.lang.Override
            public int getDeviceOperationalStatusValue() {
                return deviceOperationalStatus_;
            }

            /**
             * <code>.context.DeviceOperationalStatusEnum device_operational_status = 5;</code>
             * @param value The enum numeric value on the wire for deviceOperationalStatus to set.
             * @return This builder for chaining.
             */
            public Builder setDeviceOperationalStatusValue(int value) {
                deviceOperationalStatus_ = value;
                bitField0_ |= 0x00000010;
                onChanged();
                return this;
            }

            /**
             * <code>.context.DeviceOperationalStatusEnum device_operational_status = 5;</code>
             * @return The deviceOperationalStatus.
             */
            @java.lang.Override
            public context.ContextOuterClass.DeviceOperationalStatusEnum getDeviceOperationalStatus() {
                context.ContextOuterClass.DeviceOperationalStatusEnum result = context.ContextOuterClass.DeviceOperationalStatusEnum.forNumber(deviceOperationalStatus_);
                return result == null ? context.ContextOuterClass.DeviceOperationalStatusEnum.UNRECOGNIZED : result;
            }

            /**
             * <code>.context.DeviceOperationalStatusEnum device_operational_status = 5;</code>
             * @param value The deviceOperationalStatus to set.
             * @return This builder for chaining.
             */
            public Builder setDeviceOperationalStatus(context.ContextOuterClass.DeviceOperationalStatusEnum value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                bitField0_ |= 0x00000010;
                deviceOperationalStatus_ = value.getNumber();
                onChanged();
                return this;
            }

            /**
             * <code>.context.DeviceOperationalStatusEnum device_operational_status = 5;</code>
             * @return This builder for chaining.
             */
            public Builder clearDeviceOperationalStatus() {
                bitField0_ = (bitField0_ & ~0x00000010);
                deviceOperationalStatus_ = 0;
                onChanged();
                return this;
            }

            private java.util.List<java.lang.Integer> deviceDrivers_ = java.util.Collections.emptyList();

            private void ensureDeviceDriversIsMutable() {
                if (!((bitField0_ & 0x00000020) != 0)) {
                    deviceDrivers_ = new java.util.ArrayList<java.lang.Integer>(deviceDrivers_);
                    bitField0_ |= 0x00000020;
                }
            }

            /**
             * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
             * @return A list containing the deviceDrivers.
             */
            public java.util.List<context.ContextOuterClass.DeviceDriverEnum> getDeviceDriversList() {
                return new com.google.protobuf.Internal.ListAdapter<java.lang.Integer, context.ContextOuterClass.DeviceDriverEnum>(deviceDrivers_, deviceDrivers_converter_);
            }

            /**
             * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
             * @return The count of deviceDrivers.
             */
            public int getDeviceDriversCount() {
                return deviceDrivers_.size();
            }

            /**
             * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
             * @param index The index of the element to return.
             * @return The deviceDrivers at the given index.
             */
            public context.ContextOuterClass.DeviceDriverEnum getDeviceDrivers(int index) {
                return deviceDrivers_converter_.convert(deviceDrivers_.get(index));
            }

            /**
             * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
             * @param index The index to set the value at.
             * @param value The deviceDrivers to set.
             * @return This builder for chaining.
             */
            public Builder setDeviceDrivers(int index, context.ContextOuterClass.DeviceDriverEnum value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                ensureDeviceDriversIsMutable();
                deviceDrivers_.set(index, value.getNumber());
                onChanged();
                return this;
            }

            /**
             * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
             * @param value The deviceDrivers to add.
             * @return This builder for chaining.
             */
            public Builder addDeviceDrivers(context.ContextOuterClass.DeviceDriverEnum value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                ensureDeviceDriversIsMutable();
                deviceDrivers_.add(value.getNumber());
                onChanged();
                return this;
            }

            /**
             * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
             * @param values The deviceDrivers to add.
             * @return This builder for chaining.
             */
            public Builder addAllDeviceDrivers(java.lang.Iterable<? extends context.ContextOuterClass.DeviceDriverEnum> values) {
                ensureDeviceDriversIsMutable();
                for (context.ContextOuterClass.DeviceDriverEnum value : values) {
                    deviceDrivers_.add(value.getNumber());
                }
                onChanged();
                return this;
            }

            /**
             * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
             * @return This builder for chaining.
             */
            public Builder clearDeviceDrivers() {
                deviceDrivers_ = java.util.Collections.emptyList();
                bitField0_ = (bitField0_ & ~0x00000020);
                onChanged();
                return this;
            }

            /**
             * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
             * @return A list containing the enum numeric values on the wire for deviceDrivers.
             */
            public java.util.List<java.lang.Integer> getDeviceDriversValueList() {
                return java.util.Collections.unmodifiableList(deviceDrivers_);
            }

            /**
             * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
             * @param index The index of the value to return.
             * @return The enum numeric value on the wire of deviceDrivers at the given index.
             */
            public int getDeviceDriversValue(int index) {
                return deviceDrivers_.get(index);
            }

            /**
             * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
             * @param index The index to set the value at.
             * @param value The enum numeric value on the wire for deviceDrivers to set.
             * @return This builder for chaining.
             */
            public Builder setDeviceDriversValue(int index, int value) {
                ensureDeviceDriversIsMutable();
                deviceDrivers_.set(index, value);
                onChanged();
                return this;
            }

            /**
             * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
             * @param value The enum numeric value on the wire for deviceDrivers to add.
             * @return This builder for chaining.
             */
            public Builder addDeviceDriversValue(int value) {
                ensureDeviceDriversIsMutable();
                deviceDrivers_.add(value);
                onChanged();
                return this;
            }

            /**
             * <code>repeated .context.DeviceDriverEnum device_drivers = 6;</code>
             * @param values The enum numeric values on the wire for deviceDrivers to add.
             * @return This builder for chaining.
             */
            public Builder addAllDeviceDriversValue(java.lang.Iterable<java.lang.Integer> values) {
                ensureDeviceDriversIsMutable();
                for (int value : values) {
                    deviceDrivers_.add(value);
                }
                onChanged();
                return this;
            }

            private java.util.List<context.ContextOuterClass.EndPoint> deviceEndpoints_ = java.util.Collections.emptyList();

            private void ensureDeviceEndpointsIsMutable() {
                if (!((bitField0_ & 0x00000040) != 0)) {
                    deviceEndpoints_ = new java.util.ArrayList<context.ContextOuterClass.EndPoint>(deviceEndpoints_);
                    bitField0_ |= 0x00000040;
                }
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPoint, context.ContextOuterClass.EndPoint.Builder, context.ContextOuterClass.EndPointOrBuilder> deviceEndpointsBuilder_;

            /**
             * <code>repeated .context.EndPoint device_endpoints = 7;</code>
             */
            public java.util.List<context.ContextOuterClass.EndPoint> getDeviceEndpointsList() {
                if (deviceEndpointsBuilder_ == null) {
                    return java.util.Collections.unmodifiableList(deviceEndpoints_);
                } else {
                    return deviceEndpointsBuilder_.getMessageList();
                }
            }

            /**
             * <code>repeated .context.EndPoint device_endpoints = 7;</code>
             */
            public int getDeviceEndpointsCount() {
                if (deviceEndpointsBuilder_ == null) {
                    return deviceEndpoints_.size();
                } else {
                    return deviceEndpointsBuilder_.getCount();
                }
            }

            /**
             * <code>repeated .context.EndPoint device_endpoints = 7;</code>
             */
            public context.ContextOuterClass.EndPoint getDeviceEndpoints(int index) {
                if (deviceEndpointsBuilder_ == null) {
                    return deviceEndpoints_.get(index);
                } else {
                    return deviceEndpointsBuilder_.getMessage(index);
                }
            }

            /**
             * <code>repeated .context.EndPoint device_endpoints = 7;</code>
             */
            public Builder setDeviceEndpoints(int index, context.ContextOuterClass.EndPoint value) {
                if (deviceEndpointsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureDeviceEndpointsIsMutable();
                    deviceEndpoints_.set(index, value);
                    onChanged();
                } else {
                    deviceEndpointsBuilder_.setMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPoint device_endpoints = 7;</code>
             */
            public Builder setDeviceEndpoints(int index, context.ContextOuterClass.EndPoint.Builder builderForValue) {
                if (deviceEndpointsBuilder_ == null) {
                    ensureDeviceEndpointsIsMutable();
                    deviceEndpoints_.set(index, builderForValue.build());
                    onChanged();
                } else {
                    deviceEndpointsBuilder_.setMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPoint device_endpoints = 7;</code>
             */
            public Builder addDeviceEndpoints(context.ContextOuterClass.EndPoint value) {
                if (deviceEndpointsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureDeviceEndpointsIsMutable();
                    deviceEndpoints_.add(value);
                    onChanged();
                } else {
                    deviceEndpointsBuilder_.addMessage(value);
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPoint device_endpoints = 7;</code>
             */
            public Builder addDeviceEndpoints(int index, context.ContextOuterClass.EndPoint value) {
                if (deviceEndpointsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureDeviceEndpointsIsMutable();
                    deviceEndpoints_.add(index, value);
                    onChanged();
                } else {
                    deviceEndpointsBuilder_.addMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPoint device_endpoints = 7;</code>
             */
            public Builder addDeviceEndpoints(context.ContextOuterClass.EndPoint.Builder builderForValue) {
                if (deviceEndpointsBuilder_ == null) {
                    ensureDeviceEndpointsIsMutable();
                    deviceEndpoints_.add(builderForValue.build());
                    onChanged();
                } else {
                    deviceEndpointsBuilder_.addMessage(builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPoint device_endpoints = 7;</code>
             */
            public Builder addDeviceEndpoints(int index, context.ContextOuterClass.EndPoint.Builder builderForValue) {
                if (deviceEndpointsBuilder_ == null) {
                    ensureDeviceEndpointsIsMutable();
                    deviceEndpoints_.add(index, builderForValue.build());
                    onChanged();
                } else {
                    deviceEndpointsBuilder_.addMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPoint device_endpoints = 7;</code>
             */
            public Builder addAllDeviceEndpoints(java.lang.Iterable<? extends context.ContextOuterClass.EndPoint> values) {
                if (deviceEndpointsBuilder_ == null) {
                    ensureDeviceEndpointsIsMutable();
                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, deviceEndpoints_);
                    onChanged();
                } else {
                    deviceEndpointsBuilder_.addAllMessages(values);
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPoint device_endpoints = 7;</code>
             */
            public Builder clearDeviceEndpoints() {
                if (deviceEndpointsBuilder_ == null) {
                    deviceEndpoints_ = java.util.Collections.emptyList();
                    bitField0_ = (bitField0_ & ~0x00000040);
                    onChanged();
                } else {
                    deviceEndpointsBuilder_.clear();
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPoint device_endpoints = 7;</code>
             */
            public Builder removeDeviceEndpoints(int index) {
                if (deviceEndpointsBuilder_ == null) {
                    ensureDeviceEndpointsIsMutable();
                    deviceEndpoints_.remove(index);
                    onChanged();
                } else {
                    deviceEndpointsBuilder_.remove(index);
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPoint device_endpoints = 7;</code>
             */
            public context.ContextOuterClass.EndPoint.Builder getDeviceEndpointsBuilder(int index) {
                return getDeviceEndpointsFieldBuilder().getBuilder(index);
            }

            /**
             * <code>repeated .context.EndPoint device_endpoints = 7;</code>
             */
            public context.ContextOuterClass.EndPointOrBuilder getDeviceEndpointsOrBuilder(int index) {
                if (deviceEndpointsBuilder_ == null) {
                    return deviceEndpoints_.get(index);
                } else {
                    return deviceEndpointsBuilder_.getMessageOrBuilder(index);
                }
            }

            /**
             * <code>repeated .context.EndPoint device_endpoints = 7;</code>
             */
            public java.util.List<? extends context.ContextOuterClass.EndPointOrBuilder> getDeviceEndpointsOrBuilderList() {
                if (deviceEndpointsBuilder_ != null) {
                    return deviceEndpointsBuilder_.getMessageOrBuilderList();
                } else {
                    return java.util.Collections.unmodifiableList(deviceEndpoints_);
                }
            }

            /**
             * <code>repeated .context.EndPoint device_endpoints = 7;</code>
             */
            public context.ContextOuterClass.EndPoint.Builder addDeviceEndpointsBuilder() {
                return getDeviceEndpointsFieldBuilder().addBuilder(context.ContextOuterClass.EndPoint.getDefaultInstance());
            }

            /**
             * <code>repeated .context.EndPoint device_endpoints = 7;</code>
             */
            public context.ContextOuterClass.EndPoint.Builder addDeviceEndpointsBuilder(int index) {
                return getDeviceEndpointsFieldBuilder().addBuilder(index, context.ContextOuterClass.EndPoint.getDefaultInstance());
            }

            /**
             * <code>repeated .context.EndPoint device_endpoints = 7;</code>
             */
            public java.util.List<context.ContextOuterClass.EndPoint.Builder> getDeviceEndpointsBuilderList() {
                return getDeviceEndpointsFieldBuilder().getBuilderList();
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPoint, context.ContextOuterClass.EndPoint.Builder, context.ContextOuterClass.EndPointOrBuilder> getDeviceEndpointsFieldBuilder() {
                if (deviceEndpointsBuilder_ == null) {
                    deviceEndpointsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPoint, context.ContextOuterClass.EndPoint.Builder, context.ContextOuterClass.EndPointOrBuilder>(deviceEndpoints_, ((bitField0_ & 0x00000040) != 0), getParentForChildren(), isClean());
                    deviceEndpoints_ = null;
                }
                return deviceEndpointsBuilder_;
            }

            private java.util.List<context.ContextOuterClass.Component> components_ = java.util.Collections.emptyList();

            private void ensureComponentsIsMutable() {
                if (!((bitField0_ & 0x00000080) != 0)) {
                    components_ = new java.util.ArrayList<context.ContextOuterClass.Component>(components_);
                    bitField0_ |= 0x00000080;
                }
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Component, context.ContextOuterClass.Component.Builder, context.ContextOuterClass.ComponentOrBuilder> componentsBuilder_;

            /**
             * <pre>
             * Used for inventory
             * </pre>
             *
             * <code>repeated .context.Component components = 8;</code>
             */
            public java.util.List<context.ContextOuterClass.Component> getComponentsList() {
                if (componentsBuilder_ == null) {
                    return java.util.Collections.unmodifiableList(components_);
                } else {
                    return componentsBuilder_.getMessageList();
                }
            }

            /**
             * <pre>
             * Used for inventory
             * </pre>
             *
             * <code>repeated .context.Component components = 8;</code>
             */
            public int getComponentsCount() {
                if (componentsBuilder_ == null) {
                    return components_.size();
                } else {
                    return componentsBuilder_.getCount();
                }
            }

            /**
             * <pre>
             * Used for inventory
             * </pre>
             *
             * <code>repeated .context.Component components = 8;</code>
             */
            public context.ContextOuterClass.Component getComponents(int index) {
                if (componentsBuilder_ == null) {
                    return components_.get(index);
                } else {
                    return componentsBuilder_.getMessage(index);
                }
            }

            /**
             * <pre>
             * Used for inventory
             * </pre>
             *
             * <code>repeated .context.Component components = 8;</code>
             */
            public Builder setComponents(int index, context.ContextOuterClass.Component value) {
                if (componentsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureComponentsIsMutable();
                    components_.set(index, value);
                    onChanged();
                } else {
                    componentsBuilder_.setMessage(index, value);
                }
                return this;
            }

            /**
             * <pre>
             * Used for inventory
             * </pre>
             *
             * <code>repeated .context.Component components = 8;</code>
             */
            public Builder setComponents(int index, context.ContextOuterClass.Component.Builder builderForValue) {
                if (componentsBuilder_ == null) {
                    ensureComponentsIsMutable();
                    components_.set(index, builderForValue.build());
                    onChanged();
                } else {
                    componentsBuilder_.setMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <pre>
             * Used for inventory
             * </pre>
             *
             * <code>repeated .context.Component components = 8;</code>
             */
            public Builder addComponents(context.ContextOuterClass.Component value) {
                if (componentsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureComponentsIsMutable();
                    components_.add(value);
                    onChanged();
                } else {
                    componentsBuilder_.addMessage(value);
                }
                return this;
            }

            /**
             * <pre>
             * Used for inventory
             * </pre>
             *
             * <code>repeated .context.Component components = 8;</code>
             */
            public Builder addComponents(int index, context.ContextOuterClass.Component value) {
                if (componentsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureComponentsIsMutable();
                    components_.add(index, value);
                    onChanged();
                } else {
                    componentsBuilder_.addMessage(index, value);
                }
                return this;
            }

            /**
             * <pre>
             * Used for inventory
             * </pre>
             *
             * <code>repeated .context.Component components = 8;</code>
             */
            public Builder addComponents(context.ContextOuterClass.Component.Builder builderForValue) {
                if (componentsBuilder_ == null) {
                    ensureComponentsIsMutable();
                    components_.add(builderForValue.build());
                    onChanged();
                } else {
                    componentsBuilder_.addMessage(builderForValue.build());
                }
                return this;
            }

            /**
             * <pre>
             * Used for inventory
             * </pre>
             *
             * <code>repeated .context.Component components = 8;</code>
             */
            public Builder addComponents(int index, context.ContextOuterClass.Component.Builder builderForValue) {
                if (componentsBuilder_ == null) {
                    ensureComponentsIsMutable();
                    components_.add(index, builderForValue.build());
                    onChanged();
                } else {
                    componentsBuilder_.addMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <pre>
             * Used for inventory
             * </pre>
             *
             * <code>repeated .context.Component components = 8;</code>
             */
            public Builder addAllComponents(java.lang.Iterable<? extends context.ContextOuterClass.Component> values) {
                if (componentsBuilder_ == null) {
                    ensureComponentsIsMutable();
                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, components_);
                    onChanged();
                } else {
                    componentsBuilder_.addAllMessages(values);
                }
                return this;
            }

            /**
             * <pre>
             * Used for inventory
             * </pre>
             *
             * <code>repeated .context.Component components = 8;</code>
             */
            public Builder clearComponents() {
                if (componentsBuilder_ == null) {
                    components_ = java.util.Collections.emptyList();
                    bitField0_ = (bitField0_ & ~0x00000080);
                    onChanged();
                } else {
                    componentsBuilder_.clear();
                }
                return this;
            }

            /**
             * <pre>
             * Used for inventory
             * </pre>
             *
             * <code>repeated .context.Component components = 8;</code>
             */
            public Builder removeComponents(int index) {
                if (componentsBuilder_ == null) {
                    ensureComponentsIsMutable();
                    components_.remove(index);
                    onChanged();
                } else {
                    componentsBuilder_.remove(index);
                }
                return this;
            }

            /**
             * <pre>
             * Used for inventory
             * </pre>
             *
             * <code>repeated .context.Component components = 8;</code>
             */
            public context.ContextOuterClass.Component.Builder getComponentsBuilder(int index) {
                return getComponentsFieldBuilder().getBuilder(index);
            }

            /**
             * <pre>
             * Used for inventory
             * </pre>
             *
             * <code>repeated .context.Component components = 8;</code>
             */
            public context.ContextOuterClass.ComponentOrBuilder getComponentsOrBuilder(int index) {
                if (componentsBuilder_ == null) {
                    return components_.get(index);
                } else {
                    return componentsBuilder_.getMessageOrBuilder(index);
                }
            }

            /**
             * <pre>
             * Used for inventory
             * </pre>
             *
             * <code>repeated .context.Component components = 8;</code>
             */
            public java.util.List<? extends context.ContextOuterClass.ComponentOrBuilder> getComponentsOrBuilderList() {
                if (componentsBuilder_ != null) {
                    return componentsBuilder_.getMessageOrBuilderList();
                } else {
                    return java.util.Collections.unmodifiableList(components_);
                }
            }

            /**
             * <pre>
             * Used for inventory
             * </pre>
             *
             * <code>repeated .context.Component components = 8;</code>
             */
            public context.ContextOuterClass.Component.Builder addComponentsBuilder() {
                return getComponentsFieldBuilder().addBuilder(context.ContextOuterClass.Component.getDefaultInstance());
            }

            /**
             * <pre>
             * Used for inventory
             * </pre>
             *
             * <code>repeated .context.Component components = 8;</code>
             */
            public context.ContextOuterClass.Component.Builder addComponentsBuilder(int index) {
                return getComponentsFieldBuilder().addBuilder(index, context.ContextOuterClass.Component.getDefaultInstance());
            }

            /**
             * <pre>
             * Used for inventory
             * </pre>
             *
             * <code>repeated .context.Component components = 8;</code>
             */
            public java.util.List<context.ContextOuterClass.Component.Builder> getComponentsBuilderList() {
                return getComponentsFieldBuilder().getBuilderList();
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Component, context.ContextOuterClass.Component.Builder, context.ContextOuterClass.ComponentOrBuilder> getComponentsFieldBuilder() {
                if (componentsBuilder_ == null) {
                    componentsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Component, context.ContextOuterClass.Component.Builder, context.ContextOuterClass.ComponentOrBuilder>(components_, ((bitField0_ & 0x00000080) != 0), getParentForChildren(), isClean());
                    components_ = null;
                }
                return componentsBuilder_;
            }

            private context.ContextOuterClass.DeviceId controllerId_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> controllerIdBuilder_;

            /**
             * <pre>
             * Identifier of node controlling the actual device
             * </pre>
             *
             * <code>.context.DeviceId controller_id = 9;</code>
             * @return Whether the controllerId field is set.
             */
            public boolean hasControllerId() {
                return ((bitField0_ & 0x00000100) != 0);
            }

            /**
             * <pre>
             * Identifier of node controlling the actual device
             * </pre>
             *
             * <code>.context.DeviceId controller_id = 9;</code>
             * @return The controllerId.
             */
            public context.ContextOuterClass.DeviceId getControllerId() {
                if (controllerIdBuilder_ == null) {
                    return controllerId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : controllerId_;
                } else {
                    return controllerIdBuilder_.getMessage();
                }
            }

            /**
             * <pre>
             * Identifier of node controlling the actual device
             * </pre>
             *
             * <code>.context.DeviceId controller_id = 9;</code>
             */
            public Builder setControllerId(context.ContextOuterClass.DeviceId value) {
                if (controllerIdBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    controllerId_ = value;
                } else {
                    controllerIdBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000100;
                onChanged();
                return this;
            }

            /**
             * <pre>
             * Identifier of node controlling the actual device
             * </pre>
             *
             * <code>.context.DeviceId controller_id = 9;</code>
             */
            public Builder setControllerId(context.ContextOuterClass.DeviceId.Builder builderForValue) {
                if (controllerIdBuilder_ == null) {
                    controllerId_ = builderForValue.build();
                } else {
                    controllerIdBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000100;
                onChanged();
                return this;
            }

            /**
             * <pre>
             * Identifier of node controlling the actual device
             * </pre>
             *
             * <code>.context.DeviceId controller_id = 9;</code>
             */
            public Builder mergeControllerId(context.ContextOuterClass.DeviceId value) {
                if (controllerIdBuilder_ == null) {
                    if (((bitField0_ & 0x00000100) != 0) && controllerId_ != null && controllerId_ != context.ContextOuterClass.DeviceId.getDefaultInstance()) {
                        getControllerIdBuilder().mergeFrom(value);
                    } else {
                        controllerId_ = value;
                    }
                } else {
                    controllerIdBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000100;
                onChanged();
                return this;
            }

            /**
             * <pre>
             * Identifier of node controlling the actual device
             * </pre>
             *
             * <code>.context.DeviceId controller_id = 9;</code>
             */
            public Builder clearControllerId() {
                bitField0_ = (bitField0_ & ~0x00000100);
                controllerId_ = null;
                if (controllerIdBuilder_ != null) {
                    controllerIdBuilder_.dispose();
                    controllerIdBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <pre>
             * Identifier of node controlling the actual device
             * </pre>
             *
             * <code>.context.DeviceId controller_id = 9;</code>
             */
            public context.ContextOuterClass.DeviceId.Builder getControllerIdBuilder() {
                bitField0_ |= 0x00000100;
                onChanged();
                return getControllerIdFieldBuilder().getBuilder();
            }

            /**
             * <pre>
             * Identifier of node controlling the actual device
             * </pre>
             *
             * <code>.context.DeviceId controller_id = 9;</code>
             */
            public context.ContextOuterClass.DeviceIdOrBuilder getControllerIdOrBuilder() {
                if (controllerIdBuilder_ != null) {
                    return controllerIdBuilder_.getMessageOrBuilder();
                } else {
                    return controllerId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : controllerId_;
                }
            }

            /**
             * <pre>
             * Identifier of node controlling the actual device
             * </pre>
             *
             * <code>.context.DeviceId controller_id = 9;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> getControllerIdFieldBuilder() {
                if (controllerIdBuilder_ == null) {
                    controllerIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder>(getControllerId(), getParentForChildren(), isClean());
                    controllerId_ = null;
                }
                return controllerIdBuilder_;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.Device)
        }

        // @@protoc_insertion_point(class_scope:context.Device)
        private static final context.ContextOuterClass.Device DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.Device();
        }

        public static context.ContextOuterClass.Device getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<Device> PARSER = new com.google.protobuf.AbstractParser<Device>() {

            @java.lang.Override
            public Device parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<Device> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<Device> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.Device getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface ComponentOrBuilder extends // @@protoc_insertion_point(interface_extends:context.Component)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>.context.Uuid component_uuid = 1;</code>
         * @return Whether the componentUuid field is set.
         */
        boolean hasComponentUuid();

        /**
         * <code>.context.Uuid component_uuid = 1;</code>
         * @return The componentUuid.
         */
        context.ContextOuterClass.Uuid getComponentUuid();

        /**
         * <code>.context.Uuid component_uuid = 1;</code>
         */
        context.ContextOuterClass.UuidOrBuilder getComponentUuidOrBuilder();

        /**
         * <code>string name = 2;</code>
         * @return The name.
         */
        java.lang.String getName();

        /**
         * <code>string name = 2;</code>
         * @return The bytes for name.
         */
        com.google.protobuf.ByteString getNameBytes();

        /**
         * <code>string type = 3;</code>
         * @return The type.
         */
        java.lang.String getType();

        /**
         * <code>string type = 3;</code>
         * @return The bytes for type.
         */
        com.google.protobuf.ByteString getTypeBytes();

        /**
         * <pre>
         * dict[attr.name =&gt; json.dumps(attr.value)]
         * </pre>
         *
         * <code>map&lt;string, string&gt; attributes = 4;</code>
         */
        int getAttributesCount();

        /**
         * <pre>
         * dict[attr.name =&gt; json.dumps(attr.value)]
         * </pre>
         *
         * <code>map&lt;string, string&gt; attributes = 4;</code>
         */
        boolean containsAttributes(java.lang.String key);

        /**
         * Use {@link #getAttributesMap()} instead.
         */
        @java.lang.Deprecated
        java.util.Map<java.lang.String, java.lang.String> getAttributes();

        /**
         * <pre>
         * dict[attr.name =&gt; json.dumps(attr.value)]
         * </pre>
         *
         * <code>map&lt;string, string&gt; attributes = 4;</code>
         */
        java.util.Map<java.lang.String, java.lang.String> getAttributesMap();

        /**
         * <pre>
         * dict[attr.name =&gt; json.dumps(attr.value)]
         * </pre>
         *
         * <code>map&lt;string, string&gt; attributes = 4;</code>
         */
        /* nullable */
        java.lang.String getAttributesOrDefault(java.lang.String key, /* nullable */
        java.lang.String defaultValue);

        /**
         * <pre>
         * dict[attr.name =&gt; json.dumps(attr.value)]
         * </pre>
         *
         * <code>map&lt;string, string&gt; attributes = 4;</code>
         */
        java.lang.String getAttributesOrThrow(java.lang.String key);

        /**
         * <code>string parent = 5;</code>
         * @return The parent.
         */
        java.lang.String getParent();

        /**
         * <code>string parent = 5;</code>
         * @return The bytes for parent.
         */
        com.google.protobuf.ByteString getParentBytes();
    }

    /**
     *  <pre>
     * Defined previously to this section - Tested OK
     *  </pre>
     *
     *  Protobuf type {@code context.Component}
     */
    public static final class Component extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.Component)
    ComponentOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use Component.newBuilder() to construct.
        private Component(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private Component() {
            name_ = "";
            type_ = "";
            parent_ = "";
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new Component();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_Component_descriptor;
        }

        @SuppressWarnings({ "rawtypes" })
        @java.lang.Override
        protected com.google.protobuf.MapField internalGetMapField(int number) {
            switch(number) {
                case 4:
                    return internalGetAttributes();
                default:
                    throw new RuntimeException("Invalid map field number: " + number);
            }
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_Component_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Component.class, context.ContextOuterClass.Component.Builder.class);
        }

        public static final int COMPONENT_UUID_FIELD_NUMBER = 1;

        private context.ContextOuterClass.Uuid componentUuid_;

        /**
         * <code>.context.Uuid component_uuid = 1;</code>
         * @return Whether the componentUuid field is set.
         */
        @java.lang.Override
        public boolean hasComponentUuid() {
            return componentUuid_ != null;
        }

        /**
         * <code>.context.Uuid component_uuid = 1;</code>
         * @return The componentUuid.
         */
        @java.lang.Override
        public context.ContextOuterClass.Uuid getComponentUuid() {
            return componentUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : componentUuid_;
        }

        /**
         * <code>.context.Uuid component_uuid = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.UuidOrBuilder getComponentUuidOrBuilder() {
            return componentUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : componentUuid_;
        }

        public static final int NAME_FIELD_NUMBER = 2;

        @SuppressWarnings("serial")
        private volatile java.lang.Object name_ = "";

        /**
         * <code>string name = 2;</code>
         * @return The name.
         */
        @java.lang.Override
        public java.lang.String getName() {
            java.lang.Object ref = name_;
            if (ref instanceof java.lang.String) {
                return (java.lang.String) ref;
            } else {
                com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                java.lang.String s = bs.toStringUtf8();
                name_ = s;
                return s;
            }
        }

        /**
         * <code>string name = 2;</code>
         * @return The bytes for name.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString getNameBytes() {
            java.lang.Object ref = name_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                name_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int TYPE_FIELD_NUMBER = 3;

        @SuppressWarnings("serial")
        private volatile java.lang.Object type_ = "";

        /**
         * <code>string type = 3;</code>
         * @return The type.
         */
        @java.lang.Override
        public java.lang.String getType() {
            java.lang.Object ref = type_;
            if (ref instanceof java.lang.String) {
                return (java.lang.String) ref;
            } else {
                com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                java.lang.String s = bs.toStringUtf8();
                type_ = s;
                return s;
            }
        }

        /**
         * <code>string type = 3;</code>
         * @return The bytes for type.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString getTypeBytes() {
            java.lang.Object ref = type_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                type_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int ATTRIBUTES_FIELD_NUMBER = 4;

        private static final class AttributesDefaultEntryHolder {

            static final com.google.protobuf.MapEntry<java.lang.String, java.lang.String> defaultEntry = com.google.protobuf.MapEntry.<java.lang.String, java.lang.String>newDefaultInstance(context.ContextOuterClass.internal_static_context_Component_AttributesEntry_descriptor, com.google.protobuf.WireFormat.FieldType.STRING, "", com.google.protobuf.WireFormat.FieldType.STRING, "");
        }

        @SuppressWarnings("serial")
        private com.google.protobuf.MapField<java.lang.String, java.lang.String> attributes_;

        private com.google.protobuf.MapField<java.lang.String, java.lang.String> internalGetAttributes() {
            if (attributes_ == null) {
                return com.google.protobuf.MapField.emptyMapField(AttributesDefaultEntryHolder.defaultEntry);
            }
            return attributes_;
        }

        public int getAttributesCount() {
            return internalGetAttributes().getMap().size();
        }

        /**
         * <pre>
         * dict[attr.name =&gt; json.dumps(attr.value)]
         * </pre>
         *
         * <code>map&lt;string, string&gt; attributes = 4;</code>
         */
        @java.lang.Override
        public boolean containsAttributes(java.lang.String key) {
            if (key == null) {
                throw new NullPointerException("map key");
            }
            return internalGetAttributes().getMap().containsKey(key);
        }

        /**
         * Use {@link #getAttributesMap()} instead.
         */
        @java.lang.Override
        @java.lang.Deprecated
        public java.util.Map<java.lang.String, java.lang.String> getAttributes() {
            return getAttributesMap();
        }

        /**
         * <pre>
         * dict[attr.name =&gt; json.dumps(attr.value)]
         * </pre>
         *
         * <code>map&lt;string, string&gt; attributes = 4;</code>
         */
        @java.lang.Override
        public java.util.Map<java.lang.String, java.lang.String> getAttributesMap() {
            return internalGetAttributes().getMap();
        }

        /**
         * <pre>
         * dict[attr.name =&gt; json.dumps(attr.value)]
         * </pre>
         *
         * <code>map&lt;string, string&gt; attributes = 4;</code>
         */
        @java.lang.Override
        public /* nullable */
        java.lang.String getAttributesOrDefault(java.lang.String key, /* nullable */
        java.lang.String defaultValue) {
            if (key == null) {
                throw new NullPointerException("map key");
            }
            java.util.Map<java.lang.String, java.lang.String> map = internalGetAttributes().getMap();
            return map.containsKey(key) ? map.get(key) : defaultValue;
        }

        /**
         * <pre>
         * dict[attr.name =&gt; json.dumps(attr.value)]
         * </pre>
         *
         * <code>map&lt;string, string&gt; attributes = 4;</code>
         */
        @java.lang.Override
        public java.lang.String getAttributesOrThrow(java.lang.String key) {
            if (key == null) {
                throw new NullPointerException("map key");
            }
            java.util.Map<java.lang.String, java.lang.String> map = internalGetAttributes().getMap();
            if (!map.containsKey(key)) {
                throw new java.lang.IllegalArgumentException();
            }
            return map.get(key);
        }

        public static final int PARENT_FIELD_NUMBER = 5;

        @SuppressWarnings("serial")
        private volatile java.lang.Object parent_ = "";

        /**
         * <code>string parent = 5;</code>
         * @return The parent.
         */
        @java.lang.Override
        public java.lang.String getParent() {
            java.lang.Object ref = parent_;
            if (ref instanceof java.lang.String) {
                return (java.lang.String) ref;
            } else {
                com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                java.lang.String s = bs.toStringUtf8();
                parent_ = s;
                return s;
            }
        }

        /**
         * <code>string parent = 5;</code>
         * @return The bytes for parent.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString getParentBytes() {
            java.lang.Object ref = parent_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                parent_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            if (componentUuid_ != null) {
                output.writeMessage(1, getComponentUuid());
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(type_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 3, type_);
            }
            com.google.protobuf.GeneratedMessageV3.serializeStringMapTo(output, internalGetAttributes(), AttributesDefaultEntryHolder.defaultEntry, 4);
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(parent_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 5, parent_);
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            if (componentUuid_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getComponentUuid());
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(type_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, type_);
            }
            for (java.util.Map.Entry<java.lang.String, java.lang.String> entry : internalGetAttributes().getMap().entrySet()) {
                com.google.protobuf.MapEntry<java.lang.String, java.lang.String> attributes__ = AttributesDefaultEntryHolder.defaultEntry.newBuilderForType().setKey(entry.getKey()).setValue(entry.getValue()).build();
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, attributes__);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(parent_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, parent_);
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.Component)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.Component other = (context.ContextOuterClass.Component) obj;
            if (hasComponentUuid() != other.hasComponentUuid())
                return false;
            if (hasComponentUuid()) {
                if (!getComponentUuid().equals(other.getComponentUuid()))
                    return false;
            }
            if (!getName().equals(other.getName()))
                return false;
            if (!getType().equals(other.getType()))
                return false;
            if (!internalGetAttributes().equals(other.internalGetAttributes()))
                return false;
            if (!getParent().equals(other.getParent()))
                return false;
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            if (hasComponentUuid()) {
                hash = (37 * hash) + COMPONENT_UUID_FIELD_NUMBER;
                hash = (53 * hash) + getComponentUuid().hashCode();
            }
            hash = (37 * hash) + NAME_FIELD_NUMBER;
            hash = (53 * hash) + getName().hashCode();
            hash = (37 * hash) + TYPE_FIELD_NUMBER;
            hash = (53 * hash) + getType().hashCode();
            if (!internalGetAttributes().getMap().isEmpty()) {
                hash = (37 * hash) + ATTRIBUTES_FIELD_NUMBER;
                hash = (53 * hash) + internalGetAttributes().hashCode();
            }
            hash = (37 * hash) + PARENT_FIELD_NUMBER;
            hash = (53 * hash) + getParent().hashCode();
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.Component parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.Component parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.Component parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.Component parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.Component parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.Component parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.Component parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.Component parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.Component parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.Component parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.Component parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.Component parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.Component prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         *  <pre>
         * Defined previously to this section - Tested OK
         *  </pre>
         *
         *  Protobuf type {@code context.Component}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.Component)
        context.ContextOuterClass.ComponentOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_Component_descriptor;
            }

            @SuppressWarnings({ "rawtypes" })
            protected com.google.protobuf.MapField internalGetMapField(int number) {
                switch(number) {
                    case 4:
                        return internalGetAttributes();
                    default:
                        throw new RuntimeException("Invalid map field number: " + number);
                }
            }

            @SuppressWarnings({ "rawtypes" })
            protected com.google.protobuf.MapField internalGetMutableMapField(int number) {
                switch(number) {
                    case 4:
                        return internalGetMutableAttributes();
                    default:
                        throw new RuntimeException("Invalid map field number: " + number);
                }
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_Component_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Component.class, context.ContextOuterClass.Component.Builder.class);
            }

            // Construct using context.ContextOuterClass.Component.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                componentUuid_ = null;
                if (componentUuidBuilder_ != null) {
                    componentUuidBuilder_.dispose();
                    componentUuidBuilder_ = null;
                }
                name_ = "";
                type_ = "";
                internalGetMutableAttributes().clear();
                parent_ = "";
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_Component_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.Component getDefaultInstanceForType() {
                return context.ContextOuterClass.Component.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.Component build() {
                context.ContextOuterClass.Component result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.Component buildPartial() {
                context.ContextOuterClass.Component result = new context.ContextOuterClass.Component(this);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartial0(context.ContextOuterClass.Component result) {
                int from_bitField0_ = bitField0_;
                if (((from_bitField0_ & 0x00000001) != 0)) {
                    result.componentUuid_ = componentUuidBuilder_ == null ? componentUuid_ : componentUuidBuilder_.build();
                }
                if (((from_bitField0_ & 0x00000002) != 0)) {
                    result.name_ = name_;
                }
                if (((from_bitField0_ & 0x00000004) != 0)) {
                    result.type_ = type_;
                }
                if (((from_bitField0_ & 0x00000008) != 0)) {
                    result.attributes_ = internalGetAttributes();
                    result.attributes_.makeImmutable();
                }
                if (((from_bitField0_ & 0x00000010) != 0)) {
                    result.parent_ = parent_;
                }
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.Component) {
                    return mergeFrom((context.ContextOuterClass.Component) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.Component other) {
                if (other == context.ContextOuterClass.Component.getDefaultInstance())
                    return this;
                if (other.hasComponentUuid()) {
                    mergeComponentUuid(other.getComponentUuid());
                }
                if (!other.getName().isEmpty()) {
                    name_ = other.name_;
                    bitField0_ |= 0x00000002;
                    onChanged();
                }
                if (!other.getType().isEmpty()) {
                    type_ = other.type_;
                    bitField0_ |= 0x00000004;
                    onChanged();
                }
                internalGetMutableAttributes().mergeFrom(other.internalGetAttributes());
                bitField0_ |= 0x00000008;
                if (!other.getParent().isEmpty()) {
                    parent_ = other.parent_;
                    bitField0_ |= 0x00000010;
                    onChanged();
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 10:
                                {
                                    input.readMessage(getComponentUuidFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000001;
                                    break;
                                }
                            // case 10
                            case 18:
                                {
                                    name_ = input.readStringRequireUtf8();
                                    bitField0_ |= 0x00000002;
                                    break;
                                }
                            // case 18
                            case 26:
                                {
                                    type_ = input.readStringRequireUtf8();
                                    bitField0_ |= 0x00000004;
                                    break;
                                }
                            // case 26
                            case 34:
                                {
                                    com.google.protobuf.MapEntry<java.lang.String, java.lang.String> attributes__ = input.readMessage(AttributesDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                                    internalGetMutableAttributes().getMutableMap().put(attributes__.getKey(), attributes__.getValue());
                                    bitField0_ |= 0x00000008;
                                    break;
                                }
                            // case 34
                            case 42:
                                {
                                    parent_ = input.readStringRequireUtf8();
                                    bitField0_ |= 0x00000010;
                                    break;
                                }
                            // case 42
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private context.ContextOuterClass.Uuid componentUuid_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> componentUuidBuilder_;

            /**
             * <code>.context.Uuid component_uuid = 1;</code>
             * @return Whether the componentUuid field is set.
             */
            public boolean hasComponentUuid() {
                return ((bitField0_ & 0x00000001) != 0);
            }

            /**
             * <code>.context.Uuid component_uuid = 1;</code>
             * @return The componentUuid.
             */
            public context.ContextOuterClass.Uuid getComponentUuid() {
                if (componentUuidBuilder_ == null) {
                    return componentUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : componentUuid_;
                } else {
                    return componentUuidBuilder_.getMessage();
                }
            }

            /**
             * <code>.context.Uuid component_uuid = 1;</code>
             */
            public Builder setComponentUuid(context.ContextOuterClass.Uuid value) {
                if (componentUuidBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    componentUuid_ = value;
                } else {
                    componentUuidBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.Uuid component_uuid = 1;</code>
             */
            public Builder setComponentUuid(context.ContextOuterClass.Uuid.Builder builderForValue) {
                if (componentUuidBuilder_ == null) {
                    componentUuid_ = builderForValue.build();
                } else {
                    componentUuidBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.Uuid component_uuid = 1;</code>
             */
            public Builder mergeComponentUuid(context.ContextOuterClass.Uuid value) {
                if (componentUuidBuilder_ == null) {
                    if (((bitField0_ & 0x00000001) != 0) && componentUuid_ != null && componentUuid_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
                        getComponentUuidBuilder().mergeFrom(value);
                    } else {
                        componentUuid_ = value;
                    }
                } else {
                    componentUuidBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.Uuid component_uuid = 1;</code>
             */
            public Builder clearComponentUuid() {
                bitField0_ = (bitField0_ & ~0x00000001);
                componentUuid_ = null;
                if (componentUuidBuilder_ != null) {
                    componentUuidBuilder_.dispose();
                    componentUuidBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.Uuid component_uuid = 1;</code>
             */
            public context.ContextOuterClass.Uuid.Builder getComponentUuidBuilder() {
                bitField0_ |= 0x00000001;
                onChanged();
                return getComponentUuidFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.Uuid component_uuid = 1;</code>
             */
            public context.ContextOuterClass.UuidOrBuilder getComponentUuidOrBuilder() {
                if (componentUuidBuilder_ != null) {
                    return componentUuidBuilder_.getMessageOrBuilder();
                } else {
                    return componentUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : componentUuid_;
                }
            }

            /**
             * <code>.context.Uuid component_uuid = 1;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> getComponentUuidFieldBuilder() {
                if (componentUuidBuilder_ == null) {
                    componentUuidBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder>(getComponentUuid(), getParentForChildren(), isClean());
                    componentUuid_ = null;
                }
                return componentUuidBuilder_;
            }

            private java.lang.Object name_ = "";

            /**
             * <code>string name = 2;</code>
             * @return The name.
             */
            public java.lang.String getName() {
                java.lang.Object ref = name_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    name_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }

            /**
             * <code>string name = 2;</code>
             * @return The bytes for name.
             */
            public com.google.protobuf.ByteString getNameBytes() {
                java.lang.Object ref = name_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                    name_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }

            /**
             * <code>string name = 2;</code>
             * @param value The name to set.
             * @return This builder for chaining.
             */
            public Builder setName(java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                name_ = value;
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>string name = 2;</code>
             * @return This builder for chaining.
             */
            public Builder clearName() {
                name_ = getDefaultInstance().getName();
                bitField0_ = (bitField0_ & ~0x00000002);
                onChanged();
                return this;
            }

            /**
             * <code>string name = 2;</code>
             * @param value The bytes for name to set.
             * @return This builder for chaining.
             */
            public Builder setNameBytes(com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);
                name_ = value;
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            private java.lang.Object type_ = "";

            /**
             * <code>string type = 3;</code>
             * @return The type.
             */
            public java.lang.String getType() {
                java.lang.Object ref = type_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    type_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }

            /**
             * <code>string type = 3;</code>
             * @return The bytes for type.
             */
            public com.google.protobuf.ByteString getTypeBytes() {
                java.lang.Object ref = type_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                    type_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }

            /**
             * <code>string type = 3;</code>
             * @param value The type to set.
             * @return This builder for chaining.
             */
            public Builder setType(java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                type_ = value;
                bitField0_ |= 0x00000004;
                onChanged();
                return this;
            }

            /**
             * <code>string type = 3;</code>
             * @return This builder for chaining.
             */
            public Builder clearType() {
                type_ = getDefaultInstance().getType();
                bitField0_ = (bitField0_ & ~0x00000004);
                onChanged();
                return this;
            }

            /**
             * <code>string type = 3;</code>
             * @param value The bytes for type to set.
             * @return This builder for chaining.
             */
            public Builder setTypeBytes(com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);
                type_ = value;
                bitField0_ |= 0x00000004;
                onChanged();
                return this;
            }

            private com.google.protobuf.MapField<java.lang.String, java.lang.String> attributes_;

            private com.google.protobuf.MapField<java.lang.String, java.lang.String> internalGetAttributes() {
                if (attributes_ == null) {
                    return com.google.protobuf.MapField.emptyMapField(AttributesDefaultEntryHolder.defaultEntry);
                }
                return attributes_;
            }

            private com.google.protobuf.MapField<java.lang.String, java.lang.String> internalGetMutableAttributes() {
                if (attributes_ == null) {
                    attributes_ = com.google.protobuf.MapField.newMapField(AttributesDefaultEntryHolder.defaultEntry);
                }
                if (!attributes_.isMutable()) {
                    attributes_ = attributes_.copy();
                }
                bitField0_ |= 0x00000008;
                onChanged();
                return attributes_;
            }

            public int getAttributesCount() {
                return internalGetAttributes().getMap().size();
            }

            /**
             * <pre>
             * dict[attr.name =&gt; json.dumps(attr.value)]
             * </pre>
             *
             * <code>map&lt;string, string&gt; attributes = 4;</code>
             */
            @java.lang.Override
            public boolean containsAttributes(java.lang.String key) {
                if (key == null) {
                    throw new NullPointerException("map key");
                }
                return internalGetAttributes().getMap().containsKey(key);
            }

            /**
             * Use {@link #getAttributesMap()} instead.
             */
            @java.lang.Override
            @java.lang.Deprecated
            public java.util.Map<java.lang.String, java.lang.String> getAttributes() {
                return getAttributesMap();
            }

            /**
             * <pre>
             * dict[attr.name =&gt; json.dumps(attr.value)]
             * </pre>
             *
             * <code>map&lt;string, string&gt; attributes = 4;</code>
             */
            @java.lang.Override
            public java.util.Map<java.lang.String, java.lang.String> getAttributesMap() {
                return internalGetAttributes().getMap();
            }

            /**
             * <pre>
             * dict[attr.name =&gt; json.dumps(attr.value)]
             * </pre>
             *
             * <code>map&lt;string, string&gt; attributes = 4;</code>
             */
            @java.lang.Override
            public /* nullable */
            java.lang.String getAttributesOrDefault(java.lang.String key, /* nullable */
            java.lang.String defaultValue) {
                if (key == null) {
                    throw new NullPointerException("map key");
                }
                java.util.Map<java.lang.String, java.lang.String> map = internalGetAttributes().getMap();
                return map.containsKey(key) ? map.get(key) : defaultValue;
            }

            /**
             * <pre>
             * dict[attr.name =&gt; json.dumps(attr.value)]
             * </pre>
             *
             * <code>map&lt;string, string&gt; attributes = 4;</code>
             */
            @java.lang.Override
            public java.lang.String getAttributesOrThrow(java.lang.String key) {
                if (key == null) {
                    throw new NullPointerException("map key");
                }
                java.util.Map<java.lang.String, java.lang.String> map = internalGetAttributes().getMap();
                if (!map.containsKey(key)) {
                    throw new java.lang.IllegalArgumentException();
                }
                return map.get(key);
            }

            public Builder clearAttributes() {
                bitField0_ = (bitField0_ & ~0x00000008);
                internalGetMutableAttributes().getMutableMap().clear();
                return this;
            }

            /**
             * <pre>
             * dict[attr.name =&gt; json.dumps(attr.value)]
             * </pre>
             *
             * <code>map&lt;string, string&gt; attributes = 4;</code>
             */
            public Builder removeAttributes(java.lang.String key) {
                if (key == null) {
                    throw new NullPointerException("map key");
                }
                internalGetMutableAttributes().getMutableMap().remove(key);
                return this;
            }

            /**
             * Use alternate mutation accessors instead.
             */
            @java.lang.Deprecated
            public java.util.Map<java.lang.String, java.lang.String> getMutableAttributes() {
                bitField0_ |= 0x00000008;
                return internalGetMutableAttributes().getMutableMap();
            }

            /**
             * <pre>
             * dict[attr.name =&gt; json.dumps(attr.value)]
             * </pre>
             *
             * <code>map&lt;string, string&gt; attributes = 4;</code>
             */
            public Builder putAttributes(java.lang.String key, java.lang.String value) {
                if (key == null) {
                    throw new NullPointerException("map key");
                }
                if (value == null) {
                    throw new NullPointerException("map value");
                }
                internalGetMutableAttributes().getMutableMap().put(key, value);
                bitField0_ |= 0x00000008;
                return this;
            }

            /**
             * <pre>
             * dict[attr.name =&gt; json.dumps(attr.value)]
             * </pre>
             *
             * <code>map&lt;string, string&gt; attributes = 4;</code>
             */
            public Builder putAllAttributes(java.util.Map<java.lang.String, java.lang.String> values) {
                internalGetMutableAttributes().getMutableMap().putAll(values);
                bitField0_ |= 0x00000008;
                return this;
            }

            private java.lang.Object parent_ = "";

            /**
             * <code>string parent = 5;</code>
             * @return The parent.
             */
            public java.lang.String getParent() {
                java.lang.Object ref = parent_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    parent_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }

            /**
             * <code>string parent = 5;</code>
             * @return The bytes for parent.
             */
            public com.google.protobuf.ByteString getParentBytes() {
                java.lang.Object ref = parent_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                    parent_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }

            /**
             * <code>string parent = 5;</code>
             * @param value The parent to set.
             * @return This builder for chaining.
             */
            public Builder setParent(java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                parent_ = value;
                bitField0_ |= 0x00000010;
                onChanged();
                return this;
            }

            /**
             * <code>string parent = 5;</code>
             * @return This builder for chaining.
             */
            public Builder clearParent() {
                parent_ = getDefaultInstance().getParent();
                bitField0_ = (bitField0_ & ~0x00000010);
                onChanged();
                return this;
            }

            /**
             * <code>string parent = 5;</code>
             * @param value The bytes for parent to set.
             * @return This builder for chaining.
             */
            public Builder setParentBytes(com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);
                parent_ = value;
                bitField0_ |= 0x00000010;
                onChanged();
                return this;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.Component)
        }

        // @@protoc_insertion_point(class_scope:context.Component)
        private static final context.ContextOuterClass.Component DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.Component();
        }

        public static context.ContextOuterClass.Component getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<Component> PARSER = new com.google.protobuf.AbstractParser<Component>() {

            @java.lang.Override
            public Component parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<Component> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<Component> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.Component getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface DeviceConfigOrBuilder extends // @@protoc_insertion_point(interface_extends:context.DeviceConfig)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>repeated .context.ConfigRule config_rules = 1;</code>
         */
        java.util.List<context.ContextOuterClass.ConfigRule> getConfigRulesList();

        /**
         * <code>repeated .context.ConfigRule config_rules = 1;</code>
         */
        context.ContextOuterClass.ConfigRule getConfigRules(int index);

        /**
         * <code>repeated .context.ConfigRule config_rules = 1;</code>
         */
        int getConfigRulesCount();

        /**
         * <code>repeated .context.ConfigRule config_rules = 1;</code>
         */
        java.util.List<? extends context.ContextOuterClass.ConfigRuleOrBuilder> getConfigRulesOrBuilderList();

        /**
         * <code>repeated .context.ConfigRule config_rules = 1;</code>
         */
        context.ContextOuterClass.ConfigRuleOrBuilder getConfigRulesOrBuilder(int index);
    }

    /**
     * Protobuf type {@code context.DeviceConfig}
     */
    public static final class DeviceConfig extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.DeviceConfig)
    DeviceConfigOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use DeviceConfig.newBuilder() to construct.
        private DeviceConfig(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private DeviceConfig() {
            configRules_ = java.util.Collections.emptyList();
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new DeviceConfig();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_DeviceConfig_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_DeviceConfig_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.DeviceConfig.class, context.ContextOuterClass.DeviceConfig.Builder.class);
        }

        public static final int CONFIG_RULES_FIELD_NUMBER = 1;

        @SuppressWarnings("serial")
        private java.util.List<context.ContextOuterClass.ConfigRule> configRules_;

        /**
         * <code>repeated .context.ConfigRule config_rules = 1;</code>
         */
        @java.lang.Override
        public java.util.List<context.ContextOuterClass.ConfigRule> getConfigRulesList() {
            return configRules_;
        }

        /**
         * <code>repeated .context.ConfigRule config_rules = 1;</code>
         */
        @java.lang.Override
        public java.util.List<? extends context.ContextOuterClass.ConfigRuleOrBuilder> getConfigRulesOrBuilderList() {
            return configRules_;
        }

        /**
         * <code>repeated .context.ConfigRule config_rules = 1;</code>
         */
        @java.lang.Override
        public int getConfigRulesCount() {
            return configRules_.size();
        }

        /**
         * <code>repeated .context.ConfigRule config_rules = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.ConfigRule getConfigRules(int index) {
            return configRules_.get(index);
        }

        /**
         * <code>repeated .context.ConfigRule config_rules = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.ConfigRuleOrBuilder getConfigRulesOrBuilder(int index) {
            return configRules_.get(index);
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            for (int i = 0; i < configRules_.size(); i++) {
                output.writeMessage(1, configRules_.get(i));
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            for (int i = 0; i < configRules_.size(); i++) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, configRules_.get(i));
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.DeviceConfig)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.DeviceConfig other = (context.ContextOuterClass.DeviceConfig) obj;
            if (!getConfigRulesList().equals(other.getConfigRulesList()))
                return false;
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            if (getConfigRulesCount() > 0) {
                hash = (37 * hash) + CONFIG_RULES_FIELD_NUMBER;
                hash = (53 * hash) + getConfigRulesList().hashCode();
            }
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.DeviceConfig parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.DeviceConfig parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.DeviceConfig parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.DeviceConfig parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.DeviceConfig parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.DeviceConfig parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.DeviceConfig parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.DeviceConfig parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.DeviceConfig parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.DeviceConfig parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.DeviceConfig parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.DeviceConfig parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.DeviceConfig prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code context.DeviceConfig}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.DeviceConfig)
        context.ContextOuterClass.DeviceConfigOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_DeviceConfig_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_DeviceConfig_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.DeviceConfig.class, context.ContextOuterClass.DeviceConfig.Builder.class);
            }

            // Construct using context.ContextOuterClass.DeviceConfig.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                if (configRulesBuilder_ == null) {
                    configRules_ = java.util.Collections.emptyList();
                } else {
                    configRules_ = null;
                    configRulesBuilder_.clear();
                }
                bitField0_ = (bitField0_ & ~0x00000001);
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_DeviceConfig_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.DeviceConfig getDefaultInstanceForType() {
                return context.ContextOuterClass.DeviceConfig.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.DeviceConfig build() {
                context.ContextOuterClass.DeviceConfig result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.DeviceConfig buildPartial() {
                context.ContextOuterClass.DeviceConfig result = new context.ContextOuterClass.DeviceConfig(this);
                buildPartialRepeatedFields(result);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartialRepeatedFields(context.ContextOuterClass.DeviceConfig result) {
                if (configRulesBuilder_ == null) {
                    if (((bitField0_ & 0x00000001) != 0)) {
                        configRules_ = java.util.Collections.unmodifiableList(configRules_);
                        bitField0_ = (bitField0_ & ~0x00000001);
                    }
                    result.configRules_ = configRules_;
                } else {
                    result.configRules_ = configRulesBuilder_.build();
                }
            }

            private void buildPartial0(context.ContextOuterClass.DeviceConfig result) {
                int from_bitField0_ = bitField0_;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.DeviceConfig) {
                    return mergeFrom((context.ContextOuterClass.DeviceConfig) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.DeviceConfig other) {
                if (other == context.ContextOuterClass.DeviceConfig.getDefaultInstance())
                    return this;
                if (configRulesBuilder_ == null) {
                    if (!other.configRules_.isEmpty()) {
                        if (configRules_.isEmpty()) {
                            configRules_ = other.configRules_;
                            bitField0_ = (bitField0_ & ~0x00000001);
                        } else {
                            ensureConfigRulesIsMutable();
                            configRules_.addAll(other.configRules_);
                        }
                        onChanged();
                    }
                } else {
                    if (!other.configRules_.isEmpty()) {
                        if (configRulesBuilder_.isEmpty()) {
                            configRulesBuilder_.dispose();
                            configRulesBuilder_ = null;
                            configRules_ = other.configRules_;
                            bitField0_ = (bitField0_ & ~0x00000001);
                            configRulesBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getConfigRulesFieldBuilder() : null;
                        } else {
                            configRulesBuilder_.addAllMessages(other.configRules_);
                        }
                    }
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 10:
                                {
                                    context.ContextOuterClass.ConfigRule m = input.readMessage(context.ContextOuterClass.ConfigRule.parser(), extensionRegistry);
                                    if (configRulesBuilder_ == null) {
                                        ensureConfigRulesIsMutable();
                                        configRules_.add(m);
                                    } else {
                                        configRulesBuilder_.addMessage(m);
                                    }
                                    break;
                                }
                            // case 10
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private java.util.List<context.ContextOuterClass.ConfigRule> configRules_ = java.util.Collections.emptyList();

            private void ensureConfigRulesIsMutable() {
                if (!((bitField0_ & 0x00000001) != 0)) {
                    configRules_ = new java.util.ArrayList<context.ContextOuterClass.ConfigRule>(configRules_);
                    bitField0_ |= 0x00000001;
                }
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.ConfigRule, context.ContextOuterClass.ConfigRule.Builder, context.ContextOuterClass.ConfigRuleOrBuilder> configRulesBuilder_;

            /**
             * <code>repeated .context.ConfigRule config_rules = 1;</code>
             */
            public java.util.List<context.ContextOuterClass.ConfigRule> getConfigRulesList() {
                if (configRulesBuilder_ == null) {
                    return java.util.Collections.unmodifiableList(configRules_);
                } else {
                    return configRulesBuilder_.getMessageList();
                }
            }

            /**
             * <code>repeated .context.ConfigRule config_rules = 1;</code>
             */
            public int getConfigRulesCount() {
                if (configRulesBuilder_ == null) {
                    return configRules_.size();
                } else {
                    return configRulesBuilder_.getCount();
                }
            }

            /**
             * <code>repeated .context.ConfigRule config_rules = 1;</code>
             */
            public context.ContextOuterClass.ConfigRule getConfigRules(int index) {
                if (configRulesBuilder_ == null) {
                    return configRules_.get(index);
                } else {
                    return configRulesBuilder_.getMessage(index);
                }
            }

            /**
             * <code>repeated .context.ConfigRule config_rules = 1;</code>
             */
            public Builder setConfigRules(int index, context.ContextOuterClass.ConfigRule value) {
                if (configRulesBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureConfigRulesIsMutable();
                    configRules_.set(index, value);
                    onChanged();
                } else {
                    configRulesBuilder_.setMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.ConfigRule config_rules = 1;</code>
             */
            public Builder setConfigRules(int index, context.ContextOuterClass.ConfigRule.Builder builderForValue) {
                if (configRulesBuilder_ == null) {
                    ensureConfigRulesIsMutable();
                    configRules_.set(index, builderForValue.build());
                    onChanged();
                } else {
                    configRulesBuilder_.setMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.ConfigRule config_rules = 1;</code>
             */
            public Builder addConfigRules(context.ContextOuterClass.ConfigRule value) {
                if (configRulesBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureConfigRulesIsMutable();
                    configRules_.add(value);
                    onChanged();
                } else {
                    configRulesBuilder_.addMessage(value);
                }
                return this;
            }

            /**
             * <code>repeated .context.ConfigRule config_rules = 1;</code>
             */
            public Builder addConfigRules(int index, context.ContextOuterClass.ConfigRule value) {
                if (configRulesBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureConfigRulesIsMutable();
                    configRules_.add(index, value);
                    onChanged();
                } else {
                    configRulesBuilder_.addMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.ConfigRule config_rules = 1;</code>
             */
            public Builder addConfigRules(context.ContextOuterClass.ConfigRule.Builder builderForValue) {
                if (configRulesBuilder_ == null) {
                    ensureConfigRulesIsMutable();
                    configRules_.add(builderForValue.build());
                    onChanged();
                } else {
                    configRulesBuilder_.addMessage(builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.ConfigRule config_rules = 1;</code>
             */
            public Builder addConfigRules(int index, context.ContextOuterClass.ConfigRule.Builder builderForValue) {
                if (configRulesBuilder_ == null) {
                    ensureConfigRulesIsMutable();
                    configRules_.add(index, builderForValue.build());
                    onChanged();
                } else {
                    configRulesBuilder_.addMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.ConfigRule config_rules = 1;</code>
             */
            public Builder addAllConfigRules(java.lang.Iterable<? extends context.ContextOuterClass.ConfigRule> values) {
                if (configRulesBuilder_ == null) {
                    ensureConfigRulesIsMutable();
                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, configRules_);
                    onChanged();
                } else {
                    configRulesBuilder_.addAllMessages(values);
                }
                return this;
            }

            /**
             * <code>repeated .context.ConfigRule config_rules = 1;</code>
             */
            public Builder clearConfigRules() {
                if (configRulesBuilder_ == null) {
                    configRules_ = java.util.Collections.emptyList();
                    bitField0_ = (bitField0_ & ~0x00000001);
                    onChanged();
                } else {
                    configRulesBuilder_.clear();
                }
                return this;
            }

            /**
             * <code>repeated .context.ConfigRule config_rules = 1;</code>
             */
            public Builder removeConfigRules(int index) {
                if (configRulesBuilder_ == null) {
                    ensureConfigRulesIsMutable();
                    configRules_.remove(index);
                    onChanged();
                } else {
                    configRulesBuilder_.remove(index);
                }
                return this;
            }

            /**
             * <code>repeated .context.ConfigRule config_rules = 1;</code>
             */
            public context.ContextOuterClass.ConfigRule.Builder getConfigRulesBuilder(int index) {
                return getConfigRulesFieldBuilder().getBuilder(index);
            }

            /**
             * <code>repeated .context.ConfigRule config_rules = 1;</code>
             */
            public context.ContextOuterClass.ConfigRuleOrBuilder getConfigRulesOrBuilder(int index) {
                if (configRulesBuilder_ == null) {
                    return configRules_.get(index);
                } else {
                    return configRulesBuilder_.getMessageOrBuilder(index);
                }
            }

            /**
             * <code>repeated .context.ConfigRule config_rules = 1;</code>
             */
            public java.util.List<? extends context.ContextOuterClass.ConfigRuleOrBuilder> getConfigRulesOrBuilderList() {
                if (configRulesBuilder_ != null) {
                    return configRulesBuilder_.getMessageOrBuilderList();
                } else {
                    return java.util.Collections.unmodifiableList(configRules_);
                }
            }

            /**
             * <code>repeated .context.ConfigRule config_rules = 1;</code>
             */
            public context.ContextOuterClass.ConfigRule.Builder addConfigRulesBuilder() {
                return getConfigRulesFieldBuilder().addBuilder(context.ContextOuterClass.ConfigRule.getDefaultInstance());
            }

            /**
             * <code>repeated .context.ConfigRule config_rules = 1;</code>
             */
            public context.ContextOuterClass.ConfigRule.Builder addConfigRulesBuilder(int index) {
                return getConfigRulesFieldBuilder().addBuilder(index, context.ContextOuterClass.ConfigRule.getDefaultInstance());
            }

            /**
             * <code>repeated .context.ConfigRule config_rules = 1;</code>
             */
            public java.util.List<context.ContextOuterClass.ConfigRule.Builder> getConfigRulesBuilderList() {
                return getConfigRulesFieldBuilder().getBuilderList();
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.ConfigRule, context.ContextOuterClass.ConfigRule.Builder, context.ContextOuterClass.ConfigRuleOrBuilder> getConfigRulesFieldBuilder() {
                if (configRulesBuilder_ == null) {
                    configRulesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.ConfigRule, context.ContextOuterClass.ConfigRule.Builder, context.ContextOuterClass.ConfigRuleOrBuilder>(configRules_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
                    configRules_ = null;
                }
                return configRulesBuilder_;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.DeviceConfig)
        }

        // @@protoc_insertion_point(class_scope:context.DeviceConfig)
        private static final context.ContextOuterClass.DeviceConfig DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.DeviceConfig();
        }

        public static context.ContextOuterClass.DeviceConfig getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<DeviceConfig> PARSER = new com.google.protobuf.AbstractParser<DeviceConfig>() {

            @java.lang.Override
            public DeviceConfig parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<DeviceConfig> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<DeviceConfig> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.DeviceConfig getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface DeviceIdListOrBuilder extends // @@protoc_insertion_point(interface_extends:context.DeviceIdList)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>repeated .context.DeviceId device_ids = 1;</code>
         */
        java.util.List<context.ContextOuterClass.DeviceId> getDeviceIdsList();

        /**
         * <code>repeated .context.DeviceId device_ids = 1;</code>
         */
        context.ContextOuterClass.DeviceId getDeviceIds(int index);

        /**
         * <code>repeated .context.DeviceId device_ids = 1;</code>
         */
        int getDeviceIdsCount();

        /**
         * <code>repeated .context.DeviceId device_ids = 1;</code>
         */
        java.util.List<? extends context.ContextOuterClass.DeviceIdOrBuilder> getDeviceIdsOrBuilderList();

        /**
         * <code>repeated .context.DeviceId device_ids = 1;</code>
         */
        context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdsOrBuilder(int index);
    }

    /**
     * Protobuf type {@code context.DeviceIdList}
     */
    public static final class DeviceIdList extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.DeviceIdList)
    DeviceIdListOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use DeviceIdList.newBuilder() to construct.
        private DeviceIdList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private DeviceIdList() {
            deviceIds_ = java.util.Collections.emptyList();
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new DeviceIdList();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_DeviceIdList_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_DeviceIdList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.DeviceIdList.class, context.ContextOuterClass.DeviceIdList.Builder.class);
        }

        public static final int DEVICE_IDS_FIELD_NUMBER = 1;

        @SuppressWarnings("serial")
        private java.util.List<context.ContextOuterClass.DeviceId> deviceIds_;

        /**
         * <code>repeated .context.DeviceId device_ids = 1;</code>
         */
        @java.lang.Override
        public java.util.List<context.ContextOuterClass.DeviceId> getDeviceIdsList() {
            return deviceIds_;
        }

        /**
         * <code>repeated .context.DeviceId device_ids = 1;</code>
         */
        @java.lang.Override
        public java.util.List<? extends context.ContextOuterClass.DeviceIdOrBuilder> getDeviceIdsOrBuilderList() {
            return deviceIds_;
        }

        /**
         * <code>repeated .context.DeviceId device_ids = 1;</code>
         */
        @java.lang.Override
        public int getDeviceIdsCount() {
            return deviceIds_.size();
        }

        /**
         * <code>repeated .context.DeviceId device_ids = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.DeviceId getDeviceIds(int index) {
            return deviceIds_.get(index);
        }

        /**
         * <code>repeated .context.DeviceId device_ids = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdsOrBuilder(int index) {
            return deviceIds_.get(index);
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            for (int i = 0; i < deviceIds_.size(); i++) {
                output.writeMessage(1, deviceIds_.get(i));
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            for (int i = 0; i < deviceIds_.size(); i++) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, deviceIds_.get(i));
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.DeviceIdList)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.DeviceIdList other = (context.ContextOuterClass.DeviceIdList) obj;
            if (!getDeviceIdsList().equals(other.getDeviceIdsList()))
                return false;
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            if (getDeviceIdsCount() > 0) {
                hash = (37 * hash) + DEVICE_IDS_FIELD_NUMBER;
                hash = (53 * hash) + getDeviceIdsList().hashCode();
            }
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.DeviceIdList parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.DeviceIdList parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.DeviceIdList parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.DeviceIdList parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.DeviceIdList parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.DeviceIdList parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.DeviceIdList parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.DeviceIdList parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.DeviceIdList parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.DeviceIdList parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.DeviceIdList parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.DeviceIdList parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.DeviceIdList prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code context.DeviceIdList}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.DeviceIdList)
        context.ContextOuterClass.DeviceIdListOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_DeviceIdList_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_DeviceIdList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.DeviceIdList.class, context.ContextOuterClass.DeviceIdList.Builder.class);
            }

            // Construct using context.ContextOuterClass.DeviceIdList.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                if (deviceIdsBuilder_ == null) {
                    deviceIds_ = java.util.Collections.emptyList();
                } else {
                    deviceIds_ = null;
                    deviceIdsBuilder_.clear();
                }
                bitField0_ = (bitField0_ & ~0x00000001);
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_DeviceIdList_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.DeviceIdList getDefaultInstanceForType() {
                return context.ContextOuterClass.DeviceIdList.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.DeviceIdList build() {
                context.ContextOuterClass.DeviceIdList result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.DeviceIdList buildPartial() {
                context.ContextOuterClass.DeviceIdList result = new context.ContextOuterClass.DeviceIdList(this);
                buildPartialRepeatedFields(result);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartialRepeatedFields(context.ContextOuterClass.DeviceIdList result) {
                if (deviceIdsBuilder_ == null) {
                    if (((bitField0_ & 0x00000001) != 0)) {
                        deviceIds_ = java.util.Collections.unmodifiableList(deviceIds_);
                        bitField0_ = (bitField0_ & ~0x00000001);
                    }
                    result.deviceIds_ = deviceIds_;
                } else {
                    result.deviceIds_ = deviceIdsBuilder_.build();
                }
            }

            private void buildPartial0(context.ContextOuterClass.DeviceIdList result) {
                int from_bitField0_ = bitField0_;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.DeviceIdList) {
                    return mergeFrom((context.ContextOuterClass.DeviceIdList) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.DeviceIdList other) {
                if (other == context.ContextOuterClass.DeviceIdList.getDefaultInstance())
                    return this;
                if (deviceIdsBuilder_ == null) {
                    if (!other.deviceIds_.isEmpty()) {
                        if (deviceIds_.isEmpty()) {
                            deviceIds_ = other.deviceIds_;
                            bitField0_ = (bitField0_ & ~0x00000001);
                        } else {
                            ensureDeviceIdsIsMutable();
                            deviceIds_.addAll(other.deviceIds_);
                        }
                        onChanged();
                    }
                } else {
                    if (!other.deviceIds_.isEmpty()) {
                        if (deviceIdsBuilder_.isEmpty()) {
                            deviceIdsBuilder_.dispose();
                            deviceIdsBuilder_ = null;
                            deviceIds_ = other.deviceIds_;
                            bitField0_ = (bitField0_ & ~0x00000001);
                            deviceIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getDeviceIdsFieldBuilder() : null;
                        } else {
                            deviceIdsBuilder_.addAllMessages(other.deviceIds_);
                        }
                    }
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 10:
                                {
                                    context.ContextOuterClass.DeviceId m = input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry);
                                    if (deviceIdsBuilder_ == null) {
                                        ensureDeviceIdsIsMutable();
                                        deviceIds_.add(m);
                                    } else {
                                        deviceIdsBuilder_.addMessage(m);
                                    }
                                    break;
                                }
                            // case 10
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private java.util.List<context.ContextOuterClass.DeviceId> deviceIds_ = java.util.Collections.emptyList();

            private void ensureDeviceIdsIsMutable() {
                if (!((bitField0_ & 0x00000001) != 0)) {
                    deviceIds_ = new java.util.ArrayList<context.ContextOuterClass.DeviceId>(deviceIds_);
                    bitField0_ |= 0x00000001;
                }
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> deviceIdsBuilder_;

            /**
             * <code>repeated .context.DeviceId device_ids = 1;</code>
             */
            public java.util.List<context.ContextOuterClass.DeviceId> getDeviceIdsList() {
                if (deviceIdsBuilder_ == null) {
                    return java.util.Collections.unmodifiableList(deviceIds_);
                } else {
                    return deviceIdsBuilder_.getMessageList();
                }
            }

            /**
             * <code>repeated .context.DeviceId device_ids = 1;</code>
             */
            public int getDeviceIdsCount() {
                if (deviceIdsBuilder_ == null) {
                    return deviceIds_.size();
                } else {
                    return deviceIdsBuilder_.getCount();
                }
            }

            /**
             * <code>repeated .context.DeviceId device_ids = 1;</code>
             */
            public context.ContextOuterClass.DeviceId getDeviceIds(int index) {
                if (deviceIdsBuilder_ == null) {
                    return deviceIds_.get(index);
                } else {
                    return deviceIdsBuilder_.getMessage(index);
                }
            }

            /**
             * <code>repeated .context.DeviceId device_ids = 1;</code>
             */
            public Builder setDeviceIds(int index, context.ContextOuterClass.DeviceId value) {
                if (deviceIdsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureDeviceIdsIsMutable();
                    deviceIds_.set(index, value);
                    onChanged();
                } else {
                    deviceIdsBuilder_.setMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.DeviceId device_ids = 1;</code>
             */
            public Builder setDeviceIds(int index, context.ContextOuterClass.DeviceId.Builder builderForValue) {
                if (deviceIdsBuilder_ == null) {
                    ensureDeviceIdsIsMutable();
                    deviceIds_.set(index, builderForValue.build());
                    onChanged();
                } else {
                    deviceIdsBuilder_.setMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.DeviceId device_ids = 1;</code>
             */
            public Builder addDeviceIds(context.ContextOuterClass.DeviceId value) {
                if (deviceIdsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureDeviceIdsIsMutable();
                    deviceIds_.add(value);
                    onChanged();
                } else {
                    deviceIdsBuilder_.addMessage(value);
                }
                return this;
            }

            /**
             * <code>repeated .context.DeviceId device_ids = 1;</code>
             */
            public Builder addDeviceIds(int index, context.ContextOuterClass.DeviceId value) {
                if (deviceIdsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureDeviceIdsIsMutable();
                    deviceIds_.add(index, value);
                    onChanged();
                } else {
                    deviceIdsBuilder_.addMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.DeviceId device_ids = 1;</code>
             */
            public Builder addDeviceIds(context.ContextOuterClass.DeviceId.Builder builderForValue) {
                if (deviceIdsBuilder_ == null) {
                    ensureDeviceIdsIsMutable();
                    deviceIds_.add(builderForValue.build());
                    onChanged();
                } else {
                    deviceIdsBuilder_.addMessage(builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.DeviceId device_ids = 1;</code>
             */
            public Builder addDeviceIds(int index, context.ContextOuterClass.DeviceId.Builder builderForValue) {
                if (deviceIdsBuilder_ == null) {
                    ensureDeviceIdsIsMutable();
                    deviceIds_.add(index, builderForValue.build());
                    onChanged();
                } else {
                    deviceIdsBuilder_.addMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.DeviceId device_ids = 1;</code>
             */
            public Builder addAllDeviceIds(java.lang.Iterable<? extends context.ContextOuterClass.DeviceId> values) {
                if (deviceIdsBuilder_ == null) {
                    ensureDeviceIdsIsMutable();
                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, deviceIds_);
                    onChanged();
                } else {
                    deviceIdsBuilder_.addAllMessages(values);
                }
                return this;
            }

            /**
             * <code>repeated .context.DeviceId device_ids = 1;</code>
             */
            public Builder clearDeviceIds() {
                if (deviceIdsBuilder_ == null) {
                    deviceIds_ = java.util.Collections.emptyList();
                    bitField0_ = (bitField0_ & ~0x00000001);
                    onChanged();
                } else {
                    deviceIdsBuilder_.clear();
                }
                return this;
            }

            /**
             * <code>repeated .context.DeviceId device_ids = 1;</code>
             */
            public Builder removeDeviceIds(int index) {
                if (deviceIdsBuilder_ == null) {
                    ensureDeviceIdsIsMutable();
                    deviceIds_.remove(index);
                    onChanged();
                } else {
                    deviceIdsBuilder_.remove(index);
                }
                return this;
            }

            /**
             * <code>repeated .context.DeviceId device_ids = 1;</code>
             */
            public context.ContextOuterClass.DeviceId.Builder getDeviceIdsBuilder(int index) {
                return getDeviceIdsFieldBuilder().getBuilder(index);
            }

            /**
             * <code>repeated .context.DeviceId device_ids = 1;</code>
             */
            public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdsOrBuilder(int index) {
                if (deviceIdsBuilder_ == null) {
                    return deviceIds_.get(index);
                } else {
                    return deviceIdsBuilder_.getMessageOrBuilder(index);
                }
            }

            /**
             * <code>repeated .context.DeviceId device_ids = 1;</code>
             */
            public java.util.List<? extends context.ContextOuterClass.DeviceIdOrBuilder> getDeviceIdsOrBuilderList() {
                if (deviceIdsBuilder_ != null) {
                    return deviceIdsBuilder_.getMessageOrBuilderList();
                } else {
                    return java.util.Collections.unmodifiableList(deviceIds_);
                }
            }

            /**
             * <code>repeated .context.DeviceId device_ids = 1;</code>
             */
            public context.ContextOuterClass.DeviceId.Builder addDeviceIdsBuilder() {
                return getDeviceIdsFieldBuilder().addBuilder(context.ContextOuterClass.DeviceId.getDefaultInstance());
            }

            /**
             * <code>repeated .context.DeviceId device_ids = 1;</code>
             */
            public context.ContextOuterClass.DeviceId.Builder addDeviceIdsBuilder(int index) {
                return getDeviceIdsFieldBuilder().addBuilder(index, context.ContextOuterClass.DeviceId.getDefaultInstance());
            }

            /**
             * <code>repeated .context.DeviceId device_ids = 1;</code>
             */
            public java.util.List<context.ContextOuterClass.DeviceId.Builder> getDeviceIdsBuilderList() {
                return getDeviceIdsFieldBuilder().getBuilderList();
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> getDeviceIdsFieldBuilder() {
                if (deviceIdsBuilder_ == null) {
                    deviceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder>(deviceIds_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
                    deviceIds_ = null;
                }
                return deviceIdsBuilder_;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.DeviceIdList)
        }

        // @@protoc_insertion_point(class_scope:context.DeviceIdList)
        private static final context.ContextOuterClass.DeviceIdList DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.DeviceIdList();
        }

        public static context.ContextOuterClass.DeviceIdList getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<DeviceIdList> PARSER = new com.google.protobuf.AbstractParser<DeviceIdList>() {

            @java.lang.Override
            public DeviceIdList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<DeviceIdList> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<DeviceIdList> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.DeviceIdList getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface DeviceListOrBuilder extends // @@protoc_insertion_point(interface_extends:context.DeviceList)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>repeated .context.Device devices = 1;</code>
         */
        java.util.List<context.ContextOuterClass.Device> getDevicesList();

        /**
         * <code>repeated .context.Device devices = 1;</code>
         */
        context.ContextOuterClass.Device getDevices(int index);

        /**
         * <code>repeated .context.Device devices = 1;</code>
         */
        int getDevicesCount();

        /**
         * <code>repeated .context.Device devices = 1;</code>
         */
        java.util.List<? extends context.ContextOuterClass.DeviceOrBuilder> getDevicesOrBuilderList();

        /**
         * <code>repeated .context.Device devices = 1;</code>
         */
        context.ContextOuterClass.DeviceOrBuilder getDevicesOrBuilder(int index);
    }

    /**
     * Protobuf type {@code context.DeviceList}
     */
    public static final class DeviceList extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.DeviceList)
    DeviceListOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use DeviceList.newBuilder() to construct.
        private DeviceList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private DeviceList() {
            devices_ = java.util.Collections.emptyList();
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new DeviceList();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_DeviceList_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_DeviceList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.DeviceList.class, context.ContextOuterClass.DeviceList.Builder.class);
        }

        public static final int DEVICES_FIELD_NUMBER = 1;

        @SuppressWarnings("serial")
        private java.util.List<context.ContextOuterClass.Device> devices_;

        /**
         * <code>repeated .context.Device devices = 1;</code>
         */
        @java.lang.Override
        public java.util.List<context.ContextOuterClass.Device> getDevicesList() {
            return devices_;
        }

        /**
         * <code>repeated .context.Device devices = 1;</code>
         */
        @java.lang.Override
        public java.util.List<? extends context.ContextOuterClass.DeviceOrBuilder> getDevicesOrBuilderList() {
            return devices_;
        }

        /**
         * <code>repeated .context.Device devices = 1;</code>
         */
        @java.lang.Override
        public int getDevicesCount() {
            return devices_.size();
        }

        /**
         * <code>repeated .context.Device devices = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.Device getDevices(int index) {
            return devices_.get(index);
        }

        /**
         * <code>repeated .context.Device devices = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.DeviceOrBuilder getDevicesOrBuilder(int index) {
            return devices_.get(index);
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            for (int i = 0; i < devices_.size(); i++) {
                output.writeMessage(1, devices_.get(i));
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            for (int i = 0; i < devices_.size(); i++) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, devices_.get(i));
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.DeviceList)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.DeviceList other = (context.ContextOuterClass.DeviceList) obj;
            if (!getDevicesList().equals(other.getDevicesList()))
                return false;
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            if (getDevicesCount() > 0) {
                hash = (37 * hash) + DEVICES_FIELD_NUMBER;
                hash = (53 * hash) + getDevicesList().hashCode();
            }
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.DeviceList parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.DeviceList parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.DeviceList parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.DeviceList parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.DeviceList parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.DeviceList parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.DeviceList parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.DeviceList parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.DeviceList parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.DeviceList parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.DeviceList parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.DeviceList parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.DeviceList prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code context.DeviceList}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.DeviceList)
        context.ContextOuterClass.DeviceListOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_DeviceList_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_DeviceList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.DeviceList.class, context.ContextOuterClass.DeviceList.Builder.class);
            }

            // Construct using context.ContextOuterClass.DeviceList.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                if (devicesBuilder_ == null) {
                    devices_ = java.util.Collections.emptyList();
                } else {
                    devices_ = null;
                    devicesBuilder_.clear();
                }
                bitField0_ = (bitField0_ & ~0x00000001);
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_DeviceList_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.DeviceList getDefaultInstanceForType() {
                return context.ContextOuterClass.DeviceList.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.DeviceList build() {
                context.ContextOuterClass.DeviceList result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.DeviceList buildPartial() {
                context.ContextOuterClass.DeviceList result = new context.ContextOuterClass.DeviceList(this);
                buildPartialRepeatedFields(result);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartialRepeatedFields(context.ContextOuterClass.DeviceList result) {
                if (devicesBuilder_ == null) {
                    if (((bitField0_ & 0x00000001) != 0)) {
                        devices_ = java.util.Collections.unmodifiableList(devices_);
                        bitField0_ = (bitField0_ & ~0x00000001);
                    }
                    result.devices_ = devices_;
                } else {
                    result.devices_ = devicesBuilder_.build();
                }
            }

            private void buildPartial0(context.ContextOuterClass.DeviceList result) {
                int from_bitField0_ = bitField0_;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.DeviceList) {
                    return mergeFrom((context.ContextOuterClass.DeviceList) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.DeviceList other) {
                if (other == context.ContextOuterClass.DeviceList.getDefaultInstance())
                    return this;
                if (devicesBuilder_ == null) {
                    if (!other.devices_.isEmpty()) {
                        if (devices_.isEmpty()) {
                            devices_ = other.devices_;
                            bitField0_ = (bitField0_ & ~0x00000001);
                        } else {
                            ensureDevicesIsMutable();
                            devices_.addAll(other.devices_);
                        }
                        onChanged();
                    }
                } else {
                    if (!other.devices_.isEmpty()) {
                        if (devicesBuilder_.isEmpty()) {
                            devicesBuilder_.dispose();
                            devicesBuilder_ = null;
                            devices_ = other.devices_;
                            bitField0_ = (bitField0_ & ~0x00000001);
                            devicesBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getDevicesFieldBuilder() : null;
                        } else {
                            devicesBuilder_.addAllMessages(other.devices_);
                        }
                    }
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 10:
                                {
                                    context.ContextOuterClass.Device m = input.readMessage(context.ContextOuterClass.Device.parser(), extensionRegistry);
                                    if (devicesBuilder_ == null) {
                                        ensureDevicesIsMutable();
                                        devices_.add(m);
                                    } else {
                                        devicesBuilder_.addMessage(m);
                                    }
                                    break;
                                }
                            // case 10
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private java.util.List<context.ContextOuterClass.Device> devices_ = java.util.Collections.emptyList();

            private void ensureDevicesIsMutable() {
                if (!((bitField0_ & 0x00000001) != 0)) {
                    devices_ = new java.util.ArrayList<context.ContextOuterClass.Device>(devices_);
                    bitField0_ |= 0x00000001;
                }
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Device, context.ContextOuterClass.Device.Builder, context.ContextOuterClass.DeviceOrBuilder> devicesBuilder_;

            /**
             * <code>repeated .context.Device devices = 1;</code>
             */
            public java.util.List<context.ContextOuterClass.Device> getDevicesList() {
                if (devicesBuilder_ == null) {
                    return java.util.Collections.unmodifiableList(devices_);
                } else {
                    return devicesBuilder_.getMessageList();
                }
            }

            /**
             * <code>repeated .context.Device devices = 1;</code>
             */
            public int getDevicesCount() {
                if (devicesBuilder_ == null) {
                    return devices_.size();
                } else {
                    return devicesBuilder_.getCount();
                }
            }

            /**
             * <code>repeated .context.Device devices = 1;</code>
             */
            public context.ContextOuterClass.Device getDevices(int index) {
                if (devicesBuilder_ == null) {
                    return devices_.get(index);
                } else {
                    return devicesBuilder_.getMessage(index);
                }
            }

            /**
             * <code>repeated .context.Device devices = 1;</code>
             */
            public Builder setDevices(int index, context.ContextOuterClass.Device value) {
                if (devicesBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureDevicesIsMutable();
                    devices_.set(index, value);
                    onChanged();
                } else {
                    devicesBuilder_.setMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.Device devices = 1;</code>
             */
            public Builder setDevices(int index, context.ContextOuterClass.Device.Builder builderForValue) {
                if (devicesBuilder_ == null) {
                    ensureDevicesIsMutable();
                    devices_.set(index, builderForValue.build());
                    onChanged();
                } else {
                    devicesBuilder_.setMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.Device devices = 1;</code>
             */
            public Builder addDevices(context.ContextOuterClass.Device value) {
                if (devicesBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureDevicesIsMutable();
                    devices_.add(value);
                    onChanged();
                } else {
                    devicesBuilder_.addMessage(value);
                }
                return this;
            }

            /**
             * <code>repeated .context.Device devices = 1;</code>
             */
            public Builder addDevices(int index, context.ContextOuterClass.Device value) {
                if (devicesBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureDevicesIsMutable();
                    devices_.add(index, value);
                    onChanged();
                } else {
                    devicesBuilder_.addMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.Device devices = 1;</code>
             */
            public Builder addDevices(context.ContextOuterClass.Device.Builder builderForValue) {
                if (devicesBuilder_ == null) {
                    ensureDevicesIsMutable();
                    devices_.add(builderForValue.build());
                    onChanged();
                } else {
                    devicesBuilder_.addMessage(builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.Device devices = 1;</code>
             */
            public Builder addDevices(int index, context.ContextOuterClass.Device.Builder builderForValue) {
                if (devicesBuilder_ == null) {
                    ensureDevicesIsMutable();
                    devices_.add(index, builderForValue.build());
                    onChanged();
                } else {
                    devicesBuilder_.addMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.Device devices = 1;</code>
             */
            public Builder addAllDevices(java.lang.Iterable<? extends context.ContextOuterClass.Device> values) {
                if (devicesBuilder_ == null) {
                    ensureDevicesIsMutable();
                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, devices_);
                    onChanged();
                } else {
                    devicesBuilder_.addAllMessages(values);
                }
                return this;
            }

            /**
             * <code>repeated .context.Device devices = 1;</code>
             */
            public Builder clearDevices() {
                if (devicesBuilder_ == null) {
                    devices_ = java.util.Collections.emptyList();
                    bitField0_ = (bitField0_ & ~0x00000001);
                    onChanged();
                } else {
                    devicesBuilder_.clear();
                }
                return this;
            }

            /**
             * <code>repeated .context.Device devices = 1;</code>
             */
            public Builder removeDevices(int index) {
                if (devicesBuilder_ == null) {
                    ensureDevicesIsMutable();
                    devices_.remove(index);
                    onChanged();
                } else {
                    devicesBuilder_.remove(index);
                }
                return this;
            }

            /**
             * <code>repeated .context.Device devices = 1;</code>
             */
            public context.ContextOuterClass.Device.Builder getDevicesBuilder(int index) {
                return getDevicesFieldBuilder().getBuilder(index);
            }

            /**
             * <code>repeated .context.Device devices = 1;</code>
             */
            public context.ContextOuterClass.DeviceOrBuilder getDevicesOrBuilder(int index) {
                if (devicesBuilder_ == null) {
                    return devices_.get(index);
                } else {
                    return devicesBuilder_.getMessageOrBuilder(index);
                }
            }

            /**
             * <code>repeated .context.Device devices = 1;</code>
             */
            public java.util.List<? extends context.ContextOuterClass.DeviceOrBuilder> getDevicesOrBuilderList() {
                if (devicesBuilder_ != null) {
                    return devicesBuilder_.getMessageOrBuilderList();
                } else {
                    return java.util.Collections.unmodifiableList(devices_);
                }
            }

            /**
             * <code>repeated .context.Device devices = 1;</code>
             */
            public context.ContextOuterClass.Device.Builder addDevicesBuilder() {
                return getDevicesFieldBuilder().addBuilder(context.ContextOuterClass.Device.getDefaultInstance());
            }

            /**
             * <code>repeated .context.Device devices = 1;</code>
             */
            public context.ContextOuterClass.Device.Builder addDevicesBuilder(int index) {
                return getDevicesFieldBuilder().addBuilder(index, context.ContextOuterClass.Device.getDefaultInstance());
            }

            /**
             * <code>repeated .context.Device devices = 1;</code>
             */
            public java.util.List<context.ContextOuterClass.Device.Builder> getDevicesBuilderList() {
                return getDevicesFieldBuilder().getBuilderList();
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Device, context.ContextOuterClass.Device.Builder, context.ContextOuterClass.DeviceOrBuilder> getDevicesFieldBuilder() {
                if (devicesBuilder_ == null) {
                    devicesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Device, context.ContextOuterClass.Device.Builder, context.ContextOuterClass.DeviceOrBuilder>(devices_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
                    devices_ = null;
                }
                return devicesBuilder_;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.DeviceList)
        }

        // @@protoc_insertion_point(class_scope:context.DeviceList)
        private static final context.ContextOuterClass.DeviceList DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.DeviceList();
        }

        public static context.ContextOuterClass.DeviceList getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<DeviceList> PARSER = new com.google.protobuf.AbstractParser<DeviceList>() {

            @java.lang.Override
            public DeviceList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<DeviceList> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<DeviceList> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.DeviceList getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface DeviceFilterOrBuilder extends // @@protoc_insertion_point(interface_extends:context.DeviceFilter)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>.context.DeviceIdList device_ids = 1;</code>
         * @return Whether the deviceIds field is set.
         */
        boolean hasDeviceIds();

        /**
         * <code>.context.DeviceIdList device_ids = 1;</code>
         * @return The deviceIds.
         */
        context.ContextOuterClass.DeviceIdList getDeviceIds();

        /**
         * <code>.context.DeviceIdList device_ids = 1;</code>
         */
        context.ContextOuterClass.DeviceIdListOrBuilder getDeviceIdsOrBuilder();

        /**
         * <code>bool include_endpoints = 2;</code>
         * @return The includeEndpoints.
         */
        boolean getIncludeEndpoints();

        /**
         * <code>bool include_config_rules = 3;</code>
         * @return The includeConfigRules.
         */
        boolean getIncludeConfigRules();

        /**
         * <code>bool include_components = 4;</code>
         * @return The includeComponents.
         */
        boolean getIncludeComponents();
    }

    /**
     * Protobuf type {@code context.DeviceFilter}
     */
    public static final class DeviceFilter extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.DeviceFilter)
    DeviceFilterOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use DeviceFilter.newBuilder() to construct.
        private DeviceFilter(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private DeviceFilter() {
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new DeviceFilter();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_DeviceFilter_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_DeviceFilter_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.DeviceFilter.class, context.ContextOuterClass.DeviceFilter.Builder.class);
        }

        public static final int DEVICE_IDS_FIELD_NUMBER = 1;

        private context.ContextOuterClass.DeviceIdList deviceIds_;

        /**
         * <code>.context.DeviceIdList device_ids = 1;</code>
         * @return Whether the deviceIds field is set.
         */
        @java.lang.Override
        public boolean hasDeviceIds() {
            return deviceIds_ != null;
        }

        /**
         * <code>.context.DeviceIdList device_ids = 1;</code>
         * @return The deviceIds.
         */
        @java.lang.Override
        public context.ContextOuterClass.DeviceIdList getDeviceIds() {
            return deviceIds_ == null ? context.ContextOuterClass.DeviceIdList.getDefaultInstance() : deviceIds_;
        }

        /**
         * <code>.context.DeviceIdList device_ids = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.DeviceIdListOrBuilder getDeviceIdsOrBuilder() {
            return deviceIds_ == null ? context.ContextOuterClass.DeviceIdList.getDefaultInstance() : deviceIds_;
        }

        public static final int INCLUDE_ENDPOINTS_FIELD_NUMBER = 2;

        private boolean includeEndpoints_ = false;

        /**
         * <code>bool include_endpoints = 2;</code>
         * @return The includeEndpoints.
         */
        @java.lang.Override
        public boolean getIncludeEndpoints() {
            return includeEndpoints_;
        }

        public static final int INCLUDE_CONFIG_RULES_FIELD_NUMBER = 3;

        private boolean includeConfigRules_ = false;

        /**
         * <code>bool include_config_rules = 3;</code>
         * @return The includeConfigRules.
         */
        @java.lang.Override
        public boolean getIncludeConfigRules() {
            return includeConfigRules_;
        }

        public static final int INCLUDE_COMPONENTS_FIELD_NUMBER = 4;

        private boolean includeComponents_ = false;

        /**
         * <code>bool include_components = 4;</code>
         * @return The includeComponents.
         */
        @java.lang.Override
        public boolean getIncludeComponents() {
            return includeComponents_;
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            if (deviceIds_ != null) {
                output.writeMessage(1, getDeviceIds());
            }
            if (includeEndpoints_ != false) {
                output.writeBool(2, includeEndpoints_);
            }
            if (includeConfigRules_ != false) {
                output.writeBool(3, includeConfigRules_);
            }
            if (includeComponents_ != false) {
                output.writeBool(4, includeComponents_);
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            if (deviceIds_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getDeviceIds());
            }
            if (includeEndpoints_ != false) {
                size += com.google.protobuf.CodedOutputStream.computeBoolSize(2, includeEndpoints_);
            }
            if (includeConfigRules_ != false) {
                size += com.google.protobuf.CodedOutputStream.computeBoolSize(3, includeConfigRules_);
            }
            if (includeComponents_ != false) {
                size += com.google.protobuf.CodedOutputStream.computeBoolSize(4, includeComponents_);
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.DeviceFilter)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.DeviceFilter other = (context.ContextOuterClass.DeviceFilter) obj;
            if (hasDeviceIds() != other.hasDeviceIds())
                return false;
            if (hasDeviceIds()) {
                if (!getDeviceIds().equals(other.getDeviceIds()))
                    return false;
            }
            if (getIncludeEndpoints() != other.getIncludeEndpoints())
                return false;
            if (getIncludeConfigRules() != other.getIncludeConfigRules())
                return false;
            if (getIncludeComponents() != other.getIncludeComponents())
                return false;
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            if (hasDeviceIds()) {
                hash = (37 * hash) + DEVICE_IDS_FIELD_NUMBER;
                hash = (53 * hash) + getDeviceIds().hashCode();
            }
            hash = (37 * hash) + INCLUDE_ENDPOINTS_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getIncludeEndpoints());
            hash = (37 * hash) + INCLUDE_CONFIG_RULES_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getIncludeConfigRules());
            hash = (37 * hash) + INCLUDE_COMPONENTS_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getIncludeComponents());
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.DeviceFilter parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.DeviceFilter parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.DeviceFilter parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.DeviceFilter parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.DeviceFilter parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.DeviceFilter parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.DeviceFilter parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.DeviceFilter parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.DeviceFilter parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.DeviceFilter parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.DeviceFilter parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.DeviceFilter parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.DeviceFilter prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code context.DeviceFilter}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.DeviceFilter)
        context.ContextOuterClass.DeviceFilterOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_DeviceFilter_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_DeviceFilter_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.DeviceFilter.class, context.ContextOuterClass.DeviceFilter.Builder.class);
            }

            // Construct using context.ContextOuterClass.DeviceFilter.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                deviceIds_ = null;
                if (deviceIdsBuilder_ != null) {
                    deviceIdsBuilder_.dispose();
                    deviceIdsBuilder_ = null;
                }
                includeEndpoints_ = false;
                includeConfigRules_ = false;
                includeComponents_ = false;
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_DeviceFilter_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.DeviceFilter getDefaultInstanceForType() {
                return context.ContextOuterClass.DeviceFilter.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.DeviceFilter build() {
                context.ContextOuterClass.DeviceFilter result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.DeviceFilter buildPartial() {
                context.ContextOuterClass.DeviceFilter result = new context.ContextOuterClass.DeviceFilter(this);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartial0(context.ContextOuterClass.DeviceFilter result) {
                int from_bitField0_ = bitField0_;
                if (((from_bitField0_ & 0x00000001) != 0)) {
                    result.deviceIds_ = deviceIdsBuilder_ == null ? deviceIds_ : deviceIdsBuilder_.build();
                }
                if (((from_bitField0_ & 0x00000002) != 0)) {
                    result.includeEndpoints_ = includeEndpoints_;
                }
                if (((from_bitField0_ & 0x00000004) != 0)) {
                    result.includeConfigRules_ = includeConfigRules_;
                }
                if (((from_bitField0_ & 0x00000008) != 0)) {
                    result.includeComponents_ = includeComponents_;
                }
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.DeviceFilter) {
                    return mergeFrom((context.ContextOuterClass.DeviceFilter) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.DeviceFilter other) {
                if (other == context.ContextOuterClass.DeviceFilter.getDefaultInstance())
                    return this;
                if (other.hasDeviceIds()) {
                    mergeDeviceIds(other.getDeviceIds());
                }
                if (other.getIncludeEndpoints() != false) {
                    setIncludeEndpoints(other.getIncludeEndpoints());
                }
                if (other.getIncludeConfigRules() != false) {
                    setIncludeConfigRules(other.getIncludeConfigRules());
                }
                if (other.getIncludeComponents() != false) {
                    setIncludeComponents(other.getIncludeComponents());
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 10:
                                {
                                    input.readMessage(getDeviceIdsFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000001;
                                    break;
                                }
                            // case 10
                            case 16:
                                {
                                    includeEndpoints_ = input.readBool();
                                    bitField0_ |= 0x00000002;
                                    break;
                                }
                            // case 16
                            case 24:
                                {
                                    includeConfigRules_ = input.readBool();
                                    bitField0_ |= 0x00000004;
                                    break;
                                }
                            // case 24
                            case 32:
                                {
                                    includeComponents_ = input.readBool();
                                    bitField0_ |= 0x00000008;
                                    break;
                                }
                            // case 32
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private context.ContextOuterClass.DeviceIdList deviceIds_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.DeviceIdList, context.ContextOuterClass.DeviceIdList.Builder, context.ContextOuterClass.DeviceIdListOrBuilder> deviceIdsBuilder_;

            /**
             * <code>.context.DeviceIdList device_ids = 1;</code>
             * @return Whether the deviceIds field is set.
             */
            public boolean hasDeviceIds() {
                return ((bitField0_ & 0x00000001) != 0);
            }

            /**
             * <code>.context.DeviceIdList device_ids = 1;</code>
             * @return The deviceIds.
             */
            public context.ContextOuterClass.DeviceIdList getDeviceIds() {
                if (deviceIdsBuilder_ == null) {
                    return deviceIds_ == null ? context.ContextOuterClass.DeviceIdList.getDefaultInstance() : deviceIds_;
                } else {
                    return deviceIdsBuilder_.getMessage();
                }
            }

            /**
             * <code>.context.DeviceIdList device_ids = 1;</code>
             */
            public Builder setDeviceIds(context.ContextOuterClass.DeviceIdList value) {
                if (deviceIdsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    deviceIds_ = value;
                } else {
                    deviceIdsBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.DeviceIdList device_ids = 1;</code>
             */
            public Builder setDeviceIds(context.ContextOuterClass.DeviceIdList.Builder builderForValue) {
                if (deviceIdsBuilder_ == null) {
                    deviceIds_ = builderForValue.build();
                } else {
                    deviceIdsBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.DeviceIdList device_ids = 1;</code>
             */
            public Builder mergeDeviceIds(context.ContextOuterClass.DeviceIdList value) {
                if (deviceIdsBuilder_ == null) {
                    if (((bitField0_ & 0x00000001) != 0) && deviceIds_ != null && deviceIds_ != context.ContextOuterClass.DeviceIdList.getDefaultInstance()) {
                        getDeviceIdsBuilder().mergeFrom(value);
                    } else {
                        deviceIds_ = value;
                    }
                } else {
                    deviceIdsBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.DeviceIdList device_ids = 1;</code>
             */
            public Builder clearDeviceIds() {
                bitField0_ = (bitField0_ & ~0x00000001);
                deviceIds_ = null;
                if (deviceIdsBuilder_ != null) {
                    deviceIdsBuilder_.dispose();
                    deviceIdsBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.DeviceIdList device_ids = 1;</code>
             */
            public context.ContextOuterClass.DeviceIdList.Builder getDeviceIdsBuilder() {
                bitField0_ |= 0x00000001;
                onChanged();
                return getDeviceIdsFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.DeviceIdList device_ids = 1;</code>
             */
            public context.ContextOuterClass.DeviceIdListOrBuilder getDeviceIdsOrBuilder() {
                if (deviceIdsBuilder_ != null) {
                    return deviceIdsBuilder_.getMessageOrBuilder();
                } else {
                    return deviceIds_ == null ? context.ContextOuterClass.DeviceIdList.getDefaultInstance() : deviceIds_;
                }
            }

            /**
             * <code>.context.DeviceIdList device_ids = 1;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.DeviceIdList, context.ContextOuterClass.DeviceIdList.Builder, context.ContextOuterClass.DeviceIdListOrBuilder> getDeviceIdsFieldBuilder() {
                if (deviceIdsBuilder_ == null) {
                    deviceIdsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.DeviceIdList, context.ContextOuterClass.DeviceIdList.Builder, context.ContextOuterClass.DeviceIdListOrBuilder>(getDeviceIds(), getParentForChildren(), isClean());
                    deviceIds_ = null;
                }
                return deviceIdsBuilder_;
            }

            private boolean includeEndpoints_;

            /**
             * <code>bool include_endpoints = 2;</code>
             * @return The includeEndpoints.
             */
            @java.lang.Override
            public boolean getIncludeEndpoints() {
                return includeEndpoints_;
            }

            /**
             * <code>bool include_endpoints = 2;</code>
             * @param value The includeEndpoints to set.
             * @return This builder for chaining.
             */
            public Builder setIncludeEndpoints(boolean value) {
                includeEndpoints_ = value;
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>bool include_endpoints = 2;</code>
             * @return This builder for chaining.
             */
            public Builder clearIncludeEndpoints() {
                bitField0_ = (bitField0_ & ~0x00000002);
                includeEndpoints_ = false;
                onChanged();
                return this;
            }

            private boolean includeConfigRules_;

            /**
             * <code>bool include_config_rules = 3;</code>
             * @return The includeConfigRules.
             */
            @java.lang.Override
            public boolean getIncludeConfigRules() {
                return includeConfigRules_;
            }

            /**
             * <code>bool include_config_rules = 3;</code>
             * @param value The includeConfigRules to set.
             * @return This builder for chaining.
             */
            public Builder setIncludeConfigRules(boolean value) {
                includeConfigRules_ = value;
                bitField0_ |= 0x00000004;
                onChanged();
                return this;
            }

            /**
             * <code>bool include_config_rules = 3;</code>
             * @return This builder for chaining.
             */
            public Builder clearIncludeConfigRules() {
                bitField0_ = (bitField0_ & ~0x00000004);
                includeConfigRules_ = false;
                onChanged();
                return this;
            }

            private boolean includeComponents_;

            /**
             * <code>bool include_components = 4;</code>
             * @return The includeComponents.
             */
            @java.lang.Override
            public boolean getIncludeComponents() {
                return includeComponents_;
            }

            /**
             * <code>bool include_components = 4;</code>
             * @param value The includeComponents to set.
             * @return This builder for chaining.
             */
            public Builder setIncludeComponents(boolean value) {
                includeComponents_ = value;
                bitField0_ |= 0x00000008;
                onChanged();
                return this;
            }

            /**
             * <code>bool include_components = 4;</code>
             * @return This builder for chaining.
             */
            public Builder clearIncludeComponents() {
                bitField0_ = (bitField0_ & ~0x00000008);
                includeComponents_ = false;
                onChanged();
                return this;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.DeviceFilter)
        }

        // @@protoc_insertion_point(class_scope:context.DeviceFilter)
        private static final context.ContextOuterClass.DeviceFilter DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.DeviceFilter();
        }

        public static context.ContextOuterClass.DeviceFilter getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<DeviceFilter> PARSER = new com.google.protobuf.AbstractParser<DeviceFilter>() {

            @java.lang.Override
            public DeviceFilter parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<DeviceFilter> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<DeviceFilter> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.DeviceFilter getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface DeviceEventOrBuilder extends // @@protoc_insertion_point(interface_extends:context.DeviceEvent)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>.context.Event event = 1;</code>
         * @return Whether the event field is set.
         */
        boolean hasEvent();

        /**
         * <code>.context.Event event = 1;</code>
         * @return The event.
         */
        context.ContextOuterClass.Event getEvent();

        /**
         * <code>.context.Event event = 1;</code>
         */
        context.ContextOuterClass.EventOrBuilder getEventOrBuilder();

        /**
         * <code>.context.DeviceId device_id = 2;</code>
         * @return Whether the deviceId field is set.
         */
        boolean hasDeviceId();

        /**
         * <code>.context.DeviceId device_id = 2;</code>
         * @return The deviceId.
         */
        context.ContextOuterClass.DeviceId getDeviceId();

        /**
         * <code>.context.DeviceId device_id = 2;</code>
         */
        context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder();

        /**
         * <code>.context.DeviceConfig device_config = 3;</code>
         * @return Whether the deviceConfig field is set.
         */
        boolean hasDeviceConfig();

        /**
         * <code>.context.DeviceConfig device_config = 3;</code>
         * @return The deviceConfig.
         */
        context.ContextOuterClass.DeviceConfig getDeviceConfig();

        /**
         * <code>.context.DeviceConfig device_config = 3;</code>
         */
        context.ContextOuterClass.DeviceConfigOrBuilder getDeviceConfigOrBuilder();
    }

    /**
     * Protobuf type {@code context.DeviceEvent}
     */
    public static final class DeviceEvent extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.DeviceEvent)
    DeviceEventOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use DeviceEvent.newBuilder() to construct.
        private DeviceEvent(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private DeviceEvent() {
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new DeviceEvent();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_DeviceEvent_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_DeviceEvent_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.DeviceEvent.class, context.ContextOuterClass.DeviceEvent.Builder.class);
        }

        public static final int EVENT_FIELD_NUMBER = 1;

        private context.ContextOuterClass.Event event_;

        /**
         * <code>.context.Event event = 1;</code>
         * @return Whether the event field is set.
         */
        @java.lang.Override
        public boolean hasEvent() {
            return event_ != null;
        }

        /**
         * <code>.context.Event event = 1;</code>
         * @return The event.
         */
        @java.lang.Override
        public context.ContextOuterClass.Event getEvent() {
            return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
        }

        /**
         * <code>.context.Event event = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
            return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
        }

        public static final int DEVICE_ID_FIELD_NUMBER = 2;

        private context.ContextOuterClass.DeviceId deviceId_;

        /**
         * <code>.context.DeviceId device_id = 2;</code>
         * @return Whether the deviceId field is set.
         */
        @java.lang.Override
        public boolean hasDeviceId() {
            return deviceId_ != null;
        }

        /**
         * <code>.context.DeviceId device_id = 2;</code>
         * @return The deviceId.
         */
        @java.lang.Override
        public context.ContextOuterClass.DeviceId getDeviceId() {
            return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
        }

        /**
         * <code>.context.DeviceId device_id = 2;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder() {
            return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
        }

        public static final int DEVICE_CONFIG_FIELD_NUMBER = 3;

        private context.ContextOuterClass.DeviceConfig deviceConfig_;

        /**
         * <code>.context.DeviceConfig device_config = 3;</code>
         * @return Whether the deviceConfig field is set.
         */
        @java.lang.Override
        public boolean hasDeviceConfig() {
            return deviceConfig_ != null;
        }

        /**
         * <code>.context.DeviceConfig device_config = 3;</code>
         * @return The deviceConfig.
         */
        @java.lang.Override
        public context.ContextOuterClass.DeviceConfig getDeviceConfig() {
            return deviceConfig_ == null ? context.ContextOuterClass.DeviceConfig.getDefaultInstance() : deviceConfig_;
        }

        /**
         * <code>.context.DeviceConfig device_config = 3;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.DeviceConfigOrBuilder getDeviceConfigOrBuilder() {
            return deviceConfig_ == null ? context.ContextOuterClass.DeviceConfig.getDefaultInstance() : deviceConfig_;
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            if (event_ != null) {
                output.writeMessage(1, getEvent());
            }
            if (deviceId_ != null) {
                output.writeMessage(2, getDeviceId());
            }
            if (deviceConfig_ != null) {
                output.writeMessage(3, getDeviceConfig());
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            if (event_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getEvent());
            }
            if (deviceId_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getDeviceId());
            }
            if (deviceConfig_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, getDeviceConfig());
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.DeviceEvent)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.DeviceEvent other = (context.ContextOuterClass.DeviceEvent) obj;
            if (hasEvent() != other.hasEvent())
                return false;
            if (hasEvent()) {
                if (!getEvent().equals(other.getEvent()))
                    return false;
            }
            if (hasDeviceId() != other.hasDeviceId())
                return false;
            if (hasDeviceId()) {
                if (!getDeviceId().equals(other.getDeviceId()))
                    return false;
            }
            if (hasDeviceConfig() != other.hasDeviceConfig())
                return false;
            if (hasDeviceConfig()) {
                if (!getDeviceConfig().equals(other.getDeviceConfig()))
                    return false;
            }
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            if (hasEvent()) {
                hash = (37 * hash) + EVENT_FIELD_NUMBER;
                hash = (53 * hash) + getEvent().hashCode();
            }
            if (hasDeviceId()) {
                hash = (37 * hash) + DEVICE_ID_FIELD_NUMBER;
                hash = (53 * hash) + getDeviceId().hashCode();
            }
            if (hasDeviceConfig()) {
                hash = (37 * hash) + DEVICE_CONFIG_FIELD_NUMBER;
                hash = (53 * hash) + getDeviceConfig().hashCode();
            }
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.DeviceEvent parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.DeviceEvent parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.DeviceEvent parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.DeviceEvent parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.DeviceEvent parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.DeviceEvent parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.DeviceEvent parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.DeviceEvent parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.DeviceEvent parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.DeviceEvent parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.DeviceEvent parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.DeviceEvent parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.DeviceEvent prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code context.DeviceEvent}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.DeviceEvent)
        context.ContextOuterClass.DeviceEventOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_DeviceEvent_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_DeviceEvent_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.DeviceEvent.class, context.ContextOuterClass.DeviceEvent.Builder.class);
            }

            // Construct using context.ContextOuterClass.DeviceEvent.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                event_ = null;
                if (eventBuilder_ != null) {
                    eventBuilder_.dispose();
                    eventBuilder_ = null;
                }
                deviceId_ = null;
                if (deviceIdBuilder_ != null) {
                    deviceIdBuilder_.dispose();
                    deviceIdBuilder_ = null;
                }
                deviceConfig_ = null;
                if (deviceConfigBuilder_ != null) {
                    deviceConfigBuilder_.dispose();
                    deviceConfigBuilder_ = null;
                }
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_DeviceEvent_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.DeviceEvent getDefaultInstanceForType() {
                return context.ContextOuterClass.DeviceEvent.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.DeviceEvent build() {
                context.ContextOuterClass.DeviceEvent result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.DeviceEvent buildPartial() {
                context.ContextOuterClass.DeviceEvent result = new context.ContextOuterClass.DeviceEvent(this);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartial0(context.ContextOuterClass.DeviceEvent result) {
                int from_bitField0_ = bitField0_;
                if (((from_bitField0_ & 0x00000001) != 0)) {
                    result.event_ = eventBuilder_ == null ? event_ : eventBuilder_.build();
                }
                if (((from_bitField0_ & 0x00000002) != 0)) {
                    result.deviceId_ = deviceIdBuilder_ == null ? deviceId_ : deviceIdBuilder_.build();
                }
                if (((from_bitField0_ & 0x00000004) != 0)) {
                    result.deviceConfig_ = deviceConfigBuilder_ == null ? deviceConfig_ : deviceConfigBuilder_.build();
                }
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.DeviceEvent) {
                    return mergeFrom((context.ContextOuterClass.DeviceEvent) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.DeviceEvent other) {
                if (other == context.ContextOuterClass.DeviceEvent.getDefaultInstance())
                    return this;
                if (other.hasEvent()) {
                    mergeEvent(other.getEvent());
                }
                if (other.hasDeviceId()) {
                    mergeDeviceId(other.getDeviceId());
                }
                if (other.hasDeviceConfig()) {
                    mergeDeviceConfig(other.getDeviceConfig());
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 10:
                                {
                                    input.readMessage(getEventFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000001;
                                    break;
                                }
                            // case 10
                            case 18:
                                {
                                    input.readMessage(getDeviceIdFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000002;
                                    break;
                                }
                            // case 18
                            case 26:
                                {
                                    input.readMessage(getDeviceConfigFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000004;
                                    break;
                                }
                            // case 26
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private context.ContextOuterClass.Event event_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> eventBuilder_;

            /**
             * <code>.context.Event event = 1;</code>
             * @return Whether the event field is set.
             */
            public boolean hasEvent() {
                return ((bitField0_ & 0x00000001) != 0);
            }

            /**
             * <code>.context.Event event = 1;</code>
             * @return The event.
             */
            public context.ContextOuterClass.Event getEvent() {
                if (eventBuilder_ == null) {
                    return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
                } else {
                    return eventBuilder_.getMessage();
                }
            }

            /**
             * <code>.context.Event event = 1;</code>
             */
            public Builder setEvent(context.ContextOuterClass.Event value) {
                if (eventBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    event_ = value;
                } else {
                    eventBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.Event event = 1;</code>
             */
            public Builder setEvent(context.ContextOuterClass.Event.Builder builderForValue) {
                if (eventBuilder_ == null) {
                    event_ = builderForValue.build();
                } else {
                    eventBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.Event event = 1;</code>
             */
            public Builder mergeEvent(context.ContextOuterClass.Event value) {
                if (eventBuilder_ == null) {
                    if (((bitField0_ & 0x00000001) != 0) && event_ != null && event_ != context.ContextOuterClass.Event.getDefaultInstance()) {
                        getEventBuilder().mergeFrom(value);
                    } else {
                        event_ = value;
                    }
                } else {
                    eventBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.Event event = 1;</code>
             */
            public Builder clearEvent() {
                bitField0_ = (bitField0_ & ~0x00000001);
                event_ = null;
                if (eventBuilder_ != null) {
                    eventBuilder_.dispose();
                    eventBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.Event event = 1;</code>
             */
            public context.ContextOuterClass.Event.Builder getEventBuilder() {
                bitField0_ |= 0x00000001;
                onChanged();
                return getEventFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.Event event = 1;</code>
             */
            public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
                if (eventBuilder_ != null) {
                    return eventBuilder_.getMessageOrBuilder();
                } else {
                    return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
                }
            }

            /**
             * <code>.context.Event event = 1;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> getEventFieldBuilder() {
                if (eventBuilder_ == null) {
                    eventBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder>(getEvent(), getParentForChildren(), isClean());
                    event_ = null;
                }
                return eventBuilder_;
            }

            private context.ContextOuterClass.DeviceId deviceId_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> deviceIdBuilder_;

            /**
             * <code>.context.DeviceId device_id = 2;</code>
             * @return Whether the deviceId field is set.
             */
            public boolean hasDeviceId() {
                return ((bitField0_ & 0x00000002) != 0);
            }

            /**
             * <code>.context.DeviceId device_id = 2;</code>
             * @return The deviceId.
             */
            public context.ContextOuterClass.DeviceId getDeviceId() {
                if (deviceIdBuilder_ == null) {
                    return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
                } else {
                    return deviceIdBuilder_.getMessage();
                }
            }

            /**
             * <code>.context.DeviceId device_id = 2;</code>
             */
            public Builder setDeviceId(context.ContextOuterClass.DeviceId value) {
                if (deviceIdBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    deviceId_ = value;
                } else {
                    deviceIdBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>.context.DeviceId device_id = 2;</code>
             */
            public Builder setDeviceId(context.ContextOuterClass.DeviceId.Builder builderForValue) {
                if (deviceIdBuilder_ == null) {
                    deviceId_ = builderForValue.build();
                } else {
                    deviceIdBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>.context.DeviceId device_id = 2;</code>
             */
            public Builder mergeDeviceId(context.ContextOuterClass.DeviceId value) {
                if (deviceIdBuilder_ == null) {
                    if (((bitField0_ & 0x00000002) != 0) && deviceId_ != null && deviceId_ != context.ContextOuterClass.DeviceId.getDefaultInstance()) {
                        getDeviceIdBuilder().mergeFrom(value);
                    } else {
                        deviceId_ = value;
                    }
                } else {
                    deviceIdBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>.context.DeviceId device_id = 2;</code>
             */
            public Builder clearDeviceId() {
                bitField0_ = (bitField0_ & ~0x00000002);
                deviceId_ = null;
                if (deviceIdBuilder_ != null) {
                    deviceIdBuilder_.dispose();
                    deviceIdBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.DeviceId device_id = 2;</code>
             */
            public context.ContextOuterClass.DeviceId.Builder getDeviceIdBuilder() {
                bitField0_ |= 0x00000002;
                onChanged();
                return getDeviceIdFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.DeviceId device_id = 2;</code>
             */
            public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder() {
                if (deviceIdBuilder_ != null) {
                    return deviceIdBuilder_.getMessageOrBuilder();
                } else {
                    return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
                }
            }

            /**
             * <code>.context.DeviceId device_id = 2;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> getDeviceIdFieldBuilder() {
                if (deviceIdBuilder_ == null) {
                    deviceIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder>(getDeviceId(), getParentForChildren(), isClean());
                    deviceId_ = null;
                }
                return deviceIdBuilder_;
            }

            private context.ContextOuterClass.DeviceConfig deviceConfig_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.DeviceConfig, context.ContextOuterClass.DeviceConfig.Builder, context.ContextOuterClass.DeviceConfigOrBuilder> deviceConfigBuilder_;

            /**
             * <code>.context.DeviceConfig device_config = 3;</code>
             * @return Whether the deviceConfig field is set.
             */
            public boolean hasDeviceConfig() {
                return ((bitField0_ & 0x00000004) != 0);
            }

            /**
             * <code>.context.DeviceConfig device_config = 3;</code>
             * @return The deviceConfig.
             */
            public context.ContextOuterClass.DeviceConfig getDeviceConfig() {
                if (deviceConfigBuilder_ == null) {
                    return deviceConfig_ == null ? context.ContextOuterClass.DeviceConfig.getDefaultInstance() : deviceConfig_;
                } else {
                    return deviceConfigBuilder_.getMessage();
                }
            }

            /**
             * <code>.context.DeviceConfig device_config = 3;</code>
             */
            public Builder setDeviceConfig(context.ContextOuterClass.DeviceConfig value) {
                if (deviceConfigBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    deviceConfig_ = value;
                } else {
                    deviceConfigBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000004;
                onChanged();
                return this;
            }

            /**
             * <code>.context.DeviceConfig device_config = 3;</code>
             */
            public Builder setDeviceConfig(context.ContextOuterClass.DeviceConfig.Builder builderForValue) {
                if (deviceConfigBuilder_ == null) {
                    deviceConfig_ = builderForValue.build();
                } else {
                    deviceConfigBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000004;
                onChanged();
                return this;
            }

            /**
             * <code>.context.DeviceConfig device_config = 3;</code>
             */
            public Builder mergeDeviceConfig(context.ContextOuterClass.DeviceConfig value) {
                if (deviceConfigBuilder_ == null) {
                    if (((bitField0_ & 0x00000004) != 0) && deviceConfig_ != null && deviceConfig_ != context.ContextOuterClass.DeviceConfig.getDefaultInstance()) {
                        getDeviceConfigBuilder().mergeFrom(value);
                    } else {
                        deviceConfig_ = value;
                    }
                } else {
                    deviceConfigBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000004;
                onChanged();
                return this;
            }

            /**
             * <code>.context.DeviceConfig device_config = 3;</code>
             */
            public Builder clearDeviceConfig() {
                bitField0_ = (bitField0_ & ~0x00000004);
                deviceConfig_ = null;
                if (deviceConfigBuilder_ != null) {
                    deviceConfigBuilder_.dispose();
                    deviceConfigBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.DeviceConfig device_config = 3;</code>
             */
            public context.ContextOuterClass.DeviceConfig.Builder getDeviceConfigBuilder() {
                bitField0_ |= 0x00000004;
                onChanged();
                return getDeviceConfigFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.DeviceConfig device_config = 3;</code>
             */
            public context.ContextOuterClass.DeviceConfigOrBuilder getDeviceConfigOrBuilder() {
                if (deviceConfigBuilder_ != null) {
                    return deviceConfigBuilder_.getMessageOrBuilder();
                } else {
                    return deviceConfig_ == null ? context.ContextOuterClass.DeviceConfig.getDefaultInstance() : deviceConfig_;
                }
            }

            /**
             * <code>.context.DeviceConfig device_config = 3;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.DeviceConfig, context.ContextOuterClass.DeviceConfig.Builder, context.ContextOuterClass.DeviceConfigOrBuilder> getDeviceConfigFieldBuilder() {
                if (deviceConfigBuilder_ == null) {
                    deviceConfigBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.DeviceConfig, context.ContextOuterClass.DeviceConfig.Builder, context.ContextOuterClass.DeviceConfigOrBuilder>(getDeviceConfig(), getParentForChildren(), isClean());
                    deviceConfig_ = null;
                }
                return deviceConfigBuilder_;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.DeviceEvent)
        }

        // @@protoc_insertion_point(class_scope:context.DeviceEvent)
        private static final context.ContextOuterClass.DeviceEvent DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.DeviceEvent();
        }

        public static context.ContextOuterClass.DeviceEvent getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<DeviceEvent> PARSER = new com.google.protobuf.AbstractParser<DeviceEvent>() {

            @java.lang.Override
            public DeviceEvent parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<DeviceEvent> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<DeviceEvent> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.DeviceEvent getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface LinkIdOrBuilder extends // @@protoc_insertion_point(interface_extends:context.LinkId)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>.context.Uuid link_uuid = 1;</code>
         * @return Whether the linkUuid field is set.
         */
        boolean hasLinkUuid();

        /**
         * <code>.context.Uuid link_uuid = 1;</code>
         * @return The linkUuid.
         */
        context.ContextOuterClass.Uuid getLinkUuid();

        /**
         * <code>.context.Uuid link_uuid = 1;</code>
         */
        context.ContextOuterClass.UuidOrBuilder getLinkUuidOrBuilder();
    }

    /**
     * <pre>
     * ----- Link ----------------------------------------------------------------------------------------------------------
     * </pre>
     *
     * Protobuf type {@code context.LinkId}
     */
    public static final class LinkId extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.LinkId)
    LinkIdOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use LinkId.newBuilder() to construct.
        private LinkId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private LinkId() {
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new LinkId();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_LinkId_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_LinkId_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.LinkId.class, context.ContextOuterClass.LinkId.Builder.class);
        }

        public static final int LINK_UUID_FIELD_NUMBER = 1;

        private context.ContextOuterClass.Uuid linkUuid_;

        /**
         * <code>.context.Uuid link_uuid = 1;</code>
         * @return Whether the linkUuid field is set.
         */
        @java.lang.Override
        public boolean hasLinkUuid() {
            return linkUuid_ != null;
        }

        /**
         * <code>.context.Uuid link_uuid = 1;</code>
         * @return The linkUuid.
         */
        @java.lang.Override
        public context.ContextOuterClass.Uuid getLinkUuid() {
            return linkUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : linkUuid_;
        }

        /**
         * <code>.context.Uuid link_uuid = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.UuidOrBuilder getLinkUuidOrBuilder() {
            return linkUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : linkUuid_;
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            if (linkUuid_ != null) {
                output.writeMessage(1, getLinkUuid());
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            if (linkUuid_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getLinkUuid());
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.LinkId)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.LinkId other = (context.ContextOuterClass.LinkId) obj;
            if (hasLinkUuid() != other.hasLinkUuid())
                return false;
            if (hasLinkUuid()) {
                if (!getLinkUuid().equals(other.getLinkUuid()))
                    return false;
            }
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            if (hasLinkUuid()) {
                hash = (37 * hash) + LINK_UUID_FIELD_NUMBER;
                hash = (53 * hash) + getLinkUuid().hashCode();
            }
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.LinkId parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.LinkId parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.LinkId parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.LinkId parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.LinkId parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.LinkId parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.LinkId parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.LinkId parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.LinkId parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.LinkId parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.LinkId parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.LinkId parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.LinkId prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * <pre>
         * ----- Link ----------------------------------------------------------------------------------------------------------
         * </pre>
         *
         * Protobuf type {@code context.LinkId}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.LinkId)
        context.ContextOuterClass.LinkIdOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_LinkId_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_LinkId_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.LinkId.class, context.ContextOuterClass.LinkId.Builder.class);
            }

            // Construct using context.ContextOuterClass.LinkId.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                linkUuid_ = null;
                if (linkUuidBuilder_ != null) {
                    linkUuidBuilder_.dispose();
                    linkUuidBuilder_ = null;
                }
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_LinkId_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.LinkId getDefaultInstanceForType() {
                return context.ContextOuterClass.LinkId.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.LinkId build() {
                context.ContextOuterClass.LinkId result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.LinkId buildPartial() {
                context.ContextOuterClass.LinkId result = new context.ContextOuterClass.LinkId(this);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartial0(context.ContextOuterClass.LinkId result) {
                int from_bitField0_ = bitField0_;
                if (((from_bitField0_ & 0x00000001) != 0)) {
                    result.linkUuid_ = linkUuidBuilder_ == null ? linkUuid_ : linkUuidBuilder_.build();
                }
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.LinkId) {
                    return mergeFrom((context.ContextOuterClass.LinkId) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.LinkId other) {
                if (other == context.ContextOuterClass.LinkId.getDefaultInstance())
                    return this;
                if (other.hasLinkUuid()) {
                    mergeLinkUuid(other.getLinkUuid());
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 10:
                                {
                                    input.readMessage(getLinkUuidFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000001;
                                    break;
                                }
                            // case 10
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private context.ContextOuterClass.Uuid linkUuid_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> linkUuidBuilder_;

            /**
             * <code>.context.Uuid link_uuid = 1;</code>
             * @return Whether the linkUuid field is set.
             */
            public boolean hasLinkUuid() {
                return ((bitField0_ & 0x00000001) != 0);
            }

            /**
             * <code>.context.Uuid link_uuid = 1;</code>
             * @return The linkUuid.
             */
            public context.ContextOuterClass.Uuid getLinkUuid() {
                if (linkUuidBuilder_ == null) {
                    return linkUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : linkUuid_;
                } else {
                    return linkUuidBuilder_.getMessage();
                }
            }

            /**
             * <code>.context.Uuid link_uuid = 1;</code>
             */
            public Builder setLinkUuid(context.ContextOuterClass.Uuid value) {
                if (linkUuidBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    linkUuid_ = value;
                } else {
                    linkUuidBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.Uuid link_uuid = 1;</code>
             */
            public Builder setLinkUuid(context.ContextOuterClass.Uuid.Builder builderForValue) {
                if (linkUuidBuilder_ == null) {
                    linkUuid_ = builderForValue.build();
                } else {
                    linkUuidBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.Uuid link_uuid = 1;</code>
             */
            public Builder mergeLinkUuid(context.ContextOuterClass.Uuid value) {
                if (linkUuidBuilder_ == null) {
                    if (((bitField0_ & 0x00000001) != 0) && linkUuid_ != null && linkUuid_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
                        getLinkUuidBuilder().mergeFrom(value);
                    } else {
                        linkUuid_ = value;
                    }
                } else {
                    linkUuidBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.Uuid link_uuid = 1;</code>
             */
            public Builder clearLinkUuid() {
                bitField0_ = (bitField0_ & ~0x00000001);
                linkUuid_ = null;
                if (linkUuidBuilder_ != null) {
                    linkUuidBuilder_.dispose();
                    linkUuidBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.Uuid link_uuid = 1;</code>
             */
            public context.ContextOuterClass.Uuid.Builder getLinkUuidBuilder() {
                bitField0_ |= 0x00000001;
                onChanged();
                return getLinkUuidFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.Uuid link_uuid = 1;</code>
             */
            public context.ContextOuterClass.UuidOrBuilder getLinkUuidOrBuilder() {
                if (linkUuidBuilder_ != null) {
                    return linkUuidBuilder_.getMessageOrBuilder();
                } else {
                    return linkUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : linkUuid_;
                }
            }

            /**
             * <code>.context.Uuid link_uuid = 1;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> getLinkUuidFieldBuilder() {
                if (linkUuidBuilder_ == null) {
                    linkUuidBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder>(getLinkUuid(), getParentForChildren(), isClean());
                    linkUuid_ = null;
                }
                return linkUuidBuilder_;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.LinkId)
        }

        // @@protoc_insertion_point(class_scope:context.LinkId)
        private static final context.ContextOuterClass.LinkId DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.LinkId();
        }

        public static context.ContextOuterClass.LinkId getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<LinkId> PARSER = new com.google.protobuf.AbstractParser<LinkId>() {

            @java.lang.Override
            public LinkId parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<LinkId> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<LinkId> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.LinkId getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface LinkAttributesOrBuilder extends // @@protoc_insertion_point(interface_extends:context.LinkAttributes)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>float total_capacity_gbps = 1;</code>
         * @return The totalCapacityGbps.
         */
        float getTotalCapacityGbps();

        /**
         * <code>float used_capacity_gbps = 2;</code>
         * @return The usedCapacityGbps.
         */
        float getUsedCapacityGbps();
    }

    /**
     * Protobuf type {@code context.LinkAttributes}
     */
    public static final class LinkAttributes extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.LinkAttributes)
    LinkAttributesOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use LinkAttributes.newBuilder() to construct.
        private LinkAttributes(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private LinkAttributes() {
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new LinkAttributes();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_LinkAttributes_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_LinkAttributes_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.LinkAttributes.class, context.ContextOuterClass.LinkAttributes.Builder.class);
        }

        public static final int TOTAL_CAPACITY_GBPS_FIELD_NUMBER = 1;

        private float totalCapacityGbps_ = 0F;

        /**
         * <code>float total_capacity_gbps = 1;</code>
         * @return The totalCapacityGbps.
         */
        @java.lang.Override
        public float getTotalCapacityGbps() {
            return totalCapacityGbps_;
        }

        public static final int USED_CAPACITY_GBPS_FIELD_NUMBER = 2;

        private float usedCapacityGbps_ = 0F;

        /**
         * <code>float used_capacity_gbps = 2;</code>
         * @return The usedCapacityGbps.
         */
        @java.lang.Override
        public float getUsedCapacityGbps() {
            return usedCapacityGbps_;
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            if (java.lang.Float.floatToRawIntBits(totalCapacityGbps_) != 0) {
                output.writeFloat(1, totalCapacityGbps_);
            }
            if (java.lang.Float.floatToRawIntBits(usedCapacityGbps_) != 0) {
                output.writeFloat(2, usedCapacityGbps_);
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            if (java.lang.Float.floatToRawIntBits(totalCapacityGbps_) != 0) {
                size += com.google.protobuf.CodedOutputStream.computeFloatSize(1, totalCapacityGbps_);
            }
            if (java.lang.Float.floatToRawIntBits(usedCapacityGbps_) != 0) {
                size += com.google.protobuf.CodedOutputStream.computeFloatSize(2, usedCapacityGbps_);
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.LinkAttributes)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.LinkAttributes other = (context.ContextOuterClass.LinkAttributes) obj;
            if (java.lang.Float.floatToIntBits(getTotalCapacityGbps()) != java.lang.Float.floatToIntBits(other.getTotalCapacityGbps()))
                return false;
            if (java.lang.Float.floatToIntBits(getUsedCapacityGbps()) != java.lang.Float.floatToIntBits(other.getUsedCapacityGbps()))
                return false;
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            hash = (37 * hash) + TOTAL_CAPACITY_GBPS_FIELD_NUMBER;
            hash = (53 * hash) + java.lang.Float.floatToIntBits(getTotalCapacityGbps());
            hash = (37 * hash) + USED_CAPACITY_GBPS_FIELD_NUMBER;
            hash = (53 * hash) + java.lang.Float.floatToIntBits(getUsedCapacityGbps());
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.LinkAttributes parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.LinkAttributes parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.LinkAttributes parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.LinkAttributes parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.LinkAttributes parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.LinkAttributes parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.LinkAttributes parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.LinkAttributes parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.LinkAttributes parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.LinkAttributes parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.LinkAttributes parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.LinkAttributes parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.LinkAttributes prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code context.LinkAttributes}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.LinkAttributes)
        context.ContextOuterClass.LinkAttributesOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_LinkAttributes_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_LinkAttributes_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.LinkAttributes.class, context.ContextOuterClass.LinkAttributes.Builder.class);
            }

            // Construct using context.ContextOuterClass.LinkAttributes.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                totalCapacityGbps_ = 0F;
                usedCapacityGbps_ = 0F;
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_LinkAttributes_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.LinkAttributes getDefaultInstanceForType() {
                return context.ContextOuterClass.LinkAttributes.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.LinkAttributes build() {
                context.ContextOuterClass.LinkAttributes result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.LinkAttributes buildPartial() {
                context.ContextOuterClass.LinkAttributes result = new context.ContextOuterClass.LinkAttributes(this);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartial0(context.ContextOuterClass.LinkAttributes result) {
                int from_bitField0_ = bitField0_;
                if (((from_bitField0_ & 0x00000001) != 0)) {
                    result.totalCapacityGbps_ = totalCapacityGbps_;
                }
                if (((from_bitField0_ & 0x00000002) != 0)) {
                    result.usedCapacityGbps_ = usedCapacityGbps_;
                }
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.LinkAttributes) {
                    return mergeFrom((context.ContextOuterClass.LinkAttributes) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.LinkAttributes other) {
                if (other == context.ContextOuterClass.LinkAttributes.getDefaultInstance())
                    return this;
                if (other.getTotalCapacityGbps() != 0F) {
                    setTotalCapacityGbps(other.getTotalCapacityGbps());
                }
                if (other.getUsedCapacityGbps() != 0F) {
                    setUsedCapacityGbps(other.getUsedCapacityGbps());
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 13:
                                {
                                    totalCapacityGbps_ = input.readFloat();
                                    bitField0_ |= 0x00000001;
                                    break;
                                }
                            // case 13
                            case 21:
                                {
                                    usedCapacityGbps_ = input.readFloat();
                                    bitField0_ |= 0x00000002;
                                    break;
                                }
                            // case 21
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private float totalCapacityGbps_;

            /**
             * <code>float total_capacity_gbps = 1;</code>
             * @return The totalCapacityGbps.
             */
            @java.lang.Override
            public float getTotalCapacityGbps() {
                return totalCapacityGbps_;
            }

            /**
             * <code>float total_capacity_gbps = 1;</code>
             * @param value The totalCapacityGbps to set.
             * @return This builder for chaining.
             */
            public Builder setTotalCapacityGbps(float value) {
                totalCapacityGbps_ = value;
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>float total_capacity_gbps = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearTotalCapacityGbps() {
                bitField0_ = (bitField0_ & ~0x00000001);
                totalCapacityGbps_ = 0F;
                onChanged();
                return this;
            }

            private float usedCapacityGbps_;

            /**
             * <code>float used_capacity_gbps = 2;</code>
             * @return The usedCapacityGbps.
             */
            @java.lang.Override
            public float getUsedCapacityGbps() {
                return usedCapacityGbps_;
            }

            /**
             * <code>float used_capacity_gbps = 2;</code>
             * @param value The usedCapacityGbps to set.
             * @return This builder for chaining.
             */
            public Builder setUsedCapacityGbps(float value) {
                usedCapacityGbps_ = value;
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>float used_capacity_gbps = 2;</code>
             * @return This builder for chaining.
             */
            public Builder clearUsedCapacityGbps() {
                bitField0_ = (bitField0_ & ~0x00000002);
                usedCapacityGbps_ = 0F;
                onChanged();
                return this;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.LinkAttributes)
        }

        // @@protoc_insertion_point(class_scope:context.LinkAttributes)
        private static final context.ContextOuterClass.LinkAttributes DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.LinkAttributes();
        }

        public static context.ContextOuterClass.LinkAttributes getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<LinkAttributes> PARSER = new com.google.protobuf.AbstractParser<LinkAttributes>() {

            @java.lang.Override
            public LinkAttributes parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<LinkAttributes> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<LinkAttributes> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.LinkAttributes getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface LinkOrBuilder extends // @@protoc_insertion_point(interface_extends:context.Link)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>.context.LinkId link_id = 1;</code>
         * @return Whether the linkId field is set.
         */
        boolean hasLinkId();

        /**
         * <code>.context.LinkId link_id = 1;</code>
         * @return The linkId.
         */
        context.ContextOuterClass.LinkId getLinkId();

        /**
         * <code>.context.LinkId link_id = 1;</code>
         */
        context.ContextOuterClass.LinkIdOrBuilder getLinkIdOrBuilder();

        /**
         * <code>string name = 2;</code>
         * @return The name.
         */
        java.lang.String getName();

        /**
         * <code>string name = 2;</code>
         * @return The bytes for name.
         */
        com.google.protobuf.ByteString getNameBytes();

        /**
         * <code>.context.LinkTypeEnum link_type = 3;</code>
         * @return The enum numeric value on the wire for linkType.
         */
        int getLinkTypeValue();

        /**
         * <code>.context.LinkTypeEnum link_type = 3;</code>
         * @return The linkType.
         */
        context.ContextOuterClass.LinkTypeEnum getLinkType();

        /**
         * <code>repeated .context.EndPointId link_endpoint_ids = 4;</code>
         */
        java.util.List<context.ContextOuterClass.EndPointId> getLinkEndpointIdsList();

        /**
         * <code>repeated .context.EndPointId link_endpoint_ids = 4;</code>
         */
        context.ContextOuterClass.EndPointId getLinkEndpointIds(int index);

        /**
         * <code>repeated .context.EndPointId link_endpoint_ids = 4;</code>
         */
        int getLinkEndpointIdsCount();

        /**
         * <code>repeated .context.EndPointId link_endpoint_ids = 4;</code>
         */
        java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> getLinkEndpointIdsOrBuilderList();

        /**
         * <code>repeated .context.EndPointId link_endpoint_ids = 4;</code>
         */
        context.ContextOuterClass.EndPointIdOrBuilder getLinkEndpointIdsOrBuilder(int index);

        /**
         * <code>.context.LinkAttributes attributes = 5;</code>
         * @return Whether the attributes field is set.
         */
        boolean hasAttributes();

        /**
         * <code>.context.LinkAttributes attributes = 5;</code>
         * @return The attributes.
         */
        context.ContextOuterClass.LinkAttributes getAttributes();

        /**
         * <code>.context.LinkAttributes attributes = 5;</code>
         */
        context.ContextOuterClass.LinkAttributesOrBuilder getAttributesOrBuilder();
    }

    /**
     * Protobuf type {@code context.Link}
     */
    public static final class Link extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.Link)
    LinkOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use Link.newBuilder() to construct.
        private Link(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private Link() {
            name_ = "";
            linkType_ = 0;
            linkEndpointIds_ = java.util.Collections.emptyList();
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new Link();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_Link_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_Link_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Link.class, context.ContextOuterClass.Link.Builder.class);
        }

        public static final int LINK_ID_FIELD_NUMBER = 1;

        private context.ContextOuterClass.LinkId linkId_;

        /**
         * <code>.context.LinkId link_id = 1;</code>
         * @return Whether the linkId field is set.
         */
        @java.lang.Override
        public boolean hasLinkId() {
            return linkId_ != null;
        }

        /**
         * <code>.context.LinkId link_id = 1;</code>
         * @return The linkId.
         */
        @java.lang.Override
        public context.ContextOuterClass.LinkId getLinkId() {
            return linkId_ == null ? context.ContextOuterClass.LinkId.getDefaultInstance() : linkId_;
        }

        /**
         * <code>.context.LinkId link_id = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.LinkIdOrBuilder getLinkIdOrBuilder() {
            return linkId_ == null ? context.ContextOuterClass.LinkId.getDefaultInstance() : linkId_;
        }

        public static final int NAME_FIELD_NUMBER = 2;

        @SuppressWarnings("serial")
        private volatile java.lang.Object name_ = "";

        /**
         * <code>string name = 2;</code>
         * @return The name.
         */
        @java.lang.Override
        public java.lang.String getName() {
            java.lang.Object ref = name_;
            if (ref instanceof java.lang.String) {
                return (java.lang.String) ref;
            } else {
                com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                java.lang.String s = bs.toStringUtf8();
                name_ = s;
                return s;
            }
        }

        /**
         * <code>string name = 2;</code>
         * @return The bytes for name.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString getNameBytes() {
            java.lang.Object ref = name_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                name_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int LINK_TYPE_FIELD_NUMBER = 3;

        private int linkType_ = 0;

        /**
         * <code>.context.LinkTypeEnum link_type = 3;</code>
         * @return The enum numeric value on the wire for linkType.
         */
        @java.lang.Override
        public int getLinkTypeValue() {
            return linkType_;
        }

        /**
         * <code>.context.LinkTypeEnum link_type = 3;</code>
         * @return The linkType.
         */
        @java.lang.Override
        public context.ContextOuterClass.LinkTypeEnum getLinkType() {
            context.ContextOuterClass.LinkTypeEnum result = context.ContextOuterClass.LinkTypeEnum.forNumber(linkType_);
            return result == null ? context.ContextOuterClass.LinkTypeEnum.UNRECOGNIZED : result;
        }

        public static final int LINK_ENDPOINT_IDS_FIELD_NUMBER = 4;

        @SuppressWarnings("serial")
        private java.util.List<context.ContextOuterClass.EndPointId> linkEndpointIds_;

        /**
         * <code>repeated .context.EndPointId link_endpoint_ids = 4;</code>
         */
        @java.lang.Override
        public java.util.List<context.ContextOuterClass.EndPointId> getLinkEndpointIdsList() {
            return linkEndpointIds_;
        }

        /**
         * <code>repeated .context.EndPointId link_endpoint_ids = 4;</code>
         */
        @java.lang.Override
        public java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> getLinkEndpointIdsOrBuilderList() {
            return linkEndpointIds_;
        }

        /**
         * <code>repeated .context.EndPointId link_endpoint_ids = 4;</code>
         */
        @java.lang.Override
        public int getLinkEndpointIdsCount() {
            return linkEndpointIds_.size();
        }

        /**
         * <code>repeated .context.EndPointId link_endpoint_ids = 4;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.EndPointId getLinkEndpointIds(int index) {
            return linkEndpointIds_.get(index);
        }

        /**
         * <code>repeated .context.EndPointId link_endpoint_ids = 4;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.EndPointIdOrBuilder getLinkEndpointIdsOrBuilder(int index) {
            return linkEndpointIds_.get(index);
        }

        public static final int ATTRIBUTES_FIELD_NUMBER = 5;

        private context.ContextOuterClass.LinkAttributes attributes_;

        /**
         * <code>.context.LinkAttributes attributes = 5;</code>
         * @return Whether the attributes field is set.
         */
        @java.lang.Override
        public boolean hasAttributes() {
            return attributes_ != null;
        }

        /**
         * <code>.context.LinkAttributes attributes = 5;</code>
         * @return The attributes.
         */
        @java.lang.Override
        public context.ContextOuterClass.LinkAttributes getAttributes() {
            return attributes_ == null ? context.ContextOuterClass.LinkAttributes.getDefaultInstance() : attributes_;
        }

        /**
         * <code>.context.LinkAttributes attributes = 5;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.LinkAttributesOrBuilder getAttributesOrBuilder() {
            return attributes_ == null ? context.ContextOuterClass.LinkAttributes.getDefaultInstance() : attributes_;
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            if (linkId_ != null) {
                output.writeMessage(1, getLinkId());
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
            }
            if (linkType_ != context.ContextOuterClass.LinkTypeEnum.LINKTYPE_UNKNOWN.getNumber()) {
                output.writeEnum(3, linkType_);
            }
            for (int i = 0; i < linkEndpointIds_.size(); i++) {
                output.writeMessage(4, linkEndpointIds_.get(i));
            }
            if (attributes_ != null) {
                output.writeMessage(5, getAttributes());
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            if (linkId_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getLinkId());
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
            }
            if (linkType_ != context.ContextOuterClass.LinkTypeEnum.LINKTYPE_UNKNOWN.getNumber()) {
                size += com.google.protobuf.CodedOutputStream.computeEnumSize(3, linkType_);
            }
            for (int i = 0; i < linkEndpointIds_.size(); i++) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, linkEndpointIds_.get(i));
            }
            if (attributes_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(5, getAttributes());
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.Link)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.Link other = (context.ContextOuterClass.Link) obj;
            if (hasLinkId() != other.hasLinkId())
                return false;
            if (hasLinkId()) {
                if (!getLinkId().equals(other.getLinkId()))
                    return false;
            }
            if (!getName().equals(other.getName()))
                return false;
            if (linkType_ != other.linkType_)
                return false;
            if (!getLinkEndpointIdsList().equals(other.getLinkEndpointIdsList()))
                return false;
            if (hasAttributes() != other.hasAttributes())
                return false;
            if (hasAttributes()) {
                if (!getAttributes().equals(other.getAttributes()))
                    return false;
            }
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            if (hasLinkId()) {
                hash = (37 * hash) + LINK_ID_FIELD_NUMBER;
                hash = (53 * hash) + getLinkId().hashCode();
            }
            hash = (37 * hash) + NAME_FIELD_NUMBER;
            hash = (53 * hash) + getName().hashCode();
            hash = (37 * hash) + LINK_TYPE_FIELD_NUMBER;
            hash = (53 * hash) + linkType_;
            if (getLinkEndpointIdsCount() > 0) {
                hash = (37 * hash) + LINK_ENDPOINT_IDS_FIELD_NUMBER;
                hash = (53 * hash) + getLinkEndpointIdsList().hashCode();
            }
            if (hasAttributes()) {
                hash = (37 * hash) + ATTRIBUTES_FIELD_NUMBER;
                hash = (53 * hash) + getAttributes().hashCode();
            }
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.Link parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.Link parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.Link parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.Link parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.Link parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.Link parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.Link parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.Link parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.Link parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.Link parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.Link parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.Link parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.Link prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code context.Link}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.Link)
        context.ContextOuterClass.LinkOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_Link_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_Link_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Link.class, context.ContextOuterClass.Link.Builder.class);
            }

            // Construct using context.ContextOuterClass.Link.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                linkId_ = null;
                if (linkIdBuilder_ != null) {
                    linkIdBuilder_.dispose();
                    linkIdBuilder_ = null;
                }
                name_ = "";
                linkType_ = 0;
                if (linkEndpointIdsBuilder_ == null) {
                    linkEndpointIds_ = java.util.Collections.emptyList();
                } else {
                    linkEndpointIds_ = null;
                    linkEndpointIdsBuilder_.clear();
                }
                bitField0_ = (bitField0_ & ~0x00000008);
                attributes_ = null;
                if (attributesBuilder_ != null) {
                    attributesBuilder_.dispose();
                    attributesBuilder_ = null;
                }
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_Link_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.Link getDefaultInstanceForType() {
                return context.ContextOuterClass.Link.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.Link build() {
                context.ContextOuterClass.Link result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.Link buildPartial() {
                context.ContextOuterClass.Link result = new context.ContextOuterClass.Link(this);
                buildPartialRepeatedFields(result);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartialRepeatedFields(context.ContextOuterClass.Link result) {
                if (linkEndpointIdsBuilder_ == null) {
                    if (((bitField0_ & 0x00000008) != 0)) {
                        linkEndpointIds_ = java.util.Collections.unmodifiableList(linkEndpointIds_);
                        bitField0_ = (bitField0_ & ~0x00000008);
                    }
                    result.linkEndpointIds_ = linkEndpointIds_;
                } else {
                    result.linkEndpointIds_ = linkEndpointIdsBuilder_.build();
                }
            }

            private void buildPartial0(context.ContextOuterClass.Link result) {
                int from_bitField0_ = bitField0_;
                if (((from_bitField0_ & 0x00000001) != 0)) {
                    result.linkId_ = linkIdBuilder_ == null ? linkId_ : linkIdBuilder_.build();
                }
                if (((from_bitField0_ & 0x00000002) != 0)) {
                    result.name_ = name_;
                }
                if (((from_bitField0_ & 0x00000004) != 0)) {
                    result.linkType_ = linkType_;
                }
                if (((from_bitField0_ & 0x00000010) != 0)) {
                    result.attributes_ = attributesBuilder_ == null ? attributes_ : attributesBuilder_.build();
                }
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.Link) {
                    return mergeFrom((context.ContextOuterClass.Link) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.Link other) {
                if (other == context.ContextOuterClass.Link.getDefaultInstance())
                    return this;
                if (other.hasLinkId()) {
                    mergeLinkId(other.getLinkId());
                }
                if (!other.getName().isEmpty()) {
                    name_ = other.name_;
                    bitField0_ |= 0x00000002;
                    onChanged();
                }
                if (other.linkType_ != 0) {
                    setLinkTypeValue(other.getLinkTypeValue());
                }
                if (linkEndpointIdsBuilder_ == null) {
                    if (!other.linkEndpointIds_.isEmpty()) {
                        if (linkEndpointIds_.isEmpty()) {
                            linkEndpointIds_ = other.linkEndpointIds_;
                            bitField0_ = (bitField0_ & ~0x00000008);
                        } else {
                            ensureLinkEndpointIdsIsMutable();
                            linkEndpointIds_.addAll(other.linkEndpointIds_);
                        }
                        onChanged();
                    }
                } else {
                    if (!other.linkEndpointIds_.isEmpty()) {
                        if (linkEndpointIdsBuilder_.isEmpty()) {
                            linkEndpointIdsBuilder_.dispose();
                            linkEndpointIdsBuilder_ = null;
                            linkEndpointIds_ = other.linkEndpointIds_;
                            bitField0_ = (bitField0_ & ~0x00000008);
                            linkEndpointIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getLinkEndpointIdsFieldBuilder() : null;
                        } else {
                            linkEndpointIdsBuilder_.addAllMessages(other.linkEndpointIds_);
                        }
                    }
                }
                if (other.hasAttributes()) {
                    mergeAttributes(other.getAttributes());
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 10:
                                {
                                    input.readMessage(getLinkIdFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000001;
                                    break;
                                }
                            // case 10
                            case 18:
                                {
                                    name_ = input.readStringRequireUtf8();
                                    bitField0_ |= 0x00000002;
                                    break;
                                }
                            // case 18
                            case 24:
                                {
                                    linkType_ = input.readEnum();
                                    bitField0_ |= 0x00000004;
                                    break;
                                }
                            // case 24
                            case 34:
                                {
                                    context.ContextOuterClass.EndPointId m = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry);
                                    if (linkEndpointIdsBuilder_ == null) {
                                        ensureLinkEndpointIdsIsMutable();
                                        linkEndpointIds_.add(m);
                                    } else {
                                        linkEndpointIdsBuilder_.addMessage(m);
                                    }
                                    break;
                                }
                            // case 34
                            case 42:
                                {
                                    input.readMessage(getAttributesFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000010;
                                    break;
                                }
                            // case 42
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private context.ContextOuterClass.LinkId linkId_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder> linkIdBuilder_;

            /**
             * <code>.context.LinkId link_id = 1;</code>
             * @return Whether the linkId field is set.
             */
            public boolean hasLinkId() {
                return ((bitField0_ & 0x00000001) != 0);
            }

            /**
             * <code>.context.LinkId link_id = 1;</code>
             * @return The linkId.
             */
            public context.ContextOuterClass.LinkId getLinkId() {
                if (linkIdBuilder_ == null) {
                    return linkId_ == null ? context.ContextOuterClass.LinkId.getDefaultInstance() : linkId_;
                } else {
                    return linkIdBuilder_.getMessage();
                }
            }

            /**
             * <code>.context.LinkId link_id = 1;</code>
             */
            public Builder setLinkId(context.ContextOuterClass.LinkId value) {
                if (linkIdBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    linkId_ = value;
                } else {
                    linkIdBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.LinkId link_id = 1;</code>
             */
            public Builder setLinkId(context.ContextOuterClass.LinkId.Builder builderForValue) {
                if (linkIdBuilder_ == null) {
                    linkId_ = builderForValue.build();
                } else {
                    linkIdBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.LinkId link_id = 1;</code>
             */
            public Builder mergeLinkId(context.ContextOuterClass.LinkId value) {
                if (linkIdBuilder_ == null) {
                    if (((bitField0_ & 0x00000001) != 0) && linkId_ != null && linkId_ != context.ContextOuterClass.LinkId.getDefaultInstance()) {
                        getLinkIdBuilder().mergeFrom(value);
                    } else {
                        linkId_ = value;
                    }
                } else {
                    linkIdBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.LinkId link_id = 1;</code>
             */
            public Builder clearLinkId() {
                bitField0_ = (bitField0_ & ~0x00000001);
                linkId_ = null;
                if (linkIdBuilder_ != null) {
                    linkIdBuilder_.dispose();
                    linkIdBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.LinkId link_id = 1;</code>
             */
            public context.ContextOuterClass.LinkId.Builder getLinkIdBuilder() {
                bitField0_ |= 0x00000001;
                onChanged();
                return getLinkIdFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.LinkId link_id = 1;</code>
             */
            public context.ContextOuterClass.LinkIdOrBuilder getLinkIdOrBuilder() {
                if (linkIdBuilder_ != null) {
                    return linkIdBuilder_.getMessageOrBuilder();
                } else {
                    return linkId_ == null ? context.ContextOuterClass.LinkId.getDefaultInstance() : linkId_;
                }
            }

            /**
             * <code>.context.LinkId link_id = 1;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder> getLinkIdFieldBuilder() {
                if (linkIdBuilder_ == null) {
                    linkIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder>(getLinkId(), getParentForChildren(), isClean());
                    linkId_ = null;
                }
                return linkIdBuilder_;
            }

            private java.lang.Object name_ = "";

            /**
             * <code>string name = 2;</code>
             * @return The name.
             */
            public java.lang.String getName() {
                java.lang.Object ref = name_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    name_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }

            /**
             * <code>string name = 2;</code>
             * @return The bytes for name.
             */
            public com.google.protobuf.ByteString getNameBytes() {
                java.lang.Object ref = name_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                    name_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }

            /**
             * <code>string name = 2;</code>
             * @param value The name to set.
             * @return This builder for chaining.
             */
            public Builder setName(java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                name_ = value;
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>string name = 2;</code>
             * @return This builder for chaining.
             */
            public Builder clearName() {
                name_ = getDefaultInstance().getName();
                bitField0_ = (bitField0_ & ~0x00000002);
                onChanged();
                return this;
            }

            /**
             * <code>string name = 2;</code>
             * @param value The bytes for name to set.
             * @return This builder for chaining.
             */
            public Builder setNameBytes(com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);
                name_ = value;
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            private int linkType_ = 0;

            /**
             * <code>.context.LinkTypeEnum link_type = 3;</code>
             * @return The enum numeric value on the wire for linkType.
             */
            @java.lang.Override
            public int getLinkTypeValue() {
                return linkType_;
            }

            /**
             * <code>.context.LinkTypeEnum link_type = 3;</code>
             * @param value The enum numeric value on the wire for linkType to set.
             * @return This builder for chaining.
             */
            public Builder setLinkTypeValue(int value) {
                linkType_ = value;
                bitField0_ |= 0x00000004;
                onChanged();
                return this;
            }

            /**
             * <code>.context.LinkTypeEnum link_type = 3;</code>
             * @return The linkType.
             */
            @java.lang.Override
            public context.ContextOuterClass.LinkTypeEnum getLinkType() {
                context.ContextOuterClass.LinkTypeEnum result = context.ContextOuterClass.LinkTypeEnum.forNumber(linkType_);
                return result == null ? context.ContextOuterClass.LinkTypeEnum.UNRECOGNIZED : result;
            }

            /**
             * <code>.context.LinkTypeEnum link_type = 3;</code>
             * @param value The linkType to set.
             * @return This builder for chaining.
             */
            public Builder setLinkType(context.ContextOuterClass.LinkTypeEnum value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                bitField0_ |= 0x00000004;
                linkType_ = value.getNumber();
                onChanged();
                return this;
            }

            /**
             * <code>.context.LinkTypeEnum link_type = 3;</code>
             * @return This builder for chaining.
             */
            public Builder clearLinkType() {
                bitField0_ = (bitField0_ & ~0x00000004);
                linkType_ = 0;
                onChanged();
                return this;
            }

            private java.util.List<context.ContextOuterClass.EndPointId> linkEndpointIds_ = java.util.Collections.emptyList();

            private void ensureLinkEndpointIdsIsMutable() {
                if (!((bitField0_ & 0x00000008) != 0)) {
                    linkEndpointIds_ = new java.util.ArrayList<context.ContextOuterClass.EndPointId>(linkEndpointIds_);
                    bitField0_ |= 0x00000008;
                }
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> linkEndpointIdsBuilder_;

            /**
             * <code>repeated .context.EndPointId link_endpoint_ids = 4;</code>
             */
            public java.util.List<context.ContextOuterClass.EndPointId> getLinkEndpointIdsList() {
                if (linkEndpointIdsBuilder_ == null) {
                    return java.util.Collections.unmodifiableList(linkEndpointIds_);
                } else {
                    return linkEndpointIdsBuilder_.getMessageList();
                }
            }

            /**
             * <code>repeated .context.EndPointId link_endpoint_ids = 4;</code>
             */
            public int getLinkEndpointIdsCount() {
                if (linkEndpointIdsBuilder_ == null) {
                    return linkEndpointIds_.size();
                } else {
                    return linkEndpointIdsBuilder_.getCount();
                }
            }

            /**
             * <code>repeated .context.EndPointId link_endpoint_ids = 4;</code>
             */
            public context.ContextOuterClass.EndPointId getLinkEndpointIds(int index) {
                if (linkEndpointIdsBuilder_ == null) {
                    return linkEndpointIds_.get(index);
                } else {
                    return linkEndpointIdsBuilder_.getMessage(index);
                }
            }

            /**
             * <code>repeated .context.EndPointId link_endpoint_ids = 4;</code>
             */
            public Builder setLinkEndpointIds(int index, context.ContextOuterClass.EndPointId value) {
                if (linkEndpointIdsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureLinkEndpointIdsIsMutable();
                    linkEndpointIds_.set(index, value);
                    onChanged();
                } else {
                    linkEndpointIdsBuilder_.setMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPointId link_endpoint_ids = 4;</code>
             */
            public Builder setLinkEndpointIds(int index, context.ContextOuterClass.EndPointId.Builder builderForValue) {
                if (linkEndpointIdsBuilder_ == null) {
                    ensureLinkEndpointIdsIsMutable();
                    linkEndpointIds_.set(index, builderForValue.build());
                    onChanged();
                } else {
                    linkEndpointIdsBuilder_.setMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPointId link_endpoint_ids = 4;</code>
             */
            public Builder addLinkEndpointIds(context.ContextOuterClass.EndPointId value) {
                if (linkEndpointIdsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureLinkEndpointIdsIsMutable();
                    linkEndpointIds_.add(value);
                    onChanged();
                } else {
                    linkEndpointIdsBuilder_.addMessage(value);
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPointId link_endpoint_ids = 4;</code>
             */
            public Builder addLinkEndpointIds(int index, context.ContextOuterClass.EndPointId value) {
                if (linkEndpointIdsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureLinkEndpointIdsIsMutable();
                    linkEndpointIds_.add(index, value);
                    onChanged();
                } else {
                    linkEndpointIdsBuilder_.addMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPointId link_endpoint_ids = 4;</code>
             */
            public Builder addLinkEndpointIds(context.ContextOuterClass.EndPointId.Builder builderForValue) {
                if (linkEndpointIdsBuilder_ == null) {
                    ensureLinkEndpointIdsIsMutable();
                    linkEndpointIds_.add(builderForValue.build());
                    onChanged();
                } else {
                    linkEndpointIdsBuilder_.addMessage(builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPointId link_endpoint_ids = 4;</code>
             */
            public Builder addLinkEndpointIds(int index, context.ContextOuterClass.EndPointId.Builder builderForValue) {
                if (linkEndpointIdsBuilder_ == null) {
                    ensureLinkEndpointIdsIsMutable();
                    linkEndpointIds_.add(index, builderForValue.build());
                    onChanged();
                } else {
                    linkEndpointIdsBuilder_.addMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPointId link_endpoint_ids = 4;</code>
             */
            public Builder addAllLinkEndpointIds(java.lang.Iterable<? extends context.ContextOuterClass.EndPointId> values) {
                if (linkEndpointIdsBuilder_ == null) {
                    ensureLinkEndpointIdsIsMutable();
                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, linkEndpointIds_);
                    onChanged();
                } else {
                    linkEndpointIdsBuilder_.addAllMessages(values);
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPointId link_endpoint_ids = 4;</code>
             */
            public Builder clearLinkEndpointIds() {
                if (linkEndpointIdsBuilder_ == null) {
                    linkEndpointIds_ = java.util.Collections.emptyList();
                    bitField0_ = (bitField0_ & ~0x00000008);
                    onChanged();
                } else {
                    linkEndpointIdsBuilder_.clear();
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPointId link_endpoint_ids = 4;</code>
             */
            public Builder removeLinkEndpointIds(int index) {
                if (linkEndpointIdsBuilder_ == null) {
                    ensureLinkEndpointIdsIsMutable();
                    linkEndpointIds_.remove(index);
                    onChanged();
                } else {
                    linkEndpointIdsBuilder_.remove(index);
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPointId link_endpoint_ids = 4;</code>
             */
            public context.ContextOuterClass.EndPointId.Builder getLinkEndpointIdsBuilder(int index) {
                return getLinkEndpointIdsFieldBuilder().getBuilder(index);
            }

            /**
             * <code>repeated .context.EndPointId link_endpoint_ids = 4;</code>
             */
            public context.ContextOuterClass.EndPointIdOrBuilder getLinkEndpointIdsOrBuilder(int index) {
                if (linkEndpointIdsBuilder_ == null) {
                    return linkEndpointIds_.get(index);
                } else {
                    return linkEndpointIdsBuilder_.getMessageOrBuilder(index);
                }
            }

            /**
             * <code>repeated .context.EndPointId link_endpoint_ids = 4;</code>
             */
            public java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> getLinkEndpointIdsOrBuilderList() {
                if (linkEndpointIdsBuilder_ != null) {
                    return linkEndpointIdsBuilder_.getMessageOrBuilderList();
                } else {
                    return java.util.Collections.unmodifiableList(linkEndpointIds_);
                }
            }

            /**
             * <code>repeated .context.EndPointId link_endpoint_ids = 4;</code>
             */
            public context.ContextOuterClass.EndPointId.Builder addLinkEndpointIdsBuilder() {
                return getLinkEndpointIdsFieldBuilder().addBuilder(context.ContextOuterClass.EndPointId.getDefaultInstance());
            }

            /**
             * <code>repeated .context.EndPointId link_endpoint_ids = 4;</code>
             */
            public context.ContextOuterClass.EndPointId.Builder addLinkEndpointIdsBuilder(int index) {
                return getLinkEndpointIdsFieldBuilder().addBuilder(index, context.ContextOuterClass.EndPointId.getDefaultInstance());
            }

            /**
             * <code>repeated .context.EndPointId link_endpoint_ids = 4;</code>
             */
            public java.util.List<context.ContextOuterClass.EndPointId.Builder> getLinkEndpointIdsBuilderList() {
                return getLinkEndpointIdsFieldBuilder().getBuilderList();
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> getLinkEndpointIdsFieldBuilder() {
                if (linkEndpointIdsBuilder_ == null) {
                    linkEndpointIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder>(linkEndpointIds_, ((bitField0_ & 0x00000008) != 0), getParentForChildren(), isClean());
                    linkEndpointIds_ = null;
                }
                return linkEndpointIdsBuilder_;
            }

            private context.ContextOuterClass.LinkAttributes attributes_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.LinkAttributes, context.ContextOuterClass.LinkAttributes.Builder, context.ContextOuterClass.LinkAttributesOrBuilder> attributesBuilder_;

            /**
             * <code>.context.LinkAttributes attributes = 5;</code>
             * @return Whether the attributes field is set.
             */
            public boolean hasAttributes() {
                return ((bitField0_ & 0x00000010) != 0);
            }

            /**
             * <code>.context.LinkAttributes attributes = 5;</code>
             * @return The attributes.
             */
            public context.ContextOuterClass.LinkAttributes getAttributes() {
                if (attributesBuilder_ == null) {
                    return attributes_ == null ? context.ContextOuterClass.LinkAttributes.getDefaultInstance() : attributes_;
                } else {
                    return attributesBuilder_.getMessage();
                }
            }

            /**
             * <code>.context.LinkAttributes attributes = 5;</code>
             */
            public Builder setAttributes(context.ContextOuterClass.LinkAttributes value) {
                if (attributesBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    attributes_ = value;
                } else {
                    attributesBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000010;
                onChanged();
                return this;
            }

            /**
             * <code>.context.LinkAttributes attributes = 5;</code>
             */
            public Builder setAttributes(context.ContextOuterClass.LinkAttributes.Builder builderForValue) {
                if (attributesBuilder_ == null) {
                    attributes_ = builderForValue.build();
                } else {
                    attributesBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000010;
                onChanged();
                return this;
            }

            /**
             * <code>.context.LinkAttributes attributes = 5;</code>
             */
            public Builder mergeAttributes(context.ContextOuterClass.LinkAttributes value) {
                if (attributesBuilder_ == null) {
                    if (((bitField0_ & 0x00000010) != 0) && attributes_ != null && attributes_ != context.ContextOuterClass.LinkAttributes.getDefaultInstance()) {
                        getAttributesBuilder().mergeFrom(value);
                    } else {
                        attributes_ = value;
                    }
                } else {
                    attributesBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000010;
                onChanged();
                return this;
            }

            /**
             * <code>.context.LinkAttributes attributes = 5;</code>
             */
            public Builder clearAttributes() {
                bitField0_ = (bitField0_ & ~0x00000010);
                attributes_ = null;
                if (attributesBuilder_ != null) {
                    attributesBuilder_.dispose();
                    attributesBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.LinkAttributes attributes = 5;</code>
             */
            public context.ContextOuterClass.LinkAttributes.Builder getAttributesBuilder() {
                bitField0_ |= 0x00000010;
                onChanged();
                return getAttributesFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.LinkAttributes attributes = 5;</code>
             */
            public context.ContextOuterClass.LinkAttributesOrBuilder getAttributesOrBuilder() {
                if (attributesBuilder_ != null) {
                    return attributesBuilder_.getMessageOrBuilder();
                } else {
                    return attributes_ == null ? context.ContextOuterClass.LinkAttributes.getDefaultInstance() : attributes_;
                }
            }

            /**
             * <code>.context.LinkAttributes attributes = 5;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.LinkAttributes, context.ContextOuterClass.LinkAttributes.Builder, context.ContextOuterClass.LinkAttributesOrBuilder> getAttributesFieldBuilder() {
                if (attributesBuilder_ == null) {
                    attributesBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.LinkAttributes, context.ContextOuterClass.LinkAttributes.Builder, context.ContextOuterClass.LinkAttributesOrBuilder>(getAttributes(), getParentForChildren(), isClean());
                    attributes_ = null;
                }
                return attributesBuilder_;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.Link)
        }

        // @@protoc_insertion_point(class_scope:context.Link)
        private static final context.ContextOuterClass.Link DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.Link();
        }

        public static context.ContextOuterClass.Link getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<Link> PARSER = new com.google.protobuf.AbstractParser<Link>() {

            @java.lang.Override
            public Link parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<Link> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<Link> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.Link getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface LinkIdListOrBuilder extends // @@protoc_insertion_point(interface_extends:context.LinkIdList)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>repeated .context.LinkId link_ids = 1;</code>
         */
        java.util.List<context.ContextOuterClass.LinkId> getLinkIdsList();

        /**
         * <code>repeated .context.LinkId link_ids = 1;</code>
         */
        context.ContextOuterClass.LinkId getLinkIds(int index);

        /**
         * <code>repeated .context.LinkId link_ids = 1;</code>
         */
        int getLinkIdsCount();

        /**
         * <code>repeated .context.LinkId link_ids = 1;</code>
         */
        java.util.List<? extends context.ContextOuterClass.LinkIdOrBuilder> getLinkIdsOrBuilderList();

        /**
         * <code>repeated .context.LinkId link_ids = 1;</code>
         */
        context.ContextOuterClass.LinkIdOrBuilder getLinkIdsOrBuilder(int index);
    }

    /**
     * Protobuf type {@code context.LinkIdList}
     */
    public static final class LinkIdList extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.LinkIdList)
    LinkIdListOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use LinkIdList.newBuilder() to construct.
        private LinkIdList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private LinkIdList() {
            linkIds_ = java.util.Collections.emptyList();
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new LinkIdList();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_LinkIdList_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_LinkIdList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.LinkIdList.class, context.ContextOuterClass.LinkIdList.Builder.class);
        }

        public static final int LINK_IDS_FIELD_NUMBER = 1;

        @SuppressWarnings("serial")
        private java.util.List<context.ContextOuterClass.LinkId> linkIds_;

        /**
         * <code>repeated .context.LinkId link_ids = 1;</code>
         */
        @java.lang.Override
        public java.util.List<context.ContextOuterClass.LinkId> getLinkIdsList() {
            return linkIds_;
        }

        /**
         * <code>repeated .context.LinkId link_ids = 1;</code>
         */
        @java.lang.Override
        public java.util.List<? extends context.ContextOuterClass.LinkIdOrBuilder> getLinkIdsOrBuilderList() {
            return linkIds_;
        }

        /**
         * <code>repeated .context.LinkId link_ids = 1;</code>
         */
        @java.lang.Override
        public int getLinkIdsCount() {
            return linkIds_.size();
        }

        /**
         * <code>repeated .context.LinkId link_ids = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.LinkId getLinkIds(int index) {
            return linkIds_.get(index);
        }

        /**
         * <code>repeated .context.LinkId link_ids = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.LinkIdOrBuilder getLinkIdsOrBuilder(int index) {
            return linkIds_.get(index);
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            for (int i = 0; i < linkIds_.size(); i++) {
                output.writeMessage(1, linkIds_.get(i));
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            for (int i = 0; i < linkIds_.size(); i++) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, linkIds_.get(i));
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.LinkIdList)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.LinkIdList other = (context.ContextOuterClass.LinkIdList) obj;
            if (!getLinkIdsList().equals(other.getLinkIdsList()))
                return false;
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            if (getLinkIdsCount() > 0) {
                hash = (37 * hash) + LINK_IDS_FIELD_NUMBER;
                hash = (53 * hash) + getLinkIdsList().hashCode();
            }
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.LinkIdList parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.LinkIdList parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.LinkIdList parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.LinkIdList parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.LinkIdList parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.LinkIdList parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.LinkIdList parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.LinkIdList parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.LinkIdList parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.LinkIdList parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.LinkIdList parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.LinkIdList parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.LinkIdList prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code context.LinkIdList}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.LinkIdList)
        context.ContextOuterClass.LinkIdListOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_LinkIdList_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_LinkIdList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.LinkIdList.class, context.ContextOuterClass.LinkIdList.Builder.class);
            }

            // Construct using context.ContextOuterClass.LinkIdList.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                if (linkIdsBuilder_ == null) {
                    linkIds_ = java.util.Collections.emptyList();
                } else {
                    linkIds_ = null;
                    linkIdsBuilder_.clear();
                }
                bitField0_ = (bitField0_ & ~0x00000001);
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_LinkIdList_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.LinkIdList getDefaultInstanceForType() {
                return context.ContextOuterClass.LinkIdList.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.LinkIdList build() {
                context.ContextOuterClass.LinkIdList result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.LinkIdList buildPartial() {
                context.ContextOuterClass.LinkIdList result = new context.ContextOuterClass.LinkIdList(this);
                buildPartialRepeatedFields(result);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartialRepeatedFields(context.ContextOuterClass.LinkIdList result) {
                if (linkIdsBuilder_ == null) {
                    if (((bitField0_ & 0x00000001) != 0)) {
                        linkIds_ = java.util.Collections.unmodifiableList(linkIds_);
                        bitField0_ = (bitField0_ & ~0x00000001);
                    }
                    result.linkIds_ = linkIds_;
                } else {
                    result.linkIds_ = linkIdsBuilder_.build();
                }
            }

            private void buildPartial0(context.ContextOuterClass.LinkIdList result) {
                int from_bitField0_ = bitField0_;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.LinkIdList) {
                    return mergeFrom((context.ContextOuterClass.LinkIdList) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.LinkIdList other) {
                if (other == context.ContextOuterClass.LinkIdList.getDefaultInstance())
                    return this;
                if (linkIdsBuilder_ == null) {
                    if (!other.linkIds_.isEmpty()) {
                        if (linkIds_.isEmpty()) {
                            linkIds_ = other.linkIds_;
                            bitField0_ = (bitField0_ & ~0x00000001);
                        } else {
                            ensureLinkIdsIsMutable();
                            linkIds_.addAll(other.linkIds_);
                        }
                        onChanged();
                    }
                } else {
                    if (!other.linkIds_.isEmpty()) {
                        if (linkIdsBuilder_.isEmpty()) {
                            linkIdsBuilder_.dispose();
                            linkIdsBuilder_ = null;
                            linkIds_ = other.linkIds_;
                            bitField0_ = (bitField0_ & ~0x00000001);
                            linkIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getLinkIdsFieldBuilder() : null;
                        } else {
                            linkIdsBuilder_.addAllMessages(other.linkIds_);
                        }
                    }
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 10:
                                {
                                    context.ContextOuterClass.LinkId m = input.readMessage(context.ContextOuterClass.LinkId.parser(), extensionRegistry);
                                    if (linkIdsBuilder_ == null) {
                                        ensureLinkIdsIsMutable();
                                        linkIds_.add(m);
                                    } else {
                                        linkIdsBuilder_.addMessage(m);
                                    }
                                    break;
                                }
                            // case 10
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private java.util.List<context.ContextOuterClass.LinkId> linkIds_ = java.util.Collections.emptyList();

            private void ensureLinkIdsIsMutable() {
                if (!((bitField0_ & 0x00000001) != 0)) {
                    linkIds_ = new java.util.ArrayList<context.ContextOuterClass.LinkId>(linkIds_);
                    bitField0_ |= 0x00000001;
                }
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder> linkIdsBuilder_;

            /**
             * <code>repeated .context.LinkId link_ids = 1;</code>
             */
            public java.util.List<context.ContextOuterClass.LinkId> getLinkIdsList() {
                if (linkIdsBuilder_ == null) {
                    return java.util.Collections.unmodifiableList(linkIds_);
                } else {
                    return linkIdsBuilder_.getMessageList();
                }
            }

            /**
             * <code>repeated .context.LinkId link_ids = 1;</code>
             */
            public int getLinkIdsCount() {
                if (linkIdsBuilder_ == null) {
                    return linkIds_.size();
                } else {
                    return linkIdsBuilder_.getCount();
                }
            }

            /**
             * <code>repeated .context.LinkId link_ids = 1;</code>
             */
            public context.ContextOuterClass.LinkId getLinkIds(int index) {
                if (linkIdsBuilder_ == null) {
                    return linkIds_.get(index);
                } else {
                    return linkIdsBuilder_.getMessage(index);
                }
            }

            /**
             * <code>repeated .context.LinkId link_ids = 1;</code>
             */
            public Builder setLinkIds(int index, context.ContextOuterClass.LinkId value) {
                if (linkIdsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureLinkIdsIsMutable();
                    linkIds_.set(index, value);
                    onChanged();
                } else {
                    linkIdsBuilder_.setMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.LinkId link_ids = 1;</code>
             */
            public Builder setLinkIds(int index, context.ContextOuterClass.LinkId.Builder builderForValue) {
                if (linkIdsBuilder_ == null) {
                    ensureLinkIdsIsMutable();
                    linkIds_.set(index, builderForValue.build());
                    onChanged();
                } else {
                    linkIdsBuilder_.setMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.LinkId link_ids = 1;</code>
             */
            public Builder addLinkIds(context.ContextOuterClass.LinkId value) {
                if (linkIdsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureLinkIdsIsMutable();
                    linkIds_.add(value);
                    onChanged();
                } else {
                    linkIdsBuilder_.addMessage(value);
                }
                return this;
            }

            /**
             * <code>repeated .context.LinkId link_ids = 1;</code>
             */
            public Builder addLinkIds(int index, context.ContextOuterClass.LinkId value) {
                if (linkIdsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureLinkIdsIsMutable();
                    linkIds_.add(index, value);
                    onChanged();
                } else {
                    linkIdsBuilder_.addMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.LinkId link_ids = 1;</code>
             */
            public Builder addLinkIds(context.ContextOuterClass.LinkId.Builder builderForValue) {
                if (linkIdsBuilder_ == null) {
                    ensureLinkIdsIsMutable();
                    linkIds_.add(builderForValue.build());
                    onChanged();
                } else {
                    linkIdsBuilder_.addMessage(builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.LinkId link_ids = 1;</code>
             */
            public Builder addLinkIds(int index, context.ContextOuterClass.LinkId.Builder builderForValue) {
                if (linkIdsBuilder_ == null) {
                    ensureLinkIdsIsMutable();
                    linkIds_.add(index, builderForValue.build());
                    onChanged();
                } else {
                    linkIdsBuilder_.addMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.LinkId link_ids = 1;</code>
             */
            public Builder addAllLinkIds(java.lang.Iterable<? extends context.ContextOuterClass.LinkId> values) {
                if (linkIdsBuilder_ == null) {
                    ensureLinkIdsIsMutable();
                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, linkIds_);
                    onChanged();
                } else {
                    linkIdsBuilder_.addAllMessages(values);
                }
                return this;
            }

            /**
             * <code>repeated .context.LinkId link_ids = 1;</code>
             */
            public Builder clearLinkIds() {
                if (linkIdsBuilder_ == null) {
                    linkIds_ = java.util.Collections.emptyList();
                    bitField0_ = (bitField0_ & ~0x00000001);
                    onChanged();
                } else {
                    linkIdsBuilder_.clear();
                }
                return this;
            }

            /**
             * <code>repeated .context.LinkId link_ids = 1;</code>
             */
            public Builder removeLinkIds(int index) {
                if (linkIdsBuilder_ == null) {
                    ensureLinkIdsIsMutable();
                    linkIds_.remove(index);
                    onChanged();
                } else {
                    linkIdsBuilder_.remove(index);
                }
                return this;
            }

            /**
             * <code>repeated .context.LinkId link_ids = 1;</code>
             */
            public context.ContextOuterClass.LinkId.Builder getLinkIdsBuilder(int index) {
                return getLinkIdsFieldBuilder().getBuilder(index);
            }

            /**
             * <code>repeated .context.LinkId link_ids = 1;</code>
             */
            public context.ContextOuterClass.LinkIdOrBuilder getLinkIdsOrBuilder(int index) {
                if (linkIdsBuilder_ == null) {
                    return linkIds_.get(index);
                } else {
                    return linkIdsBuilder_.getMessageOrBuilder(index);
                }
            }

            /**
             * <code>repeated .context.LinkId link_ids = 1;</code>
             */
            public java.util.List<? extends context.ContextOuterClass.LinkIdOrBuilder> getLinkIdsOrBuilderList() {
                if (linkIdsBuilder_ != null) {
                    return linkIdsBuilder_.getMessageOrBuilderList();
                } else {
                    return java.util.Collections.unmodifiableList(linkIds_);
                }
            }

            /**
             * <code>repeated .context.LinkId link_ids = 1;</code>
             */
            public context.ContextOuterClass.LinkId.Builder addLinkIdsBuilder() {
                return getLinkIdsFieldBuilder().addBuilder(context.ContextOuterClass.LinkId.getDefaultInstance());
            }

            /**
             * <code>repeated .context.LinkId link_ids = 1;</code>
             */
            public context.ContextOuterClass.LinkId.Builder addLinkIdsBuilder(int index) {
                return getLinkIdsFieldBuilder().addBuilder(index, context.ContextOuterClass.LinkId.getDefaultInstance());
            }

            /**
             * <code>repeated .context.LinkId link_ids = 1;</code>
             */
            public java.util.List<context.ContextOuterClass.LinkId.Builder> getLinkIdsBuilderList() {
                return getLinkIdsFieldBuilder().getBuilderList();
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder> getLinkIdsFieldBuilder() {
                if (linkIdsBuilder_ == null) {
                    linkIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder>(linkIds_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
                    linkIds_ = null;
                }
                return linkIdsBuilder_;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.LinkIdList)
        }

        // @@protoc_insertion_point(class_scope:context.LinkIdList)
        private static final context.ContextOuterClass.LinkIdList DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.LinkIdList();
        }

        public static context.ContextOuterClass.LinkIdList getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<LinkIdList> PARSER = new com.google.protobuf.AbstractParser<LinkIdList>() {

            @java.lang.Override
            public LinkIdList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<LinkIdList> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<LinkIdList> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.LinkIdList getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface LinkListOrBuilder extends // @@protoc_insertion_point(interface_extends:context.LinkList)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>repeated .context.Link links = 1;</code>
         */
        java.util.List<context.ContextOuterClass.Link> getLinksList();

        /**
         * <code>repeated .context.Link links = 1;</code>
         */
        context.ContextOuterClass.Link getLinks(int index);

        /**
         * <code>repeated .context.Link links = 1;</code>
         */
        int getLinksCount();

        /**
         * <code>repeated .context.Link links = 1;</code>
         */
        java.util.List<? extends context.ContextOuterClass.LinkOrBuilder> getLinksOrBuilderList();

        /**
         * <code>repeated .context.Link links = 1;</code>
         */
        context.ContextOuterClass.LinkOrBuilder getLinksOrBuilder(int index);
    }

    /**
     * Protobuf type {@code context.LinkList}
     */
    public static final class LinkList extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.LinkList)
    LinkListOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use LinkList.newBuilder() to construct.
        private LinkList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private LinkList() {
            links_ = java.util.Collections.emptyList();
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new LinkList();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_LinkList_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_LinkList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.LinkList.class, context.ContextOuterClass.LinkList.Builder.class);
        }

        public static final int LINKS_FIELD_NUMBER = 1;

        @SuppressWarnings("serial")
        private java.util.List<context.ContextOuterClass.Link> links_;

        /**
         * <code>repeated .context.Link links = 1;</code>
         */
        @java.lang.Override
        public java.util.List<context.ContextOuterClass.Link> getLinksList() {
            return links_;
        }

        /**
         * <code>repeated .context.Link links = 1;</code>
         */
        @java.lang.Override
        public java.util.List<? extends context.ContextOuterClass.LinkOrBuilder> getLinksOrBuilderList() {
            return links_;
        }

        /**
         * <code>repeated .context.Link links = 1;</code>
         */
        @java.lang.Override
        public int getLinksCount() {
            return links_.size();
        }

        /**
         * <code>repeated .context.Link links = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.Link getLinks(int index) {
            return links_.get(index);
        }

        /**
         * <code>repeated .context.Link links = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.LinkOrBuilder getLinksOrBuilder(int index) {
            return links_.get(index);
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            for (int i = 0; i < links_.size(); i++) {
                output.writeMessage(1, links_.get(i));
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            for (int i = 0; i < links_.size(); i++) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, links_.get(i));
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.LinkList)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.LinkList other = (context.ContextOuterClass.LinkList) obj;
            if (!getLinksList().equals(other.getLinksList()))
                return false;
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            if (getLinksCount() > 0) {
                hash = (37 * hash) + LINKS_FIELD_NUMBER;
                hash = (53 * hash) + getLinksList().hashCode();
            }
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.LinkList parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.LinkList parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.LinkList parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.LinkList parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.LinkList parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.LinkList parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.LinkList parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.LinkList parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.LinkList parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.LinkList parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.LinkList parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.LinkList parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.LinkList prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code context.LinkList}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.LinkList)
        context.ContextOuterClass.LinkListOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_LinkList_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_LinkList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.LinkList.class, context.ContextOuterClass.LinkList.Builder.class);
            }

            // Construct using context.ContextOuterClass.LinkList.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                if (linksBuilder_ == null) {
                    links_ = java.util.Collections.emptyList();
                } else {
                    links_ = null;
                    linksBuilder_.clear();
                }
                bitField0_ = (bitField0_ & ~0x00000001);
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_LinkList_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.LinkList getDefaultInstanceForType() {
                return context.ContextOuterClass.LinkList.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.LinkList build() {
                context.ContextOuterClass.LinkList result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.LinkList buildPartial() {
                context.ContextOuterClass.LinkList result = new context.ContextOuterClass.LinkList(this);
                buildPartialRepeatedFields(result);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartialRepeatedFields(context.ContextOuterClass.LinkList result) {
                if (linksBuilder_ == null) {
                    if (((bitField0_ & 0x00000001) != 0)) {
                        links_ = java.util.Collections.unmodifiableList(links_);
                        bitField0_ = (bitField0_ & ~0x00000001);
                    }
                    result.links_ = links_;
                } else {
                    result.links_ = linksBuilder_.build();
                }
            }

            private void buildPartial0(context.ContextOuterClass.LinkList result) {
                int from_bitField0_ = bitField0_;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.LinkList) {
                    return mergeFrom((context.ContextOuterClass.LinkList) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.LinkList other) {
                if (other == context.ContextOuterClass.LinkList.getDefaultInstance())
                    return this;
                if (linksBuilder_ == null) {
                    if (!other.links_.isEmpty()) {
                        if (links_.isEmpty()) {
                            links_ = other.links_;
                            bitField0_ = (bitField0_ & ~0x00000001);
                        } else {
                            ensureLinksIsMutable();
                            links_.addAll(other.links_);
                        }
                        onChanged();
                    }
                } else {
                    if (!other.links_.isEmpty()) {
                        if (linksBuilder_.isEmpty()) {
                            linksBuilder_.dispose();
                            linksBuilder_ = null;
                            links_ = other.links_;
                            bitField0_ = (bitField0_ & ~0x00000001);
                            linksBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getLinksFieldBuilder() : null;
                        } else {
                            linksBuilder_.addAllMessages(other.links_);
                        }
                    }
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 10:
                                {
                                    context.ContextOuterClass.Link m = input.readMessage(context.ContextOuterClass.Link.parser(), extensionRegistry);
                                    if (linksBuilder_ == null) {
                                        ensureLinksIsMutable();
                                        links_.add(m);
                                    } else {
                                        linksBuilder_.addMessage(m);
                                    }
                                    break;
                                }
                            // case 10
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private java.util.List<context.ContextOuterClass.Link> links_ = java.util.Collections.emptyList();

            private void ensureLinksIsMutable() {
                if (!((bitField0_ & 0x00000001) != 0)) {
                    links_ = new java.util.ArrayList<context.ContextOuterClass.Link>(links_);
                    bitField0_ |= 0x00000001;
                }
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Link, context.ContextOuterClass.Link.Builder, context.ContextOuterClass.LinkOrBuilder> linksBuilder_;

            /**
             * <code>repeated .context.Link links = 1;</code>
             */
            public java.util.List<context.ContextOuterClass.Link> getLinksList() {
                if (linksBuilder_ == null) {
                    return java.util.Collections.unmodifiableList(links_);
                } else {
                    return linksBuilder_.getMessageList();
                }
            }

            /**
             * <code>repeated .context.Link links = 1;</code>
             */
            public int getLinksCount() {
                if (linksBuilder_ == null) {
                    return links_.size();
                } else {
                    return linksBuilder_.getCount();
                }
            }

            /**
             * <code>repeated .context.Link links = 1;</code>
             */
            public context.ContextOuterClass.Link getLinks(int index) {
                if (linksBuilder_ == null) {
                    return links_.get(index);
                } else {
                    return linksBuilder_.getMessage(index);
                }
            }

            /**
             * <code>repeated .context.Link links = 1;</code>
             */
            public Builder setLinks(int index, context.ContextOuterClass.Link value) {
                if (linksBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureLinksIsMutable();
                    links_.set(index, value);
                    onChanged();
                } else {
                    linksBuilder_.setMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.Link links = 1;</code>
             */
            public Builder setLinks(int index, context.ContextOuterClass.Link.Builder builderForValue) {
                if (linksBuilder_ == null) {
                    ensureLinksIsMutable();
                    links_.set(index, builderForValue.build());
                    onChanged();
                } else {
                    linksBuilder_.setMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.Link links = 1;</code>
             */
            public Builder addLinks(context.ContextOuterClass.Link value) {
                if (linksBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureLinksIsMutable();
                    links_.add(value);
                    onChanged();
                } else {
                    linksBuilder_.addMessage(value);
                }
                return this;
            }

            /**
             * <code>repeated .context.Link links = 1;</code>
             */
            public Builder addLinks(int index, context.ContextOuterClass.Link value) {
                if (linksBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureLinksIsMutable();
                    links_.add(index, value);
                    onChanged();
                } else {
                    linksBuilder_.addMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.Link links = 1;</code>
             */
            public Builder addLinks(context.ContextOuterClass.Link.Builder builderForValue) {
                if (linksBuilder_ == null) {
                    ensureLinksIsMutable();
                    links_.add(builderForValue.build());
                    onChanged();
                } else {
                    linksBuilder_.addMessage(builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.Link links = 1;</code>
             */
            public Builder addLinks(int index, context.ContextOuterClass.Link.Builder builderForValue) {
                if (linksBuilder_ == null) {
                    ensureLinksIsMutable();
                    links_.add(index, builderForValue.build());
                    onChanged();
                } else {
                    linksBuilder_.addMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.Link links = 1;</code>
             */
            public Builder addAllLinks(java.lang.Iterable<? extends context.ContextOuterClass.Link> values) {
                if (linksBuilder_ == null) {
                    ensureLinksIsMutable();
                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, links_);
                    onChanged();
                } else {
                    linksBuilder_.addAllMessages(values);
                }
                return this;
            }

            /**
             * <code>repeated .context.Link links = 1;</code>
             */
            public Builder clearLinks() {
                if (linksBuilder_ == null) {
                    links_ = java.util.Collections.emptyList();
                    bitField0_ = (bitField0_ & ~0x00000001);
                    onChanged();
                } else {
                    linksBuilder_.clear();
                }
                return this;
            }

            /**
             * <code>repeated .context.Link links = 1;</code>
             */
            public Builder removeLinks(int index) {
                if (linksBuilder_ == null) {
                    ensureLinksIsMutable();
                    links_.remove(index);
                    onChanged();
                } else {
                    linksBuilder_.remove(index);
                }
                return this;
            }

            /**
             * <code>repeated .context.Link links = 1;</code>
             */
            public context.ContextOuterClass.Link.Builder getLinksBuilder(int index) {
                return getLinksFieldBuilder().getBuilder(index);
            }

            /**
             * <code>repeated .context.Link links = 1;</code>
             */
            public context.ContextOuterClass.LinkOrBuilder getLinksOrBuilder(int index) {
                if (linksBuilder_ == null) {
                    return links_.get(index);
                } else {
                    return linksBuilder_.getMessageOrBuilder(index);
                }
            }

            /**
             * <code>repeated .context.Link links = 1;</code>
             */
            public java.util.List<? extends context.ContextOuterClass.LinkOrBuilder> getLinksOrBuilderList() {
                if (linksBuilder_ != null) {
                    return linksBuilder_.getMessageOrBuilderList();
                } else {
                    return java.util.Collections.unmodifiableList(links_);
                }
            }

            /**
             * <code>repeated .context.Link links = 1;</code>
             */
            public context.ContextOuterClass.Link.Builder addLinksBuilder() {
                return getLinksFieldBuilder().addBuilder(context.ContextOuterClass.Link.getDefaultInstance());
            }

            /**
             * <code>repeated .context.Link links = 1;</code>
             */
            public context.ContextOuterClass.Link.Builder addLinksBuilder(int index) {
                return getLinksFieldBuilder().addBuilder(index, context.ContextOuterClass.Link.getDefaultInstance());
            }

            /**
             * <code>repeated .context.Link links = 1;</code>
             */
            public java.util.List<context.ContextOuterClass.Link.Builder> getLinksBuilderList() {
                return getLinksFieldBuilder().getBuilderList();
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Link, context.ContextOuterClass.Link.Builder, context.ContextOuterClass.LinkOrBuilder> getLinksFieldBuilder() {
                if (linksBuilder_ == null) {
                    linksBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Link, context.ContextOuterClass.Link.Builder, context.ContextOuterClass.LinkOrBuilder>(links_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
                    links_ = null;
                }
                return linksBuilder_;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.LinkList)
        }

        // @@protoc_insertion_point(class_scope:context.LinkList)
        private static final context.ContextOuterClass.LinkList DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.LinkList();
        }

        public static context.ContextOuterClass.LinkList getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<LinkList> PARSER = new com.google.protobuf.AbstractParser<LinkList>() {

            @java.lang.Override
            public LinkList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<LinkList> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<LinkList> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.LinkList getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface LinkEventOrBuilder extends // @@protoc_insertion_point(interface_extends:context.LinkEvent)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>.context.Event event = 1;</code>
         * @return Whether the event field is set.
         */
        boolean hasEvent();

        /**
         * <code>.context.Event event = 1;</code>
         * @return The event.
         */
        context.ContextOuterClass.Event getEvent();

        /**
         * <code>.context.Event event = 1;</code>
         */
        context.ContextOuterClass.EventOrBuilder getEventOrBuilder();

        /**
         * <code>.context.LinkId link_id = 2;</code>
         * @return Whether the linkId field is set.
         */
        boolean hasLinkId();

        /**
         * <code>.context.LinkId link_id = 2;</code>
         * @return The linkId.
         */
        context.ContextOuterClass.LinkId getLinkId();

        /**
         * <code>.context.LinkId link_id = 2;</code>
         */
        context.ContextOuterClass.LinkIdOrBuilder getLinkIdOrBuilder();
    }

    /**
     * Protobuf type {@code context.LinkEvent}
     */
    public static final class LinkEvent extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.LinkEvent)
    LinkEventOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use LinkEvent.newBuilder() to construct.
        private LinkEvent(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private LinkEvent() {
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new LinkEvent();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_LinkEvent_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_LinkEvent_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.LinkEvent.class, context.ContextOuterClass.LinkEvent.Builder.class);
        }

        public static final int EVENT_FIELD_NUMBER = 1;

        private context.ContextOuterClass.Event event_;

        /**
         * <code>.context.Event event = 1;</code>
         * @return Whether the event field is set.
         */
        @java.lang.Override
        public boolean hasEvent() {
            return event_ != null;
        }

        /**
         * <code>.context.Event event = 1;</code>
         * @return The event.
         */
        @java.lang.Override
        public context.ContextOuterClass.Event getEvent() {
            return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
        }

        /**
         * <code>.context.Event event = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
            return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
        }

        public static final int LINK_ID_FIELD_NUMBER = 2;

        private context.ContextOuterClass.LinkId linkId_;

        /**
         * <code>.context.LinkId link_id = 2;</code>
         * @return Whether the linkId field is set.
         */
        @java.lang.Override
        public boolean hasLinkId() {
            return linkId_ != null;
        }

        /**
         * <code>.context.LinkId link_id = 2;</code>
         * @return The linkId.
         */
        @java.lang.Override
        public context.ContextOuterClass.LinkId getLinkId() {
            return linkId_ == null ? context.ContextOuterClass.LinkId.getDefaultInstance() : linkId_;
        }

        /**
         * <code>.context.LinkId link_id = 2;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.LinkIdOrBuilder getLinkIdOrBuilder() {
            return linkId_ == null ? context.ContextOuterClass.LinkId.getDefaultInstance() : linkId_;
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            if (event_ != null) {
                output.writeMessage(1, getEvent());
            }
            if (linkId_ != null) {
                output.writeMessage(2, getLinkId());
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            if (event_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getEvent());
            }
            if (linkId_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getLinkId());
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.LinkEvent)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.LinkEvent other = (context.ContextOuterClass.LinkEvent) obj;
            if (hasEvent() != other.hasEvent())
                return false;
            if (hasEvent()) {
                if (!getEvent().equals(other.getEvent()))
                    return false;
            }
            if (hasLinkId() != other.hasLinkId())
                return false;
            if (hasLinkId()) {
                if (!getLinkId().equals(other.getLinkId()))
                    return false;
            }
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            if (hasEvent()) {
                hash = (37 * hash) + EVENT_FIELD_NUMBER;
                hash = (53 * hash) + getEvent().hashCode();
            }
            if (hasLinkId()) {
                hash = (37 * hash) + LINK_ID_FIELD_NUMBER;
                hash = (53 * hash) + getLinkId().hashCode();
            }
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.LinkEvent parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.LinkEvent parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.LinkEvent parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.LinkEvent parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.LinkEvent parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.LinkEvent parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.LinkEvent parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.LinkEvent parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.LinkEvent parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.LinkEvent parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.LinkEvent parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.LinkEvent parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.LinkEvent prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code context.LinkEvent}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.LinkEvent)
        context.ContextOuterClass.LinkEventOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_LinkEvent_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_LinkEvent_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.LinkEvent.class, context.ContextOuterClass.LinkEvent.Builder.class);
            }

            // Construct using context.ContextOuterClass.LinkEvent.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                event_ = null;
                if (eventBuilder_ != null) {
                    eventBuilder_.dispose();
                    eventBuilder_ = null;
                }
                linkId_ = null;
                if (linkIdBuilder_ != null) {
                    linkIdBuilder_.dispose();
                    linkIdBuilder_ = null;
                }
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_LinkEvent_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.LinkEvent getDefaultInstanceForType() {
                return context.ContextOuterClass.LinkEvent.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.LinkEvent build() {
                context.ContextOuterClass.LinkEvent result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.LinkEvent buildPartial() {
                context.ContextOuterClass.LinkEvent result = new context.ContextOuterClass.LinkEvent(this);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartial0(context.ContextOuterClass.LinkEvent result) {
                int from_bitField0_ = bitField0_;
                if (((from_bitField0_ & 0x00000001) != 0)) {
                    result.event_ = eventBuilder_ == null ? event_ : eventBuilder_.build();
                }
                if (((from_bitField0_ & 0x00000002) != 0)) {
                    result.linkId_ = linkIdBuilder_ == null ? linkId_ : linkIdBuilder_.build();
                }
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.LinkEvent) {
                    return mergeFrom((context.ContextOuterClass.LinkEvent) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.LinkEvent other) {
                if (other == context.ContextOuterClass.LinkEvent.getDefaultInstance())
                    return this;
                if (other.hasEvent()) {
                    mergeEvent(other.getEvent());
                }
                if (other.hasLinkId()) {
                    mergeLinkId(other.getLinkId());
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 10:
                                {
                                    input.readMessage(getEventFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000001;
                                    break;
                                }
                            // case 10
                            case 18:
                                {
                                    input.readMessage(getLinkIdFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000002;
                                    break;
                                }
                            // case 18
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private context.ContextOuterClass.Event event_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> eventBuilder_;

            /**
             * <code>.context.Event event = 1;</code>
             * @return Whether the event field is set.
             */
            public boolean hasEvent() {
                return ((bitField0_ & 0x00000001) != 0);
            }

            /**
             * <code>.context.Event event = 1;</code>
             * @return The event.
             */
            public context.ContextOuterClass.Event getEvent() {
                if (eventBuilder_ == null) {
                    return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
                } else {
                    return eventBuilder_.getMessage();
                }
            }

            /**
             * <code>.context.Event event = 1;</code>
             */
            public Builder setEvent(context.ContextOuterClass.Event value) {
                if (eventBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    event_ = value;
                } else {
                    eventBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.Event event = 1;</code>
             */
            public Builder setEvent(context.ContextOuterClass.Event.Builder builderForValue) {
                if (eventBuilder_ == null) {
                    event_ = builderForValue.build();
                } else {
                    eventBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.Event event = 1;</code>
             */
            public Builder mergeEvent(context.ContextOuterClass.Event value) {
                if (eventBuilder_ == null) {
                    if (((bitField0_ & 0x00000001) != 0) && event_ != null && event_ != context.ContextOuterClass.Event.getDefaultInstance()) {
                        getEventBuilder().mergeFrom(value);
                    } else {
                        event_ = value;
                    }
                } else {
                    eventBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.Event event = 1;</code>
             */
            public Builder clearEvent() {
                bitField0_ = (bitField0_ & ~0x00000001);
                event_ = null;
                if (eventBuilder_ != null) {
                    eventBuilder_.dispose();
                    eventBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.Event event = 1;</code>
             */
            public context.ContextOuterClass.Event.Builder getEventBuilder() {
                bitField0_ |= 0x00000001;
                onChanged();
                return getEventFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.Event event = 1;</code>
             */
            public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
                if (eventBuilder_ != null) {
                    return eventBuilder_.getMessageOrBuilder();
                } else {
                    return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
                }
            }

            /**
             * <code>.context.Event event = 1;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> getEventFieldBuilder() {
                if (eventBuilder_ == null) {
                    eventBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder>(getEvent(), getParentForChildren(), isClean());
                    event_ = null;
                }
                return eventBuilder_;
            }

            private context.ContextOuterClass.LinkId linkId_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder> linkIdBuilder_;

            /**
             * <code>.context.LinkId link_id = 2;</code>
             * @return Whether the linkId field is set.
             */
            public boolean hasLinkId() {
                return ((bitField0_ & 0x00000002) != 0);
            }

            /**
             * <code>.context.LinkId link_id = 2;</code>
             * @return The linkId.
             */
            public context.ContextOuterClass.LinkId getLinkId() {
                if (linkIdBuilder_ == null) {
                    return linkId_ == null ? context.ContextOuterClass.LinkId.getDefaultInstance() : linkId_;
                } else {
                    return linkIdBuilder_.getMessage();
                }
            }

            /**
             * <code>.context.LinkId link_id = 2;</code>
             */
            public Builder setLinkId(context.ContextOuterClass.LinkId value) {
                if (linkIdBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    linkId_ = value;
                } else {
                    linkIdBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>.context.LinkId link_id = 2;</code>
             */
            public Builder setLinkId(context.ContextOuterClass.LinkId.Builder builderForValue) {
                if (linkIdBuilder_ == null) {
                    linkId_ = builderForValue.build();
                } else {
                    linkIdBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>.context.LinkId link_id = 2;</code>
             */
            public Builder mergeLinkId(context.ContextOuterClass.LinkId value) {
                if (linkIdBuilder_ == null) {
                    if (((bitField0_ & 0x00000002) != 0) && linkId_ != null && linkId_ != context.ContextOuterClass.LinkId.getDefaultInstance()) {
                        getLinkIdBuilder().mergeFrom(value);
                    } else {
                        linkId_ = value;
                    }
                } else {
                    linkIdBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>.context.LinkId link_id = 2;</code>
             */
            public Builder clearLinkId() {
                bitField0_ = (bitField0_ & ~0x00000002);
                linkId_ = null;
                if (linkIdBuilder_ != null) {
                    linkIdBuilder_.dispose();
                    linkIdBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.LinkId link_id = 2;</code>
             */
            public context.ContextOuterClass.LinkId.Builder getLinkIdBuilder() {
                bitField0_ |= 0x00000002;
                onChanged();
                return getLinkIdFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.LinkId link_id = 2;</code>
             */
            public context.ContextOuterClass.LinkIdOrBuilder getLinkIdOrBuilder() {
                if (linkIdBuilder_ != null) {
                    return linkIdBuilder_.getMessageOrBuilder();
                } else {
                    return linkId_ == null ? context.ContextOuterClass.LinkId.getDefaultInstance() : linkId_;
                }
            }

            /**
             * <code>.context.LinkId link_id = 2;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder> getLinkIdFieldBuilder() {
                if (linkIdBuilder_ == null) {
                    linkIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder>(getLinkId(), getParentForChildren(), isClean());
                    linkId_ = null;
                }
                return linkIdBuilder_;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.LinkEvent)
        }

        // @@protoc_insertion_point(class_scope:context.LinkEvent)
        private static final context.ContextOuterClass.LinkEvent DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.LinkEvent();
        }

        public static context.ContextOuterClass.LinkEvent getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<LinkEvent> PARSER = new com.google.protobuf.AbstractParser<LinkEvent>() {

            @java.lang.Override
            public LinkEvent parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<LinkEvent> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<LinkEvent> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.LinkEvent getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface ServiceIdOrBuilder extends // @@protoc_insertion_point(interface_extends:context.ServiceId)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>.context.ContextId context_id = 1;</code>
         * @return Whether the contextId field is set.
         */
        boolean hasContextId();

        /**
         * <code>.context.ContextId context_id = 1;</code>
         * @return The contextId.
         */
        context.ContextOuterClass.ContextId getContextId();

        /**
         * <code>.context.ContextId context_id = 1;</code>
         */
        context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder();

        /**
         * <code>.context.Uuid service_uuid = 2;</code>
         * @return Whether the serviceUuid field is set.
         */
        boolean hasServiceUuid();

        /**
         * <code>.context.Uuid service_uuid = 2;</code>
         * @return The serviceUuid.
         */
        context.ContextOuterClass.Uuid getServiceUuid();

        /**
         * <code>.context.Uuid service_uuid = 2;</code>
         */
        context.ContextOuterClass.UuidOrBuilder getServiceUuidOrBuilder();
    }

    /**
     * <pre>
     * ----- Service -------------------------------------------------------------------------------------------------------
     * </pre>
     *
     * Protobuf type {@code context.ServiceId}
     */
    public static final class ServiceId extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.ServiceId)
    ServiceIdOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use ServiceId.newBuilder() to construct.
        private ServiceId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private ServiceId() {
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new ServiceId();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_ServiceId_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_ServiceId_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ServiceId.class, context.ContextOuterClass.ServiceId.Builder.class);
        }

        public static final int CONTEXT_ID_FIELD_NUMBER = 1;

        private context.ContextOuterClass.ContextId contextId_;

        /**
         * <code>.context.ContextId context_id = 1;</code>
         * @return Whether the contextId field is set.
         */
        @java.lang.Override
        public boolean hasContextId() {
            return contextId_ != null;
        }

        /**
         * <code>.context.ContextId context_id = 1;</code>
         * @return The contextId.
         */
        @java.lang.Override
        public context.ContextOuterClass.ContextId getContextId() {
            return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
        }

        /**
         * <code>.context.ContextId context_id = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
            return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
        }

        public static final int SERVICE_UUID_FIELD_NUMBER = 2;

        private context.ContextOuterClass.Uuid serviceUuid_;

        /**
         * <code>.context.Uuid service_uuid = 2;</code>
         * @return Whether the serviceUuid field is set.
         */
        @java.lang.Override
        public boolean hasServiceUuid() {
            return serviceUuid_ != null;
        }

        /**
         * <code>.context.Uuid service_uuid = 2;</code>
         * @return The serviceUuid.
         */
        @java.lang.Override
        public context.ContextOuterClass.Uuid getServiceUuid() {
            return serviceUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : serviceUuid_;
        }

        /**
         * <code>.context.Uuid service_uuid = 2;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.UuidOrBuilder getServiceUuidOrBuilder() {
            return serviceUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : serviceUuid_;
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            if (contextId_ != null) {
                output.writeMessage(1, getContextId());
            }
            if (serviceUuid_ != null) {
                output.writeMessage(2, getServiceUuid());
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            if (contextId_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getContextId());
            }
            if (serviceUuid_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getServiceUuid());
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.ServiceId)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.ServiceId other = (context.ContextOuterClass.ServiceId) obj;
            if (hasContextId() != other.hasContextId())
                return false;
            if (hasContextId()) {
                if (!getContextId().equals(other.getContextId()))
                    return false;
            }
            if (hasServiceUuid() != other.hasServiceUuid())
                return false;
            if (hasServiceUuid()) {
                if (!getServiceUuid().equals(other.getServiceUuid()))
                    return false;
            }
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            if (hasContextId()) {
                hash = (37 * hash) + CONTEXT_ID_FIELD_NUMBER;
                hash = (53 * hash) + getContextId().hashCode();
            }
            if (hasServiceUuid()) {
                hash = (37 * hash) + SERVICE_UUID_FIELD_NUMBER;
                hash = (53 * hash) + getServiceUuid().hashCode();
            }
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.ServiceId parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.ServiceId parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.ServiceId parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.ServiceId parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.ServiceId parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.ServiceId parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.ServiceId parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.ServiceId parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.ServiceId parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.ServiceId parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.ServiceId parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.ServiceId parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.ServiceId prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * <pre>
         * ----- Service -------------------------------------------------------------------------------------------------------
         * </pre>
         *
         * Protobuf type {@code context.ServiceId}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.ServiceId)
        context.ContextOuterClass.ServiceIdOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_ServiceId_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_ServiceId_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ServiceId.class, context.ContextOuterClass.ServiceId.Builder.class);
            }

            // Construct using context.ContextOuterClass.ServiceId.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                contextId_ = null;
                if (contextIdBuilder_ != null) {
                    contextIdBuilder_.dispose();
                    contextIdBuilder_ = null;
                }
                serviceUuid_ = null;
                if (serviceUuidBuilder_ != null) {
                    serviceUuidBuilder_.dispose();
                    serviceUuidBuilder_ = null;
                }
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_ServiceId_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.ServiceId getDefaultInstanceForType() {
                return context.ContextOuterClass.ServiceId.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.ServiceId build() {
                context.ContextOuterClass.ServiceId result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.ServiceId buildPartial() {
                context.ContextOuterClass.ServiceId result = new context.ContextOuterClass.ServiceId(this);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartial0(context.ContextOuterClass.ServiceId result) {
                int from_bitField0_ = bitField0_;
                if (((from_bitField0_ & 0x00000001) != 0)) {
                    result.contextId_ = contextIdBuilder_ == null ? contextId_ : contextIdBuilder_.build();
                }
                if (((from_bitField0_ & 0x00000002) != 0)) {
                    result.serviceUuid_ = serviceUuidBuilder_ == null ? serviceUuid_ : serviceUuidBuilder_.build();
                }
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.ServiceId) {
                    return mergeFrom((context.ContextOuterClass.ServiceId) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.ServiceId other) {
                if (other == context.ContextOuterClass.ServiceId.getDefaultInstance())
                    return this;
                if (other.hasContextId()) {
                    mergeContextId(other.getContextId());
                }
                if (other.hasServiceUuid()) {
                    mergeServiceUuid(other.getServiceUuid());
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 10:
                                {
                                    input.readMessage(getContextIdFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000001;
                                    break;
                                }
                            // case 10
                            case 18:
                                {
                                    input.readMessage(getServiceUuidFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000002;
                                    break;
                                }
                            // case 18
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private context.ContextOuterClass.ContextId contextId_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> contextIdBuilder_;

            /**
             * <code>.context.ContextId context_id = 1;</code>
             * @return Whether the contextId field is set.
             */
            public boolean hasContextId() {
                return ((bitField0_ & 0x00000001) != 0);
            }

            /**
             * <code>.context.ContextId context_id = 1;</code>
             * @return The contextId.
             */
            public context.ContextOuterClass.ContextId getContextId() {
                if (contextIdBuilder_ == null) {
                    return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
                } else {
                    return contextIdBuilder_.getMessage();
                }
            }

            /**
             * <code>.context.ContextId context_id = 1;</code>
             */
            public Builder setContextId(context.ContextOuterClass.ContextId value) {
                if (contextIdBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    contextId_ = value;
                } else {
                    contextIdBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.ContextId context_id = 1;</code>
             */
            public Builder setContextId(context.ContextOuterClass.ContextId.Builder builderForValue) {
                if (contextIdBuilder_ == null) {
                    contextId_ = builderForValue.build();
                } else {
                    contextIdBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.ContextId context_id = 1;</code>
             */
            public Builder mergeContextId(context.ContextOuterClass.ContextId value) {
                if (contextIdBuilder_ == null) {
                    if (((bitField0_ & 0x00000001) != 0) && contextId_ != null && contextId_ != context.ContextOuterClass.ContextId.getDefaultInstance()) {
                        getContextIdBuilder().mergeFrom(value);
                    } else {
                        contextId_ = value;
                    }
                } else {
                    contextIdBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.ContextId context_id = 1;</code>
             */
            public Builder clearContextId() {
                bitField0_ = (bitField0_ & ~0x00000001);
                contextId_ = null;
                if (contextIdBuilder_ != null) {
                    contextIdBuilder_.dispose();
                    contextIdBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.ContextId context_id = 1;</code>
             */
            public context.ContextOuterClass.ContextId.Builder getContextIdBuilder() {
                bitField0_ |= 0x00000001;
                onChanged();
                return getContextIdFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.ContextId context_id = 1;</code>
             */
            public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
                if (contextIdBuilder_ != null) {
                    return contextIdBuilder_.getMessageOrBuilder();
                } else {
                    return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
                }
            }

            /**
             * <code>.context.ContextId context_id = 1;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> getContextIdFieldBuilder() {
                if (contextIdBuilder_ == null) {
                    contextIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder>(getContextId(), getParentForChildren(), isClean());
                    contextId_ = null;
                }
                return contextIdBuilder_;
            }

            private context.ContextOuterClass.Uuid serviceUuid_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> serviceUuidBuilder_;

            /**
             * <code>.context.Uuid service_uuid = 2;</code>
             * @return Whether the serviceUuid field is set.
             */
            public boolean hasServiceUuid() {
                return ((bitField0_ & 0x00000002) != 0);
            }

            /**
             * <code>.context.Uuid service_uuid = 2;</code>
             * @return The serviceUuid.
             */
            public context.ContextOuterClass.Uuid getServiceUuid() {
                if (serviceUuidBuilder_ == null) {
                    return serviceUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : serviceUuid_;
                } else {
                    return serviceUuidBuilder_.getMessage();
                }
            }

            /**
             * <code>.context.Uuid service_uuid = 2;</code>
             */
            public Builder setServiceUuid(context.ContextOuterClass.Uuid value) {
                if (serviceUuidBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    serviceUuid_ = value;
                } else {
                    serviceUuidBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>.context.Uuid service_uuid = 2;</code>
             */
            public Builder setServiceUuid(context.ContextOuterClass.Uuid.Builder builderForValue) {
                if (serviceUuidBuilder_ == null) {
                    serviceUuid_ = builderForValue.build();
                } else {
                    serviceUuidBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>.context.Uuid service_uuid = 2;</code>
             */
            public Builder mergeServiceUuid(context.ContextOuterClass.Uuid value) {
                if (serviceUuidBuilder_ == null) {
                    if (((bitField0_ & 0x00000002) != 0) && serviceUuid_ != null && serviceUuid_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
                        getServiceUuidBuilder().mergeFrom(value);
                    } else {
                        serviceUuid_ = value;
                    }
                } else {
                    serviceUuidBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>.context.Uuid service_uuid = 2;</code>
             */
            public Builder clearServiceUuid() {
                bitField0_ = (bitField0_ & ~0x00000002);
                serviceUuid_ = null;
                if (serviceUuidBuilder_ != null) {
                    serviceUuidBuilder_.dispose();
                    serviceUuidBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.Uuid service_uuid = 2;</code>
             */
            public context.ContextOuterClass.Uuid.Builder getServiceUuidBuilder() {
                bitField0_ |= 0x00000002;
                onChanged();
                return getServiceUuidFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.Uuid service_uuid = 2;</code>
             */
            public context.ContextOuterClass.UuidOrBuilder getServiceUuidOrBuilder() {
                if (serviceUuidBuilder_ != null) {
                    return serviceUuidBuilder_.getMessageOrBuilder();
                } else {
                    return serviceUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : serviceUuid_;
                }
            }

            /**
             * <code>.context.Uuid service_uuid = 2;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> getServiceUuidFieldBuilder() {
                if (serviceUuidBuilder_ == null) {
                    serviceUuidBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder>(getServiceUuid(), getParentForChildren(), isClean());
                    serviceUuid_ = null;
                }
                return serviceUuidBuilder_;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.ServiceId)
        }

        // @@protoc_insertion_point(class_scope:context.ServiceId)
        private static final context.ContextOuterClass.ServiceId DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.ServiceId();
        }

        public static context.ContextOuterClass.ServiceId getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<ServiceId> PARSER = new com.google.protobuf.AbstractParser<ServiceId>() {

            @java.lang.Override
            public ServiceId parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<ServiceId> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<ServiceId> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.ServiceId getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface ServiceOrBuilder extends // @@protoc_insertion_point(interface_extends:context.Service)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>.context.ServiceId service_id = 1;</code>
         * @return Whether the serviceId field is set.
         */
        boolean hasServiceId();

        /**
         * <code>.context.ServiceId service_id = 1;</code>
         * @return The serviceId.
         */
        context.ContextOuterClass.ServiceId getServiceId();

        /**
         * <code>.context.ServiceId service_id = 1;</code>
         */
        context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder();

        /**
         * <code>string name = 2;</code>
         * @return The name.
         */
        java.lang.String getName();

        /**
         * <code>string name = 2;</code>
         * @return The bytes for name.
         */
        com.google.protobuf.ByteString getNameBytes();

        /**
         * <code>.context.ServiceTypeEnum service_type = 3;</code>
         * @return The enum numeric value on the wire for serviceType.
         */
        int getServiceTypeValue();

        /**
         * <code>.context.ServiceTypeEnum service_type = 3;</code>
         * @return The serviceType.
         */
        context.ContextOuterClass.ServiceTypeEnum getServiceType();

        /**
         * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
         */
        java.util.List<context.ContextOuterClass.EndPointId> getServiceEndpointIdsList();

        /**
         * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
         */
        context.ContextOuterClass.EndPointId getServiceEndpointIds(int index);

        /**
         * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
         */
        int getServiceEndpointIdsCount();

        /**
         * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
         */
        java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> getServiceEndpointIdsOrBuilderList();

        /**
         * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
         */
        context.ContextOuterClass.EndPointIdOrBuilder getServiceEndpointIdsOrBuilder(int index);

        /**
         * <code>repeated .context.Constraint service_constraints = 5;</code>
         */
        java.util.List<context.ContextOuterClass.Constraint> getServiceConstraintsList();

        /**
         * <code>repeated .context.Constraint service_constraints = 5;</code>
         */
        context.ContextOuterClass.Constraint getServiceConstraints(int index);

        /**
         * <code>repeated .context.Constraint service_constraints = 5;</code>
         */
        int getServiceConstraintsCount();

        /**
         * <code>repeated .context.Constraint service_constraints = 5;</code>
         */
        java.util.List<? extends context.ContextOuterClass.ConstraintOrBuilder> getServiceConstraintsOrBuilderList();

        /**
         * <code>repeated .context.Constraint service_constraints = 5;</code>
         */
        context.ContextOuterClass.ConstraintOrBuilder getServiceConstraintsOrBuilder(int index);

        /**
         * <code>.context.ServiceStatus service_status = 6;</code>
         * @return Whether the serviceStatus field is set.
         */
        boolean hasServiceStatus();

        /**
         * <code>.context.ServiceStatus service_status = 6;</code>
         * @return The serviceStatus.
         */
        context.ContextOuterClass.ServiceStatus getServiceStatus();

        /**
         * <code>.context.ServiceStatus service_status = 6;</code>
         */
        context.ContextOuterClass.ServiceStatusOrBuilder getServiceStatusOrBuilder();

        /**
         * <code>.context.ServiceConfig service_config = 7;</code>
         * @return Whether the serviceConfig field is set.
         */
        boolean hasServiceConfig();

        /**
         * <code>.context.ServiceConfig service_config = 7;</code>
         * @return The serviceConfig.
         */
        context.ContextOuterClass.ServiceConfig getServiceConfig();

        /**
         * <code>.context.ServiceConfig service_config = 7;</code>
         */
        context.ContextOuterClass.ServiceConfigOrBuilder getServiceConfigOrBuilder();

        /**
         * <code>.context.Timestamp timestamp = 8;</code>
         * @return Whether the timestamp field is set.
         */
        boolean hasTimestamp();

        /**
         * <code>.context.Timestamp timestamp = 8;</code>
         * @return The timestamp.
         */
        context.ContextOuterClass.Timestamp getTimestamp();

        /**
         * <code>.context.Timestamp timestamp = 8;</code>
         */
        context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder();
    }

    /**
     * Protobuf type {@code context.Service}
     */
    public static final class Service extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.Service)
    ServiceOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use Service.newBuilder() to construct.
        private Service(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private Service() {
            name_ = "";
            serviceType_ = 0;
            serviceEndpointIds_ = java.util.Collections.emptyList();
            serviceConstraints_ = java.util.Collections.emptyList();
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new Service();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_Service_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_Service_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Service.class, context.ContextOuterClass.Service.Builder.class);
        }

        public static final int SERVICE_ID_FIELD_NUMBER = 1;

        private context.ContextOuterClass.ServiceId serviceId_;

        /**
         * <code>.context.ServiceId service_id = 1;</code>
         * @return Whether the serviceId field is set.
         */
        @java.lang.Override
        public boolean hasServiceId() {
            return serviceId_ != null;
        }

        /**
         * <code>.context.ServiceId service_id = 1;</code>
         * @return The serviceId.
         */
        @java.lang.Override
        public context.ContextOuterClass.ServiceId getServiceId() {
            return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
        }

        /**
         * <code>.context.ServiceId service_id = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder() {
            return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
        }

        public static final int NAME_FIELD_NUMBER = 2;

        @SuppressWarnings("serial")
        private volatile java.lang.Object name_ = "";

        /**
         * <code>string name = 2;</code>
         * @return The name.
         */
        @java.lang.Override
        public java.lang.String getName() {
            java.lang.Object ref = name_;
            if (ref instanceof java.lang.String) {
                return (java.lang.String) ref;
            } else {
                com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                java.lang.String s = bs.toStringUtf8();
                name_ = s;
                return s;
            }
        }

        /**
         * <code>string name = 2;</code>
         * @return The bytes for name.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString getNameBytes() {
            java.lang.Object ref = name_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                name_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int SERVICE_TYPE_FIELD_NUMBER = 3;

        private int serviceType_ = 0;

        /**
         * <code>.context.ServiceTypeEnum service_type = 3;</code>
         * @return The enum numeric value on the wire for serviceType.
         */
        @java.lang.Override
        public int getServiceTypeValue() {
            return serviceType_;
        }

        /**
         * <code>.context.ServiceTypeEnum service_type = 3;</code>
         * @return The serviceType.
         */
        @java.lang.Override
        public context.ContextOuterClass.ServiceTypeEnum getServiceType() {
            context.ContextOuterClass.ServiceTypeEnum result = context.ContextOuterClass.ServiceTypeEnum.forNumber(serviceType_);
            return result == null ? context.ContextOuterClass.ServiceTypeEnum.UNRECOGNIZED : result;
        }

        public static final int SERVICE_ENDPOINT_IDS_FIELD_NUMBER = 4;

        @SuppressWarnings("serial")
        private java.util.List<context.ContextOuterClass.EndPointId> serviceEndpointIds_;

        /**
         * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
         */
        @java.lang.Override
        public java.util.List<context.ContextOuterClass.EndPointId> getServiceEndpointIdsList() {
            return serviceEndpointIds_;
        }

        /**
         * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
         */
        @java.lang.Override
        public java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> getServiceEndpointIdsOrBuilderList() {
            return serviceEndpointIds_;
        }

        /**
         * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
         */
        @java.lang.Override
        public int getServiceEndpointIdsCount() {
            return serviceEndpointIds_.size();
        }

        /**
         * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.EndPointId getServiceEndpointIds(int index) {
            return serviceEndpointIds_.get(index);
        }

        /**
         * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.EndPointIdOrBuilder getServiceEndpointIdsOrBuilder(int index) {
            return serviceEndpointIds_.get(index);
        }

        public static final int SERVICE_CONSTRAINTS_FIELD_NUMBER = 5;

        @SuppressWarnings("serial")
        private java.util.List<context.ContextOuterClass.Constraint> serviceConstraints_;

        /**
         * <code>repeated .context.Constraint service_constraints = 5;</code>
         */
        @java.lang.Override
        public java.util.List<context.ContextOuterClass.Constraint> getServiceConstraintsList() {
            return serviceConstraints_;
        }

        /**
         * <code>repeated .context.Constraint service_constraints = 5;</code>
         */
        @java.lang.Override
        public java.util.List<? extends context.ContextOuterClass.ConstraintOrBuilder> getServiceConstraintsOrBuilderList() {
            return serviceConstraints_;
        }

        /**
         * <code>repeated .context.Constraint service_constraints = 5;</code>
         */
        @java.lang.Override
        public int getServiceConstraintsCount() {
            return serviceConstraints_.size();
        }

        /**
         * <code>repeated .context.Constraint service_constraints = 5;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.Constraint getServiceConstraints(int index) {
            return serviceConstraints_.get(index);
        }

        /**
         * <code>repeated .context.Constraint service_constraints = 5;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.ConstraintOrBuilder getServiceConstraintsOrBuilder(int index) {
            return serviceConstraints_.get(index);
        }

        public static final int SERVICE_STATUS_FIELD_NUMBER = 6;

        private context.ContextOuterClass.ServiceStatus serviceStatus_;

        /**
         * <code>.context.ServiceStatus service_status = 6;</code>
         * @return Whether the serviceStatus field is set.
         */
        @java.lang.Override
        public boolean hasServiceStatus() {
            return serviceStatus_ != null;
        }

        /**
         * <code>.context.ServiceStatus service_status = 6;</code>
         * @return The serviceStatus.
         */
        @java.lang.Override
        public context.ContextOuterClass.ServiceStatus getServiceStatus() {
            return serviceStatus_ == null ? context.ContextOuterClass.ServiceStatus.getDefaultInstance() : serviceStatus_;
        }

        /**
         * <code>.context.ServiceStatus service_status = 6;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.ServiceStatusOrBuilder getServiceStatusOrBuilder() {
            return serviceStatus_ == null ? context.ContextOuterClass.ServiceStatus.getDefaultInstance() : serviceStatus_;
        }

        public static final int SERVICE_CONFIG_FIELD_NUMBER = 7;

        private context.ContextOuterClass.ServiceConfig serviceConfig_;

        /**
         * <code>.context.ServiceConfig service_config = 7;</code>
         * @return Whether the serviceConfig field is set.
         */
        @java.lang.Override
        public boolean hasServiceConfig() {
            return serviceConfig_ != null;
        }

        /**
         * <code>.context.ServiceConfig service_config = 7;</code>
         * @return The serviceConfig.
         */
        @java.lang.Override
        public context.ContextOuterClass.ServiceConfig getServiceConfig() {
            return serviceConfig_ == null ? context.ContextOuterClass.ServiceConfig.getDefaultInstance() : serviceConfig_;
        }

        /**
         * <code>.context.ServiceConfig service_config = 7;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.ServiceConfigOrBuilder getServiceConfigOrBuilder() {
            return serviceConfig_ == null ? context.ContextOuterClass.ServiceConfig.getDefaultInstance() : serviceConfig_;
        }

        public static final int TIMESTAMP_FIELD_NUMBER = 8;

        private context.ContextOuterClass.Timestamp timestamp_;

        /**
         * <code>.context.Timestamp timestamp = 8;</code>
         * @return Whether the timestamp field is set.
         */
        @java.lang.Override
        public boolean hasTimestamp() {
            return timestamp_ != null;
        }

        /**
         * <code>.context.Timestamp timestamp = 8;</code>
         * @return The timestamp.
         */
        @java.lang.Override
        public context.ContextOuterClass.Timestamp getTimestamp() {
            return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
        }

        /**
         * <code>.context.Timestamp timestamp = 8;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder() {
            return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            if (serviceId_ != null) {
                output.writeMessage(1, getServiceId());
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
            }
            if (serviceType_ != context.ContextOuterClass.ServiceTypeEnum.SERVICETYPE_UNKNOWN.getNumber()) {
                output.writeEnum(3, serviceType_);
            }
            for (int i = 0; i < serviceEndpointIds_.size(); i++) {
                output.writeMessage(4, serviceEndpointIds_.get(i));
            }
            for (int i = 0; i < serviceConstraints_.size(); i++) {
                output.writeMessage(5, serviceConstraints_.get(i));
            }
            if (serviceStatus_ != null) {
                output.writeMessage(6, getServiceStatus());
            }
            if (serviceConfig_ != null) {
                output.writeMessage(7, getServiceConfig());
            }
            if (timestamp_ != null) {
                output.writeMessage(8, getTimestamp());
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            if (serviceId_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getServiceId());
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
            }
            if (serviceType_ != context.ContextOuterClass.ServiceTypeEnum.SERVICETYPE_UNKNOWN.getNumber()) {
                size += com.google.protobuf.CodedOutputStream.computeEnumSize(3, serviceType_);
            }
            for (int i = 0; i < serviceEndpointIds_.size(); i++) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, serviceEndpointIds_.get(i));
            }
            for (int i = 0; i < serviceConstraints_.size(); i++) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(5, serviceConstraints_.get(i));
            }
            if (serviceStatus_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(6, getServiceStatus());
            }
            if (serviceConfig_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(7, getServiceConfig());
            }
            if (timestamp_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(8, getTimestamp());
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.Service)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.Service other = (context.ContextOuterClass.Service) obj;
            if (hasServiceId() != other.hasServiceId())
                return false;
            if (hasServiceId()) {
                if (!getServiceId().equals(other.getServiceId()))
                    return false;
            }
            if (!getName().equals(other.getName()))
                return false;
            if (serviceType_ != other.serviceType_)
                return false;
            if (!getServiceEndpointIdsList().equals(other.getServiceEndpointIdsList()))
                return false;
            if (!getServiceConstraintsList().equals(other.getServiceConstraintsList()))
                return false;
            if (hasServiceStatus() != other.hasServiceStatus())
                return false;
            if (hasServiceStatus()) {
                if (!getServiceStatus().equals(other.getServiceStatus()))
                    return false;
            }
            if (hasServiceConfig() != other.hasServiceConfig())
                return false;
            if (hasServiceConfig()) {
                if (!getServiceConfig().equals(other.getServiceConfig()))
                    return false;
            }
            if (hasTimestamp() != other.hasTimestamp())
                return false;
            if (hasTimestamp()) {
                if (!getTimestamp().equals(other.getTimestamp()))
                    return false;
            }
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            if (hasServiceId()) {
                hash = (37 * hash) + SERVICE_ID_FIELD_NUMBER;
                hash = (53 * hash) + getServiceId().hashCode();
            }
            hash = (37 * hash) + NAME_FIELD_NUMBER;
            hash = (53 * hash) + getName().hashCode();
            hash = (37 * hash) + SERVICE_TYPE_FIELD_NUMBER;
            hash = (53 * hash) + serviceType_;
            if (getServiceEndpointIdsCount() > 0) {
                hash = (37 * hash) + SERVICE_ENDPOINT_IDS_FIELD_NUMBER;
                hash = (53 * hash) + getServiceEndpointIdsList().hashCode();
            }
            if (getServiceConstraintsCount() > 0) {
                hash = (37 * hash) + SERVICE_CONSTRAINTS_FIELD_NUMBER;
                hash = (53 * hash) + getServiceConstraintsList().hashCode();
            }
            if (hasServiceStatus()) {
                hash = (37 * hash) + SERVICE_STATUS_FIELD_NUMBER;
                hash = (53 * hash) + getServiceStatus().hashCode();
            }
            if (hasServiceConfig()) {
                hash = (37 * hash) + SERVICE_CONFIG_FIELD_NUMBER;
                hash = (53 * hash) + getServiceConfig().hashCode();
            }
            if (hasTimestamp()) {
                hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER;
                hash = (53 * hash) + getTimestamp().hashCode();
            }
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.Service parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.Service parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.Service parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.Service parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.Service parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.Service parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.Service parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.Service parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.Service parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.Service parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.Service parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.Service parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.Service prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code context.Service}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.Service)
        context.ContextOuterClass.ServiceOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_Service_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_Service_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Service.class, context.ContextOuterClass.Service.Builder.class);
            }

            // Construct using context.ContextOuterClass.Service.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                serviceId_ = null;
                if (serviceIdBuilder_ != null) {
                    serviceIdBuilder_.dispose();
                    serviceIdBuilder_ = null;
                }
                name_ = "";
                serviceType_ = 0;
                if (serviceEndpointIdsBuilder_ == null) {
                    serviceEndpointIds_ = java.util.Collections.emptyList();
                } else {
                    serviceEndpointIds_ = null;
                    serviceEndpointIdsBuilder_.clear();
                }
                bitField0_ = (bitField0_ & ~0x00000008);
                if (serviceConstraintsBuilder_ == null) {
                    serviceConstraints_ = java.util.Collections.emptyList();
                } else {
                    serviceConstraints_ = null;
                    serviceConstraintsBuilder_.clear();
                }
                bitField0_ = (bitField0_ & ~0x00000010);
                serviceStatus_ = null;
                if (serviceStatusBuilder_ != null) {
                    serviceStatusBuilder_.dispose();
                    serviceStatusBuilder_ = null;
                }
                serviceConfig_ = null;
                if (serviceConfigBuilder_ != null) {
                    serviceConfigBuilder_.dispose();
                    serviceConfigBuilder_ = null;
                }
                timestamp_ = null;
                if (timestampBuilder_ != null) {
                    timestampBuilder_.dispose();
                    timestampBuilder_ = null;
                }
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_Service_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.Service getDefaultInstanceForType() {
                return context.ContextOuterClass.Service.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.Service build() {
                context.ContextOuterClass.Service result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.Service buildPartial() {
                context.ContextOuterClass.Service result = new context.ContextOuterClass.Service(this);
                buildPartialRepeatedFields(result);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartialRepeatedFields(context.ContextOuterClass.Service result) {
                if (serviceEndpointIdsBuilder_ == null) {
                    if (((bitField0_ & 0x00000008) != 0)) {
                        serviceEndpointIds_ = java.util.Collections.unmodifiableList(serviceEndpointIds_);
                        bitField0_ = (bitField0_ & ~0x00000008);
                    }
                    result.serviceEndpointIds_ = serviceEndpointIds_;
                } else {
                    result.serviceEndpointIds_ = serviceEndpointIdsBuilder_.build();
                }
                if (serviceConstraintsBuilder_ == null) {
                    if (((bitField0_ & 0x00000010) != 0)) {
                        serviceConstraints_ = java.util.Collections.unmodifiableList(serviceConstraints_);
                        bitField0_ = (bitField0_ & ~0x00000010);
                    }
                    result.serviceConstraints_ = serviceConstraints_;
                } else {
                    result.serviceConstraints_ = serviceConstraintsBuilder_.build();
                }
            }

            private void buildPartial0(context.ContextOuterClass.Service result) {
                int from_bitField0_ = bitField0_;
                if (((from_bitField0_ & 0x00000001) != 0)) {
                    result.serviceId_ = serviceIdBuilder_ == null ? serviceId_ : serviceIdBuilder_.build();
                }
                if (((from_bitField0_ & 0x00000002) != 0)) {
                    result.name_ = name_;
                }
                if (((from_bitField0_ & 0x00000004) != 0)) {
                    result.serviceType_ = serviceType_;
                }
                if (((from_bitField0_ & 0x00000020) != 0)) {
                    result.serviceStatus_ = serviceStatusBuilder_ == null ? serviceStatus_ : serviceStatusBuilder_.build();
                }
                if (((from_bitField0_ & 0x00000040) != 0)) {
                    result.serviceConfig_ = serviceConfigBuilder_ == null ? serviceConfig_ : serviceConfigBuilder_.build();
                }
                if (((from_bitField0_ & 0x00000080) != 0)) {
                    result.timestamp_ = timestampBuilder_ == null ? timestamp_ : timestampBuilder_.build();
                }
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.Service) {
                    return mergeFrom((context.ContextOuterClass.Service) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.Service other) {
                if (other == context.ContextOuterClass.Service.getDefaultInstance())
                    return this;
                if (other.hasServiceId()) {
                    mergeServiceId(other.getServiceId());
                }
                if (!other.getName().isEmpty()) {
                    name_ = other.name_;
                    bitField0_ |= 0x00000002;
                    onChanged();
                }
                if (other.serviceType_ != 0) {
                    setServiceTypeValue(other.getServiceTypeValue());
                }
                if (serviceEndpointIdsBuilder_ == null) {
                    if (!other.serviceEndpointIds_.isEmpty()) {
                        if (serviceEndpointIds_.isEmpty()) {
                            serviceEndpointIds_ = other.serviceEndpointIds_;
                            bitField0_ = (bitField0_ & ~0x00000008);
                        } else {
                            ensureServiceEndpointIdsIsMutable();
                            serviceEndpointIds_.addAll(other.serviceEndpointIds_);
                        }
                        onChanged();
                    }
                } else {
                    if (!other.serviceEndpointIds_.isEmpty()) {
                        if (serviceEndpointIdsBuilder_.isEmpty()) {
                            serviceEndpointIdsBuilder_.dispose();
                            serviceEndpointIdsBuilder_ = null;
                            serviceEndpointIds_ = other.serviceEndpointIds_;
                            bitField0_ = (bitField0_ & ~0x00000008);
                            serviceEndpointIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getServiceEndpointIdsFieldBuilder() : null;
                        } else {
                            serviceEndpointIdsBuilder_.addAllMessages(other.serviceEndpointIds_);
                        }
                    }
                }
                if (serviceConstraintsBuilder_ == null) {
                    if (!other.serviceConstraints_.isEmpty()) {
                        if (serviceConstraints_.isEmpty()) {
                            serviceConstraints_ = other.serviceConstraints_;
                            bitField0_ = (bitField0_ & ~0x00000010);
                        } else {
                            ensureServiceConstraintsIsMutable();
                            serviceConstraints_.addAll(other.serviceConstraints_);
                        }
                        onChanged();
                    }
                } else {
                    if (!other.serviceConstraints_.isEmpty()) {
                        if (serviceConstraintsBuilder_.isEmpty()) {
                            serviceConstraintsBuilder_.dispose();
                            serviceConstraintsBuilder_ = null;
                            serviceConstraints_ = other.serviceConstraints_;
                            bitField0_ = (bitField0_ & ~0x00000010);
                            serviceConstraintsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getServiceConstraintsFieldBuilder() : null;
                        } else {
                            serviceConstraintsBuilder_.addAllMessages(other.serviceConstraints_);
                        }
                    }
                }
                if (other.hasServiceStatus()) {
                    mergeServiceStatus(other.getServiceStatus());
                }
                if (other.hasServiceConfig()) {
                    mergeServiceConfig(other.getServiceConfig());
                }
                if (other.hasTimestamp()) {
                    mergeTimestamp(other.getTimestamp());
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 10:
                                {
                                    input.readMessage(getServiceIdFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000001;
                                    break;
                                }
                            // case 10
                            case 18:
                                {
                                    name_ = input.readStringRequireUtf8();
                                    bitField0_ |= 0x00000002;
                                    break;
                                }
                            // case 18
                            case 24:
                                {
                                    serviceType_ = input.readEnum();
                                    bitField0_ |= 0x00000004;
                                    break;
                                }
                            // case 24
                            case 34:
                                {
                                    context.ContextOuterClass.EndPointId m = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry);
                                    if (serviceEndpointIdsBuilder_ == null) {
                                        ensureServiceEndpointIdsIsMutable();
                                        serviceEndpointIds_.add(m);
                                    } else {
                                        serviceEndpointIdsBuilder_.addMessage(m);
                                    }
                                    break;
                                }
                            // case 34
                            case 42:
                                {
                                    context.ContextOuterClass.Constraint m = input.readMessage(context.ContextOuterClass.Constraint.parser(), extensionRegistry);
                                    if (serviceConstraintsBuilder_ == null) {
                                        ensureServiceConstraintsIsMutable();
                                        serviceConstraints_.add(m);
                                    } else {
                                        serviceConstraintsBuilder_.addMessage(m);
                                    }
                                    break;
                                }
                            // case 42
                            case 50:
                                {
                                    input.readMessage(getServiceStatusFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000020;
                                    break;
                                }
                            // case 50
                            case 58:
                                {
                                    input.readMessage(getServiceConfigFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000040;
                                    break;
                                }
                            // case 58
                            case 66:
                                {
                                    input.readMessage(getTimestampFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000080;
                                    break;
                                }
                            // case 66
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private context.ContextOuterClass.ServiceId serviceId_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> serviceIdBuilder_;

            /**
             * <code>.context.ServiceId service_id = 1;</code>
             * @return Whether the serviceId field is set.
             */
            public boolean hasServiceId() {
                return ((bitField0_ & 0x00000001) != 0);
            }

            /**
             * <code>.context.ServiceId service_id = 1;</code>
             * @return The serviceId.
             */
            public context.ContextOuterClass.ServiceId getServiceId() {
                if (serviceIdBuilder_ == null) {
                    return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
                } else {
                    return serviceIdBuilder_.getMessage();
                }
            }

            /**
             * <code>.context.ServiceId service_id = 1;</code>
             */
            public Builder setServiceId(context.ContextOuterClass.ServiceId value) {
                if (serviceIdBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    serviceId_ = value;
                } else {
                    serviceIdBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.ServiceId service_id = 1;</code>
             */
            public Builder setServiceId(context.ContextOuterClass.ServiceId.Builder builderForValue) {
                if (serviceIdBuilder_ == null) {
                    serviceId_ = builderForValue.build();
                } else {
                    serviceIdBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.ServiceId service_id = 1;</code>
             */
            public Builder mergeServiceId(context.ContextOuterClass.ServiceId value) {
                if (serviceIdBuilder_ == null) {
                    if (((bitField0_ & 0x00000001) != 0) && serviceId_ != null && serviceId_ != context.ContextOuterClass.ServiceId.getDefaultInstance()) {
                        getServiceIdBuilder().mergeFrom(value);
                    } else {
                        serviceId_ = value;
                    }
                } else {
                    serviceIdBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.ServiceId service_id = 1;</code>
             */
            public Builder clearServiceId() {
                bitField0_ = (bitField0_ & ~0x00000001);
                serviceId_ = null;
                if (serviceIdBuilder_ != null) {
                    serviceIdBuilder_.dispose();
                    serviceIdBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.ServiceId service_id = 1;</code>
             */
            public context.ContextOuterClass.ServiceId.Builder getServiceIdBuilder() {
                bitField0_ |= 0x00000001;
                onChanged();
                return getServiceIdFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.ServiceId service_id = 1;</code>
             */
            public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder() {
                if (serviceIdBuilder_ != null) {
                    return serviceIdBuilder_.getMessageOrBuilder();
                } else {
                    return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
                }
            }

            /**
             * <code>.context.ServiceId service_id = 1;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> getServiceIdFieldBuilder() {
                if (serviceIdBuilder_ == null) {
                    serviceIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder>(getServiceId(), getParentForChildren(), isClean());
                    serviceId_ = null;
                }
                return serviceIdBuilder_;
            }

            private java.lang.Object name_ = "";

            /**
             * <code>string name = 2;</code>
             * @return The name.
             */
            public java.lang.String getName() {
                java.lang.Object ref = name_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    name_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }

            /**
             * <code>string name = 2;</code>
             * @return The bytes for name.
             */
            public com.google.protobuf.ByteString getNameBytes() {
                java.lang.Object ref = name_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                    name_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }

            /**
             * <code>string name = 2;</code>
             * @param value The name to set.
             * @return This builder for chaining.
             */
            public Builder setName(java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                name_ = value;
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>string name = 2;</code>
             * @return This builder for chaining.
             */
            public Builder clearName() {
                name_ = getDefaultInstance().getName();
                bitField0_ = (bitField0_ & ~0x00000002);
                onChanged();
                return this;
            }

            /**
             * <code>string name = 2;</code>
             * @param value The bytes for name to set.
             * @return This builder for chaining.
             */
            public Builder setNameBytes(com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);
                name_ = value;
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            private int serviceType_ = 0;

            /**
             * <code>.context.ServiceTypeEnum service_type = 3;</code>
             * @return The enum numeric value on the wire for serviceType.
             */
            @java.lang.Override
            public int getServiceTypeValue() {
                return serviceType_;
            }

            /**
             * <code>.context.ServiceTypeEnum service_type = 3;</code>
             * @param value The enum numeric value on the wire for serviceType to set.
             * @return This builder for chaining.
             */
            public Builder setServiceTypeValue(int value) {
                serviceType_ = value;
                bitField0_ |= 0x00000004;
                onChanged();
                return this;
            }

            /**
             * <code>.context.ServiceTypeEnum service_type = 3;</code>
             * @return The serviceType.
             */
            @java.lang.Override
            public context.ContextOuterClass.ServiceTypeEnum getServiceType() {
                context.ContextOuterClass.ServiceTypeEnum result = context.ContextOuterClass.ServiceTypeEnum.forNumber(serviceType_);
                return result == null ? context.ContextOuterClass.ServiceTypeEnum.UNRECOGNIZED : result;
            }

            /**
             * <code>.context.ServiceTypeEnum service_type = 3;</code>
             * @param value The serviceType to set.
             * @return This builder for chaining.
             */
            public Builder setServiceType(context.ContextOuterClass.ServiceTypeEnum value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                bitField0_ |= 0x00000004;
                serviceType_ = value.getNumber();
                onChanged();
                return this;
            }

            /**
             * <code>.context.ServiceTypeEnum service_type = 3;</code>
             * @return This builder for chaining.
             */
            public Builder clearServiceType() {
                bitField0_ = (bitField0_ & ~0x00000004);
                serviceType_ = 0;
                onChanged();
                return this;
            }

            private java.util.List<context.ContextOuterClass.EndPointId> serviceEndpointIds_ = java.util.Collections.emptyList();

            private void ensureServiceEndpointIdsIsMutable() {
                if (!((bitField0_ & 0x00000008) != 0)) {
                    serviceEndpointIds_ = new java.util.ArrayList<context.ContextOuterClass.EndPointId>(serviceEndpointIds_);
                    bitField0_ |= 0x00000008;
                }
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> serviceEndpointIdsBuilder_;

            /**
             * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
             */
            public java.util.List<context.ContextOuterClass.EndPointId> getServiceEndpointIdsList() {
                if (serviceEndpointIdsBuilder_ == null) {
                    return java.util.Collections.unmodifiableList(serviceEndpointIds_);
                } else {
                    return serviceEndpointIdsBuilder_.getMessageList();
                }
            }

            /**
             * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
             */
            public int getServiceEndpointIdsCount() {
                if (serviceEndpointIdsBuilder_ == null) {
                    return serviceEndpointIds_.size();
                } else {
                    return serviceEndpointIdsBuilder_.getCount();
                }
            }

            /**
             * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
             */
            public context.ContextOuterClass.EndPointId getServiceEndpointIds(int index) {
                if (serviceEndpointIdsBuilder_ == null) {
                    return serviceEndpointIds_.get(index);
                } else {
                    return serviceEndpointIdsBuilder_.getMessage(index);
                }
            }

            /**
             * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
             */
            public Builder setServiceEndpointIds(int index, context.ContextOuterClass.EndPointId value) {
                if (serviceEndpointIdsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureServiceEndpointIdsIsMutable();
                    serviceEndpointIds_.set(index, value);
                    onChanged();
                } else {
                    serviceEndpointIdsBuilder_.setMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
             */
            public Builder setServiceEndpointIds(int index, context.ContextOuterClass.EndPointId.Builder builderForValue) {
                if (serviceEndpointIdsBuilder_ == null) {
                    ensureServiceEndpointIdsIsMutable();
                    serviceEndpointIds_.set(index, builderForValue.build());
                    onChanged();
                } else {
                    serviceEndpointIdsBuilder_.setMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
             */
            public Builder addServiceEndpointIds(context.ContextOuterClass.EndPointId value) {
                if (serviceEndpointIdsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureServiceEndpointIdsIsMutable();
                    serviceEndpointIds_.add(value);
                    onChanged();
                } else {
                    serviceEndpointIdsBuilder_.addMessage(value);
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
             */
            public Builder addServiceEndpointIds(int index, context.ContextOuterClass.EndPointId value) {
                if (serviceEndpointIdsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureServiceEndpointIdsIsMutable();
                    serviceEndpointIds_.add(index, value);
                    onChanged();
                } else {
                    serviceEndpointIdsBuilder_.addMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
             */
            public Builder addServiceEndpointIds(context.ContextOuterClass.EndPointId.Builder builderForValue) {
                if (serviceEndpointIdsBuilder_ == null) {
                    ensureServiceEndpointIdsIsMutable();
                    serviceEndpointIds_.add(builderForValue.build());
                    onChanged();
                } else {
                    serviceEndpointIdsBuilder_.addMessage(builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
             */
            public Builder addServiceEndpointIds(int index, context.ContextOuterClass.EndPointId.Builder builderForValue) {
                if (serviceEndpointIdsBuilder_ == null) {
                    ensureServiceEndpointIdsIsMutable();
                    serviceEndpointIds_.add(index, builderForValue.build());
                    onChanged();
                } else {
                    serviceEndpointIdsBuilder_.addMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
             */
            public Builder addAllServiceEndpointIds(java.lang.Iterable<? extends context.ContextOuterClass.EndPointId> values) {
                if (serviceEndpointIdsBuilder_ == null) {
                    ensureServiceEndpointIdsIsMutable();
                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, serviceEndpointIds_);
                    onChanged();
                } else {
                    serviceEndpointIdsBuilder_.addAllMessages(values);
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
             */
            public Builder clearServiceEndpointIds() {
                if (serviceEndpointIdsBuilder_ == null) {
                    serviceEndpointIds_ = java.util.Collections.emptyList();
                    bitField0_ = (bitField0_ & ~0x00000008);
                    onChanged();
                } else {
                    serviceEndpointIdsBuilder_.clear();
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
             */
            public Builder removeServiceEndpointIds(int index) {
                if (serviceEndpointIdsBuilder_ == null) {
                    ensureServiceEndpointIdsIsMutable();
                    serviceEndpointIds_.remove(index);
                    onChanged();
                } else {
                    serviceEndpointIdsBuilder_.remove(index);
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
             */
            public context.ContextOuterClass.EndPointId.Builder getServiceEndpointIdsBuilder(int index) {
                return getServiceEndpointIdsFieldBuilder().getBuilder(index);
            }

            /**
             * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
             */
            public context.ContextOuterClass.EndPointIdOrBuilder getServiceEndpointIdsOrBuilder(int index) {
                if (serviceEndpointIdsBuilder_ == null) {
                    return serviceEndpointIds_.get(index);
                } else {
                    return serviceEndpointIdsBuilder_.getMessageOrBuilder(index);
                }
            }

            /**
             * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
             */
            public java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> getServiceEndpointIdsOrBuilderList() {
                if (serviceEndpointIdsBuilder_ != null) {
                    return serviceEndpointIdsBuilder_.getMessageOrBuilderList();
                } else {
                    return java.util.Collections.unmodifiableList(serviceEndpointIds_);
                }
            }

            /**
             * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
             */
            public context.ContextOuterClass.EndPointId.Builder addServiceEndpointIdsBuilder() {
                return getServiceEndpointIdsFieldBuilder().addBuilder(context.ContextOuterClass.EndPointId.getDefaultInstance());
            }

            /**
             * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
             */
            public context.ContextOuterClass.EndPointId.Builder addServiceEndpointIdsBuilder(int index) {
                return getServiceEndpointIdsFieldBuilder().addBuilder(index, context.ContextOuterClass.EndPointId.getDefaultInstance());
            }

            /**
             * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
             */
            public java.util.List<context.ContextOuterClass.EndPointId.Builder> getServiceEndpointIdsBuilderList() {
                return getServiceEndpointIdsFieldBuilder().getBuilderList();
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> getServiceEndpointIdsFieldBuilder() {
                if (serviceEndpointIdsBuilder_ == null) {
                    serviceEndpointIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder>(serviceEndpointIds_, ((bitField0_ & 0x00000008) != 0), getParentForChildren(), isClean());
                    serviceEndpointIds_ = null;
                }
                return serviceEndpointIdsBuilder_;
            }

            private java.util.List<context.ContextOuterClass.Constraint> serviceConstraints_ = java.util.Collections.emptyList();

            private void ensureServiceConstraintsIsMutable() {
                if (!((bitField0_ & 0x00000010) != 0)) {
                    serviceConstraints_ = new java.util.ArrayList<context.ContextOuterClass.Constraint>(serviceConstraints_);
                    bitField0_ |= 0x00000010;
                }
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Constraint, context.ContextOuterClass.Constraint.Builder, context.ContextOuterClass.ConstraintOrBuilder> serviceConstraintsBuilder_;

            /**
             * <code>repeated .context.Constraint service_constraints = 5;</code>
             */
            public java.util.List<context.ContextOuterClass.Constraint> getServiceConstraintsList() {
                if (serviceConstraintsBuilder_ == null) {
                    return java.util.Collections.unmodifiableList(serviceConstraints_);
                } else {
                    return serviceConstraintsBuilder_.getMessageList();
                }
            }

            /**
             * <code>repeated .context.Constraint service_constraints = 5;</code>
             */
            public int getServiceConstraintsCount() {
                if (serviceConstraintsBuilder_ == null) {
                    return serviceConstraints_.size();
                } else {
                    return serviceConstraintsBuilder_.getCount();
                }
            }

            /**
             * <code>repeated .context.Constraint service_constraints = 5;</code>
             */
            public context.ContextOuterClass.Constraint getServiceConstraints(int index) {
                if (serviceConstraintsBuilder_ == null) {
                    return serviceConstraints_.get(index);
                } else {
                    return serviceConstraintsBuilder_.getMessage(index);
                }
            }

            /**
             * <code>repeated .context.Constraint service_constraints = 5;</code>
             */
            public Builder setServiceConstraints(int index, context.ContextOuterClass.Constraint value) {
                if (serviceConstraintsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureServiceConstraintsIsMutable();
                    serviceConstraints_.set(index, value);
                    onChanged();
                } else {
                    serviceConstraintsBuilder_.setMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.Constraint service_constraints = 5;</code>
             */
            public Builder setServiceConstraints(int index, context.ContextOuterClass.Constraint.Builder builderForValue) {
                if (serviceConstraintsBuilder_ == null) {
                    ensureServiceConstraintsIsMutable();
                    serviceConstraints_.set(index, builderForValue.build());
                    onChanged();
                } else {
                    serviceConstraintsBuilder_.setMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.Constraint service_constraints = 5;</code>
             */
            public Builder addServiceConstraints(context.ContextOuterClass.Constraint value) {
                if (serviceConstraintsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureServiceConstraintsIsMutable();
                    serviceConstraints_.add(value);
                    onChanged();
                } else {
                    serviceConstraintsBuilder_.addMessage(value);
                }
                return this;
            }

            /**
             * <code>repeated .context.Constraint service_constraints = 5;</code>
             */
            public Builder addServiceConstraints(int index, context.ContextOuterClass.Constraint value) {
                if (serviceConstraintsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureServiceConstraintsIsMutable();
                    serviceConstraints_.add(index, value);
                    onChanged();
                } else {
                    serviceConstraintsBuilder_.addMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.Constraint service_constraints = 5;</code>
             */
            public Builder addServiceConstraints(context.ContextOuterClass.Constraint.Builder builderForValue) {
                if (serviceConstraintsBuilder_ == null) {
                    ensureServiceConstraintsIsMutable();
                    serviceConstraints_.add(builderForValue.build());
                    onChanged();
                } else {
                    serviceConstraintsBuilder_.addMessage(builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.Constraint service_constraints = 5;</code>
             */
            public Builder addServiceConstraints(int index, context.ContextOuterClass.Constraint.Builder builderForValue) {
                if (serviceConstraintsBuilder_ == null) {
                    ensureServiceConstraintsIsMutable();
                    serviceConstraints_.add(index, builderForValue.build());
                    onChanged();
                } else {
                    serviceConstraintsBuilder_.addMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.Constraint service_constraints = 5;</code>
             */
            public Builder addAllServiceConstraints(java.lang.Iterable<? extends context.ContextOuterClass.Constraint> values) {
                if (serviceConstraintsBuilder_ == null) {
                    ensureServiceConstraintsIsMutable();
                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, serviceConstraints_);
                    onChanged();
                } else {
                    serviceConstraintsBuilder_.addAllMessages(values);
                }
                return this;
            }

            /**
             * <code>repeated .context.Constraint service_constraints = 5;</code>
             */
            public Builder clearServiceConstraints() {
                if (serviceConstraintsBuilder_ == null) {
                    serviceConstraints_ = java.util.Collections.emptyList();
                    bitField0_ = (bitField0_ & ~0x00000010);
                    onChanged();
                } else {
                    serviceConstraintsBuilder_.clear();
                }
                return this;
            }

            /**
             * <code>repeated .context.Constraint service_constraints = 5;</code>
             */
            public Builder removeServiceConstraints(int index) {
                if (serviceConstraintsBuilder_ == null) {
                    ensureServiceConstraintsIsMutable();
                    serviceConstraints_.remove(index);
                    onChanged();
                } else {
                    serviceConstraintsBuilder_.remove(index);
                }
                return this;
            }

            /**
             * <code>repeated .context.Constraint service_constraints = 5;</code>
             */
            public context.ContextOuterClass.Constraint.Builder getServiceConstraintsBuilder(int index) {
                return getServiceConstraintsFieldBuilder().getBuilder(index);
            }

            /**
             * <code>repeated .context.Constraint service_constraints = 5;</code>
             */
            public context.ContextOuterClass.ConstraintOrBuilder getServiceConstraintsOrBuilder(int index) {
                if (serviceConstraintsBuilder_ == null) {
                    return serviceConstraints_.get(index);
                } else {
                    return serviceConstraintsBuilder_.getMessageOrBuilder(index);
                }
            }

            /**
             * <code>repeated .context.Constraint service_constraints = 5;</code>
             */
            public java.util.List<? extends context.ContextOuterClass.ConstraintOrBuilder> getServiceConstraintsOrBuilderList() {
                if (serviceConstraintsBuilder_ != null) {
                    return serviceConstraintsBuilder_.getMessageOrBuilderList();
                } else {
                    return java.util.Collections.unmodifiableList(serviceConstraints_);
                }
            }

            /**
             * <code>repeated .context.Constraint service_constraints = 5;</code>
             */
            public context.ContextOuterClass.Constraint.Builder addServiceConstraintsBuilder() {
                return getServiceConstraintsFieldBuilder().addBuilder(context.ContextOuterClass.Constraint.getDefaultInstance());
            }

            /**
             * <code>repeated .context.Constraint service_constraints = 5;</code>
             */
            public context.ContextOuterClass.Constraint.Builder addServiceConstraintsBuilder(int index) {
                return getServiceConstraintsFieldBuilder().addBuilder(index, context.ContextOuterClass.Constraint.getDefaultInstance());
            }

            /**
             * <code>repeated .context.Constraint service_constraints = 5;</code>
             */
            public java.util.List<context.ContextOuterClass.Constraint.Builder> getServiceConstraintsBuilderList() {
                return getServiceConstraintsFieldBuilder().getBuilderList();
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Constraint, context.ContextOuterClass.Constraint.Builder, context.ContextOuterClass.ConstraintOrBuilder> getServiceConstraintsFieldBuilder() {
                if (serviceConstraintsBuilder_ == null) {
                    serviceConstraintsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Constraint, context.ContextOuterClass.Constraint.Builder, context.ContextOuterClass.ConstraintOrBuilder>(serviceConstraints_, ((bitField0_ & 0x00000010) != 0), getParentForChildren(), isClean());
                    serviceConstraints_ = null;
                }
                return serviceConstraintsBuilder_;
            }

            private context.ContextOuterClass.ServiceStatus serviceStatus_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ServiceStatus, context.ContextOuterClass.ServiceStatus.Builder, context.ContextOuterClass.ServiceStatusOrBuilder> serviceStatusBuilder_;

            /**
             * <code>.context.ServiceStatus service_status = 6;</code>
             * @return Whether the serviceStatus field is set.
             */
            public boolean hasServiceStatus() {
                return ((bitField0_ & 0x00000020) != 0);
            }

            /**
             * <code>.context.ServiceStatus service_status = 6;</code>
             * @return The serviceStatus.
             */
            public context.ContextOuterClass.ServiceStatus getServiceStatus() {
                if (serviceStatusBuilder_ == null) {
                    return serviceStatus_ == null ? context.ContextOuterClass.ServiceStatus.getDefaultInstance() : serviceStatus_;
                } else {
                    return serviceStatusBuilder_.getMessage();
                }
            }

            /**
             * <code>.context.ServiceStatus service_status = 6;</code>
             */
            public Builder setServiceStatus(context.ContextOuterClass.ServiceStatus value) {
                if (serviceStatusBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    serviceStatus_ = value;
                } else {
                    serviceStatusBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000020;
                onChanged();
                return this;
            }

            /**
             * <code>.context.ServiceStatus service_status = 6;</code>
             */
            public Builder setServiceStatus(context.ContextOuterClass.ServiceStatus.Builder builderForValue) {
                if (serviceStatusBuilder_ == null) {
                    serviceStatus_ = builderForValue.build();
                } else {
                    serviceStatusBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000020;
                onChanged();
                return this;
            }

            /**
             * <code>.context.ServiceStatus service_status = 6;</code>
             */
            public Builder mergeServiceStatus(context.ContextOuterClass.ServiceStatus value) {
                if (serviceStatusBuilder_ == null) {
                    if (((bitField0_ & 0x00000020) != 0) && serviceStatus_ != null && serviceStatus_ != context.ContextOuterClass.ServiceStatus.getDefaultInstance()) {
                        getServiceStatusBuilder().mergeFrom(value);
                    } else {
                        serviceStatus_ = value;
                    }
                } else {
                    serviceStatusBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000020;
                onChanged();
                return this;
            }

            /**
             * <code>.context.ServiceStatus service_status = 6;</code>
             */
            public Builder clearServiceStatus() {
                bitField0_ = (bitField0_ & ~0x00000020);
                serviceStatus_ = null;
                if (serviceStatusBuilder_ != null) {
                    serviceStatusBuilder_.dispose();
                    serviceStatusBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.ServiceStatus service_status = 6;</code>
             */
            public context.ContextOuterClass.ServiceStatus.Builder getServiceStatusBuilder() {
                bitField0_ |= 0x00000020;
                onChanged();
                return getServiceStatusFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.ServiceStatus service_status = 6;</code>
             */
            public context.ContextOuterClass.ServiceStatusOrBuilder getServiceStatusOrBuilder() {
                if (serviceStatusBuilder_ != null) {
                    return serviceStatusBuilder_.getMessageOrBuilder();
                } else {
                    return serviceStatus_ == null ? context.ContextOuterClass.ServiceStatus.getDefaultInstance() : serviceStatus_;
                }
            }

            /**
             * <code>.context.ServiceStatus service_status = 6;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ServiceStatus, context.ContextOuterClass.ServiceStatus.Builder, context.ContextOuterClass.ServiceStatusOrBuilder> getServiceStatusFieldBuilder() {
                if (serviceStatusBuilder_ == null) {
                    serviceStatusBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ServiceStatus, context.ContextOuterClass.ServiceStatus.Builder, context.ContextOuterClass.ServiceStatusOrBuilder>(getServiceStatus(), getParentForChildren(), isClean());
                    serviceStatus_ = null;
                }
                return serviceStatusBuilder_;
            }

            private context.ContextOuterClass.ServiceConfig serviceConfig_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ServiceConfig, context.ContextOuterClass.ServiceConfig.Builder, context.ContextOuterClass.ServiceConfigOrBuilder> serviceConfigBuilder_;

            /**
             * <code>.context.ServiceConfig service_config = 7;</code>
             * @return Whether the serviceConfig field is set.
             */
            public boolean hasServiceConfig() {
                return ((bitField0_ & 0x00000040) != 0);
            }

            /**
             * <code>.context.ServiceConfig service_config = 7;</code>
             * @return The serviceConfig.
             */
            public context.ContextOuterClass.ServiceConfig getServiceConfig() {
                if (serviceConfigBuilder_ == null) {
                    return serviceConfig_ == null ? context.ContextOuterClass.ServiceConfig.getDefaultInstance() : serviceConfig_;
                } else {
                    return serviceConfigBuilder_.getMessage();
                }
            }

            /**
             * <code>.context.ServiceConfig service_config = 7;</code>
             */
            public Builder setServiceConfig(context.ContextOuterClass.ServiceConfig value) {
                if (serviceConfigBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    serviceConfig_ = value;
                } else {
                    serviceConfigBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000040;
                onChanged();
                return this;
            }

            /**
             * <code>.context.ServiceConfig service_config = 7;</code>
             */
            public Builder setServiceConfig(context.ContextOuterClass.ServiceConfig.Builder builderForValue) {
                if (serviceConfigBuilder_ == null) {
                    serviceConfig_ = builderForValue.build();
                } else {
                    serviceConfigBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000040;
                onChanged();
                return this;
            }

            /**
             * <code>.context.ServiceConfig service_config = 7;</code>
             */
            public Builder mergeServiceConfig(context.ContextOuterClass.ServiceConfig value) {
                if (serviceConfigBuilder_ == null) {
                    if (((bitField0_ & 0x00000040) != 0) && serviceConfig_ != null && serviceConfig_ != context.ContextOuterClass.ServiceConfig.getDefaultInstance()) {
                        getServiceConfigBuilder().mergeFrom(value);
                    } else {
                        serviceConfig_ = value;
                    }
                } else {
                    serviceConfigBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000040;
                onChanged();
                return this;
            }

            /**
             * <code>.context.ServiceConfig service_config = 7;</code>
             */
            public Builder clearServiceConfig() {
                bitField0_ = (bitField0_ & ~0x00000040);
                serviceConfig_ = null;
                if (serviceConfigBuilder_ != null) {
                    serviceConfigBuilder_.dispose();
                    serviceConfigBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.ServiceConfig service_config = 7;</code>
             */
            public context.ContextOuterClass.ServiceConfig.Builder getServiceConfigBuilder() {
                bitField0_ |= 0x00000040;
                onChanged();
                return getServiceConfigFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.ServiceConfig service_config = 7;</code>
             */
            public context.ContextOuterClass.ServiceConfigOrBuilder getServiceConfigOrBuilder() {
                if (serviceConfigBuilder_ != null) {
                    return serviceConfigBuilder_.getMessageOrBuilder();
                } else {
                    return serviceConfig_ == null ? context.ContextOuterClass.ServiceConfig.getDefaultInstance() : serviceConfig_;
                }
            }

            /**
             * <code>.context.ServiceConfig service_config = 7;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ServiceConfig, context.ContextOuterClass.ServiceConfig.Builder, context.ContextOuterClass.ServiceConfigOrBuilder> getServiceConfigFieldBuilder() {
                if (serviceConfigBuilder_ == null) {
                    serviceConfigBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ServiceConfig, context.ContextOuterClass.ServiceConfig.Builder, context.ContextOuterClass.ServiceConfigOrBuilder>(getServiceConfig(), getParentForChildren(), isClean());
                    serviceConfig_ = null;
                }
                return serviceConfigBuilder_;
            }

            private context.ContextOuterClass.Timestamp timestamp_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> timestampBuilder_;

            /**
             * <code>.context.Timestamp timestamp = 8;</code>
             * @return Whether the timestamp field is set.
             */
            public boolean hasTimestamp() {
                return ((bitField0_ & 0x00000080) != 0);
            }

            /**
             * <code>.context.Timestamp timestamp = 8;</code>
             * @return The timestamp.
             */
            public context.ContextOuterClass.Timestamp getTimestamp() {
                if (timestampBuilder_ == null) {
                    return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
                } else {
                    return timestampBuilder_.getMessage();
                }
            }

            /**
             * <code>.context.Timestamp timestamp = 8;</code>
             */
            public Builder setTimestamp(context.ContextOuterClass.Timestamp value) {
                if (timestampBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    timestamp_ = value;
                } else {
                    timestampBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000080;
                onChanged();
                return this;
            }

            /**
             * <code>.context.Timestamp timestamp = 8;</code>
             */
            public Builder setTimestamp(context.ContextOuterClass.Timestamp.Builder builderForValue) {
                if (timestampBuilder_ == null) {
                    timestamp_ = builderForValue.build();
                } else {
                    timestampBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000080;
                onChanged();
                return this;
            }

            /**
             * <code>.context.Timestamp timestamp = 8;</code>
             */
            public Builder mergeTimestamp(context.ContextOuterClass.Timestamp value) {
                if (timestampBuilder_ == null) {
                    if (((bitField0_ & 0x00000080) != 0) && timestamp_ != null && timestamp_ != context.ContextOuterClass.Timestamp.getDefaultInstance()) {
                        getTimestampBuilder().mergeFrom(value);
                    } else {
                        timestamp_ = value;
                    }
                } else {
                    timestampBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000080;
                onChanged();
                return this;
            }

            /**
             * <code>.context.Timestamp timestamp = 8;</code>
             */
            public Builder clearTimestamp() {
                bitField0_ = (bitField0_ & ~0x00000080);
                timestamp_ = null;
                if (timestampBuilder_ != null) {
                    timestampBuilder_.dispose();
                    timestampBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.Timestamp timestamp = 8;</code>
             */
            public context.ContextOuterClass.Timestamp.Builder getTimestampBuilder() {
                bitField0_ |= 0x00000080;
                onChanged();
                return getTimestampFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.Timestamp timestamp = 8;</code>
             */
            public context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder() {
                if (timestampBuilder_ != null) {
                    return timestampBuilder_.getMessageOrBuilder();
                } else {
                    return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
                }
            }

            /**
             * <code>.context.Timestamp timestamp = 8;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> getTimestampFieldBuilder() {
                if (timestampBuilder_ == null) {
                    timestampBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder>(getTimestamp(), getParentForChildren(), isClean());
                    timestamp_ = null;
                }
                return timestampBuilder_;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.Service)
        }

        // @@protoc_insertion_point(class_scope:context.Service)
        private static final context.ContextOuterClass.Service DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.Service();
        }

        public static context.ContextOuterClass.Service getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<Service> PARSER = new com.google.protobuf.AbstractParser<Service>() {

            @java.lang.Override
            public Service parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<Service> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<Service> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.Service getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface ServiceStatusOrBuilder extends // @@protoc_insertion_point(interface_extends:context.ServiceStatus)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>.context.ServiceStatusEnum service_status = 1;</code>
         * @return The enum numeric value on the wire for serviceStatus.
         */
        int getServiceStatusValue();

        /**
         * <code>.context.ServiceStatusEnum service_status = 1;</code>
         * @return The serviceStatus.
         */
        context.ContextOuterClass.ServiceStatusEnum getServiceStatus();
    }

    /**
     * Protobuf type {@code context.ServiceStatus}
     */
    public static final class ServiceStatus extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.ServiceStatus)
    ServiceStatusOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use ServiceStatus.newBuilder() to construct.
        private ServiceStatus(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private ServiceStatus() {
            serviceStatus_ = 0;
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new ServiceStatus();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_ServiceStatus_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_ServiceStatus_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ServiceStatus.class, context.ContextOuterClass.ServiceStatus.Builder.class);
        }

        public static final int SERVICE_STATUS_FIELD_NUMBER = 1;

        private int serviceStatus_ = 0;

        /**
         * <code>.context.ServiceStatusEnum service_status = 1;</code>
         * @return The enum numeric value on the wire for serviceStatus.
         */
        @java.lang.Override
        public int getServiceStatusValue() {
            return serviceStatus_;
        }

        /**
         * <code>.context.ServiceStatusEnum service_status = 1;</code>
         * @return The serviceStatus.
         */
        @java.lang.Override
        public context.ContextOuterClass.ServiceStatusEnum getServiceStatus() {
            context.ContextOuterClass.ServiceStatusEnum result = context.ContextOuterClass.ServiceStatusEnum.forNumber(serviceStatus_);
            return result == null ? context.ContextOuterClass.ServiceStatusEnum.UNRECOGNIZED : result;
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            if (serviceStatus_ != context.ContextOuterClass.ServiceStatusEnum.SERVICESTATUS_UNDEFINED.getNumber()) {
                output.writeEnum(1, serviceStatus_);
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            if (serviceStatus_ != context.ContextOuterClass.ServiceStatusEnum.SERVICESTATUS_UNDEFINED.getNumber()) {
                size += com.google.protobuf.CodedOutputStream.computeEnumSize(1, serviceStatus_);
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.ServiceStatus)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.ServiceStatus other = (context.ContextOuterClass.ServiceStatus) obj;
            if (serviceStatus_ != other.serviceStatus_)
                return false;
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            hash = (37 * hash) + SERVICE_STATUS_FIELD_NUMBER;
            hash = (53 * hash) + serviceStatus_;
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.ServiceStatus parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.ServiceStatus parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.ServiceStatus parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.ServiceStatus parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.ServiceStatus parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.ServiceStatus parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.ServiceStatus parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.ServiceStatus parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.ServiceStatus parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.ServiceStatus parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.ServiceStatus parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.ServiceStatus parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.ServiceStatus prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code context.ServiceStatus}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.ServiceStatus)
        context.ContextOuterClass.ServiceStatusOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_ServiceStatus_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_ServiceStatus_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ServiceStatus.class, context.ContextOuterClass.ServiceStatus.Builder.class);
            }

            // Construct using context.ContextOuterClass.ServiceStatus.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                serviceStatus_ = 0;
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_ServiceStatus_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.ServiceStatus getDefaultInstanceForType() {
                return context.ContextOuterClass.ServiceStatus.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.ServiceStatus build() {
                context.ContextOuterClass.ServiceStatus result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.ServiceStatus buildPartial() {
                context.ContextOuterClass.ServiceStatus result = new context.ContextOuterClass.ServiceStatus(this);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartial0(context.ContextOuterClass.ServiceStatus result) {
                int from_bitField0_ = bitField0_;
                if (((from_bitField0_ & 0x00000001) != 0)) {
                    result.serviceStatus_ = serviceStatus_;
                }
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.ServiceStatus) {
                    return mergeFrom((context.ContextOuterClass.ServiceStatus) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.ServiceStatus other) {
                if (other == context.ContextOuterClass.ServiceStatus.getDefaultInstance())
                    return this;
                if (other.serviceStatus_ != 0) {
                    setServiceStatusValue(other.getServiceStatusValue());
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 8:
                                {
                                    serviceStatus_ = input.readEnum();
                                    bitField0_ |= 0x00000001;
                                    break;
                                }
                            // case 8
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private int serviceStatus_ = 0;

            /**
             * <code>.context.ServiceStatusEnum service_status = 1;</code>
             * @return The enum numeric value on the wire for serviceStatus.
             */
            @java.lang.Override
            public int getServiceStatusValue() {
                return serviceStatus_;
            }

            /**
             * <code>.context.ServiceStatusEnum service_status = 1;</code>
             * @param value The enum numeric value on the wire for serviceStatus to set.
             * @return This builder for chaining.
             */
            public Builder setServiceStatusValue(int value) {
                serviceStatus_ = value;
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.ServiceStatusEnum service_status = 1;</code>
             * @return The serviceStatus.
             */
            @java.lang.Override
            public context.ContextOuterClass.ServiceStatusEnum getServiceStatus() {
                context.ContextOuterClass.ServiceStatusEnum result = context.ContextOuterClass.ServiceStatusEnum.forNumber(serviceStatus_);
                return result == null ? context.ContextOuterClass.ServiceStatusEnum.UNRECOGNIZED : result;
            }

            /**
             * <code>.context.ServiceStatusEnum service_status = 1;</code>
             * @param value The serviceStatus to set.
             * @return This builder for chaining.
             */
            public Builder setServiceStatus(context.ContextOuterClass.ServiceStatusEnum value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                bitField0_ |= 0x00000001;
                serviceStatus_ = value.getNumber();
                onChanged();
                return this;
            }

            /**
             * <code>.context.ServiceStatusEnum service_status = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearServiceStatus() {
                bitField0_ = (bitField0_ & ~0x00000001);
                serviceStatus_ = 0;
                onChanged();
                return this;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.ServiceStatus)
        }

        // @@protoc_insertion_point(class_scope:context.ServiceStatus)
        private static final context.ContextOuterClass.ServiceStatus DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.ServiceStatus();
        }

        public static context.ContextOuterClass.ServiceStatus getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<ServiceStatus> PARSER = new com.google.protobuf.AbstractParser<ServiceStatus>() {

            @java.lang.Override
            public ServiceStatus parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<ServiceStatus> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<ServiceStatus> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.ServiceStatus getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface ServiceConfigOrBuilder extends // @@protoc_insertion_point(interface_extends:context.ServiceConfig)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>repeated .context.ConfigRule config_rules = 1;</code>
         */
        java.util.List<context.ContextOuterClass.ConfigRule> getConfigRulesList();

        /**
         * <code>repeated .context.ConfigRule config_rules = 1;</code>
         */
        context.ContextOuterClass.ConfigRule getConfigRules(int index);

        /**
         * <code>repeated .context.ConfigRule config_rules = 1;</code>
         */
        int getConfigRulesCount();

        /**
         * <code>repeated .context.ConfigRule config_rules = 1;</code>
         */
        java.util.List<? extends context.ContextOuterClass.ConfigRuleOrBuilder> getConfigRulesOrBuilderList();

        /**
         * <code>repeated .context.ConfigRule config_rules = 1;</code>
         */
        context.ContextOuterClass.ConfigRuleOrBuilder getConfigRulesOrBuilder(int index);
    }

    /**
     * Protobuf type {@code context.ServiceConfig}
     */
    public static final class ServiceConfig extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.ServiceConfig)
    ServiceConfigOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use ServiceConfig.newBuilder() to construct.
        private ServiceConfig(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private ServiceConfig() {
            configRules_ = java.util.Collections.emptyList();
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new ServiceConfig();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_ServiceConfig_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_ServiceConfig_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ServiceConfig.class, context.ContextOuterClass.ServiceConfig.Builder.class);
        }

        public static final int CONFIG_RULES_FIELD_NUMBER = 1;

        @SuppressWarnings("serial")
        private java.util.List<context.ContextOuterClass.ConfigRule> configRules_;

        /**
         * <code>repeated .context.ConfigRule config_rules = 1;</code>
         */
        @java.lang.Override
        public java.util.List<context.ContextOuterClass.ConfigRule> getConfigRulesList() {
            return configRules_;
        }

        /**
         * <code>repeated .context.ConfigRule config_rules = 1;</code>
         */
        @java.lang.Override
        public java.util.List<? extends context.ContextOuterClass.ConfigRuleOrBuilder> getConfigRulesOrBuilderList() {
            return configRules_;
        }

        /**
         * <code>repeated .context.ConfigRule config_rules = 1;</code>
         */
        @java.lang.Override
        public int getConfigRulesCount() {
            return configRules_.size();
        }

        /**
         * <code>repeated .context.ConfigRule config_rules = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.ConfigRule getConfigRules(int index) {
            return configRules_.get(index);
        }

        /**
         * <code>repeated .context.ConfigRule config_rules = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.ConfigRuleOrBuilder getConfigRulesOrBuilder(int index) {
            return configRules_.get(index);
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            for (int i = 0; i < configRules_.size(); i++) {
                output.writeMessage(1, configRules_.get(i));
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            for (int i = 0; i < configRules_.size(); i++) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, configRules_.get(i));
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.ServiceConfig)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.ServiceConfig other = (context.ContextOuterClass.ServiceConfig) obj;
            if (!getConfigRulesList().equals(other.getConfigRulesList()))
                return false;
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            if (getConfigRulesCount() > 0) {
                hash = (37 * hash) + CONFIG_RULES_FIELD_NUMBER;
                hash = (53 * hash) + getConfigRulesList().hashCode();
            }
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.ServiceConfig parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.ServiceConfig parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.ServiceConfig parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.ServiceConfig parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.ServiceConfig parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.ServiceConfig parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.ServiceConfig parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.ServiceConfig parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.ServiceConfig parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.ServiceConfig parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.ServiceConfig parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.ServiceConfig parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.ServiceConfig prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code context.ServiceConfig}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.ServiceConfig)
        context.ContextOuterClass.ServiceConfigOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_ServiceConfig_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_ServiceConfig_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ServiceConfig.class, context.ContextOuterClass.ServiceConfig.Builder.class);
            }

            // Construct using context.ContextOuterClass.ServiceConfig.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                if (configRulesBuilder_ == null) {
                    configRules_ = java.util.Collections.emptyList();
                } else {
                    configRules_ = null;
                    configRulesBuilder_.clear();
                }
                bitField0_ = (bitField0_ & ~0x00000001);
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_ServiceConfig_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.ServiceConfig getDefaultInstanceForType() {
                return context.ContextOuterClass.ServiceConfig.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.ServiceConfig build() {
                context.ContextOuterClass.ServiceConfig result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.ServiceConfig buildPartial() {
                context.ContextOuterClass.ServiceConfig result = new context.ContextOuterClass.ServiceConfig(this);
                buildPartialRepeatedFields(result);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartialRepeatedFields(context.ContextOuterClass.ServiceConfig result) {
                if (configRulesBuilder_ == null) {
                    if (((bitField0_ & 0x00000001) != 0)) {
                        configRules_ = java.util.Collections.unmodifiableList(configRules_);
                        bitField0_ = (bitField0_ & ~0x00000001);
                    }
                    result.configRules_ = configRules_;
                } else {
                    result.configRules_ = configRulesBuilder_.build();
                }
            }

            private void buildPartial0(context.ContextOuterClass.ServiceConfig result) {
                int from_bitField0_ = bitField0_;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.ServiceConfig) {
                    return mergeFrom((context.ContextOuterClass.ServiceConfig) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.ServiceConfig other) {
                if (other == context.ContextOuterClass.ServiceConfig.getDefaultInstance())
                    return this;
                if (configRulesBuilder_ == null) {
                    if (!other.configRules_.isEmpty()) {
                        if (configRules_.isEmpty()) {
                            configRules_ = other.configRules_;
                            bitField0_ = (bitField0_ & ~0x00000001);
                        } else {
                            ensureConfigRulesIsMutable();
                            configRules_.addAll(other.configRules_);
                        }
                        onChanged();
                    }
                } else {
                    if (!other.configRules_.isEmpty()) {
                        if (configRulesBuilder_.isEmpty()) {
                            configRulesBuilder_.dispose();
                            configRulesBuilder_ = null;
                            configRules_ = other.configRules_;
                            bitField0_ = (bitField0_ & ~0x00000001);
                            configRulesBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getConfigRulesFieldBuilder() : null;
                        } else {
                            configRulesBuilder_.addAllMessages(other.configRules_);
                        }
                    }
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 10:
                                {
                                    context.ContextOuterClass.ConfigRule m = input.readMessage(context.ContextOuterClass.ConfigRule.parser(), extensionRegistry);
                                    if (configRulesBuilder_ == null) {
                                        ensureConfigRulesIsMutable();
                                        configRules_.add(m);
                                    } else {
                                        configRulesBuilder_.addMessage(m);
                                    }
                                    break;
                                }
                            // case 10
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private java.util.List<context.ContextOuterClass.ConfigRule> configRules_ = java.util.Collections.emptyList();

            private void ensureConfigRulesIsMutable() {
                if (!((bitField0_ & 0x00000001) != 0)) {
                    configRules_ = new java.util.ArrayList<context.ContextOuterClass.ConfigRule>(configRules_);
                    bitField0_ |= 0x00000001;
                }
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.ConfigRule, context.ContextOuterClass.ConfigRule.Builder, context.ContextOuterClass.ConfigRuleOrBuilder> configRulesBuilder_;

            /**
             * <code>repeated .context.ConfigRule config_rules = 1;</code>
             */
            public java.util.List<context.ContextOuterClass.ConfigRule> getConfigRulesList() {
                if (configRulesBuilder_ == null) {
                    return java.util.Collections.unmodifiableList(configRules_);
                } else {
                    return configRulesBuilder_.getMessageList();
                }
            }

            /**
             * <code>repeated .context.ConfigRule config_rules = 1;</code>
             */
            public int getConfigRulesCount() {
                if (configRulesBuilder_ == null) {
                    return configRules_.size();
                } else {
                    return configRulesBuilder_.getCount();
                }
            }

            /**
             * <code>repeated .context.ConfigRule config_rules = 1;</code>
             */
            public context.ContextOuterClass.ConfigRule getConfigRules(int index) {
                if (configRulesBuilder_ == null) {
                    return configRules_.get(index);
                } else {
                    return configRulesBuilder_.getMessage(index);
                }
            }

            /**
             * <code>repeated .context.ConfigRule config_rules = 1;</code>
             */
            public Builder setConfigRules(int index, context.ContextOuterClass.ConfigRule value) {
                if (configRulesBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureConfigRulesIsMutable();
                    configRules_.set(index, value);
                    onChanged();
                } else {
                    configRulesBuilder_.setMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.ConfigRule config_rules = 1;</code>
             */
            public Builder setConfigRules(int index, context.ContextOuterClass.ConfigRule.Builder builderForValue) {
                if (configRulesBuilder_ == null) {
                    ensureConfigRulesIsMutable();
                    configRules_.set(index, builderForValue.build());
                    onChanged();
                } else {
                    configRulesBuilder_.setMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.ConfigRule config_rules = 1;</code>
             */
            public Builder addConfigRules(context.ContextOuterClass.ConfigRule value) {
                if (configRulesBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureConfigRulesIsMutable();
                    configRules_.add(value);
                    onChanged();
                } else {
                    configRulesBuilder_.addMessage(value);
                }
                return this;
            }

            /**
             * <code>repeated .context.ConfigRule config_rules = 1;</code>
             */
            public Builder addConfigRules(int index, context.ContextOuterClass.ConfigRule value) {
                if (configRulesBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureConfigRulesIsMutable();
                    configRules_.add(index, value);
                    onChanged();
                } else {
                    configRulesBuilder_.addMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.ConfigRule config_rules = 1;</code>
             */
            public Builder addConfigRules(context.ContextOuterClass.ConfigRule.Builder builderForValue) {
                if (configRulesBuilder_ == null) {
                    ensureConfigRulesIsMutable();
                    configRules_.add(builderForValue.build());
                    onChanged();
                } else {
                    configRulesBuilder_.addMessage(builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.ConfigRule config_rules = 1;</code>
             */
            public Builder addConfigRules(int index, context.ContextOuterClass.ConfigRule.Builder builderForValue) {
                if (configRulesBuilder_ == null) {
                    ensureConfigRulesIsMutable();
                    configRules_.add(index, builderForValue.build());
                    onChanged();
                } else {
                    configRulesBuilder_.addMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.ConfigRule config_rules = 1;</code>
             */
            public Builder addAllConfigRules(java.lang.Iterable<? extends context.ContextOuterClass.ConfigRule> values) {
                if (configRulesBuilder_ == null) {
                    ensureConfigRulesIsMutable();
                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, configRules_);
                    onChanged();
                } else {
                    configRulesBuilder_.addAllMessages(values);
                }
                return this;
            }

            /**
             * <code>repeated .context.ConfigRule config_rules = 1;</code>
             */
            public Builder clearConfigRules() {
                if (configRulesBuilder_ == null) {
                    configRules_ = java.util.Collections.emptyList();
                    bitField0_ = (bitField0_ & ~0x00000001);
                    onChanged();
                } else {
                    configRulesBuilder_.clear();
                }
                return this;
            }

            /**
             * <code>repeated .context.ConfigRule config_rules = 1;</code>
             */
            public Builder removeConfigRules(int index) {
                if (configRulesBuilder_ == null) {
                    ensureConfigRulesIsMutable();
                    configRules_.remove(index);
                    onChanged();
                } else {
                    configRulesBuilder_.remove(index);
                }
                return this;
            }

            /**
             * <code>repeated .context.ConfigRule config_rules = 1;</code>
             */
            public context.ContextOuterClass.ConfigRule.Builder getConfigRulesBuilder(int index) {
                return getConfigRulesFieldBuilder().getBuilder(index);
            }

            /**
             * <code>repeated .context.ConfigRule config_rules = 1;</code>
             */
            public context.ContextOuterClass.ConfigRuleOrBuilder getConfigRulesOrBuilder(int index) {
                if (configRulesBuilder_ == null) {
                    return configRules_.get(index);
                } else {
                    return configRulesBuilder_.getMessageOrBuilder(index);
                }
            }

            /**
             * <code>repeated .context.ConfigRule config_rules = 1;</code>
             */
            public java.util.List<? extends context.ContextOuterClass.ConfigRuleOrBuilder> getConfigRulesOrBuilderList() {
                if (configRulesBuilder_ != null) {
                    return configRulesBuilder_.getMessageOrBuilderList();
                } else {
                    return java.util.Collections.unmodifiableList(configRules_);
                }
            }

            /**
             * <code>repeated .context.ConfigRule config_rules = 1;</code>
             */
            public context.ContextOuterClass.ConfigRule.Builder addConfigRulesBuilder() {
                return getConfigRulesFieldBuilder().addBuilder(context.ContextOuterClass.ConfigRule.getDefaultInstance());
            }

            /**
             * <code>repeated .context.ConfigRule config_rules = 1;</code>
             */
            public context.ContextOuterClass.ConfigRule.Builder addConfigRulesBuilder(int index) {
                return getConfigRulesFieldBuilder().addBuilder(index, context.ContextOuterClass.ConfigRule.getDefaultInstance());
            }

            /**
             * <code>repeated .context.ConfigRule config_rules = 1;</code>
             */
            public java.util.List<context.ContextOuterClass.ConfigRule.Builder> getConfigRulesBuilderList() {
                return getConfigRulesFieldBuilder().getBuilderList();
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.ConfigRule, context.ContextOuterClass.ConfigRule.Builder, context.ContextOuterClass.ConfigRuleOrBuilder> getConfigRulesFieldBuilder() {
                if (configRulesBuilder_ == null) {
                    configRulesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.ConfigRule, context.ContextOuterClass.ConfigRule.Builder, context.ContextOuterClass.ConfigRuleOrBuilder>(configRules_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
                    configRules_ = null;
                }
                return configRulesBuilder_;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.ServiceConfig)
        }

        // @@protoc_insertion_point(class_scope:context.ServiceConfig)
        private static final context.ContextOuterClass.ServiceConfig DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.ServiceConfig();
        }

        public static context.ContextOuterClass.ServiceConfig getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<ServiceConfig> PARSER = new com.google.protobuf.AbstractParser<ServiceConfig>() {

            @java.lang.Override
            public ServiceConfig parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<ServiceConfig> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<ServiceConfig> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.ServiceConfig getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface ServiceIdListOrBuilder extends // @@protoc_insertion_point(interface_extends:context.ServiceIdList)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>repeated .context.ServiceId service_ids = 1;</code>
         */
        java.util.List<context.ContextOuterClass.ServiceId> getServiceIdsList();

        /**
         * <code>repeated .context.ServiceId service_ids = 1;</code>
         */
        context.ContextOuterClass.ServiceId getServiceIds(int index);

        /**
         * <code>repeated .context.ServiceId service_ids = 1;</code>
         */
        int getServiceIdsCount();

        /**
         * <code>repeated .context.ServiceId service_ids = 1;</code>
         */
        java.util.List<? extends context.ContextOuterClass.ServiceIdOrBuilder> getServiceIdsOrBuilderList();

        /**
         * <code>repeated .context.ServiceId service_ids = 1;</code>
         */
        context.ContextOuterClass.ServiceIdOrBuilder getServiceIdsOrBuilder(int index);
    }

    /**
     * Protobuf type {@code context.ServiceIdList}
     */
    public static final class ServiceIdList extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.ServiceIdList)
    ServiceIdListOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use ServiceIdList.newBuilder() to construct.
        private ServiceIdList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private ServiceIdList() {
            serviceIds_ = java.util.Collections.emptyList();
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new ServiceIdList();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_ServiceIdList_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_ServiceIdList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ServiceIdList.class, context.ContextOuterClass.ServiceIdList.Builder.class);
        }

        public static final int SERVICE_IDS_FIELD_NUMBER = 1;

        @SuppressWarnings("serial")
        private java.util.List<context.ContextOuterClass.ServiceId> serviceIds_;

        /**
         * <code>repeated .context.ServiceId service_ids = 1;</code>
         */
        @java.lang.Override
        public java.util.List<context.ContextOuterClass.ServiceId> getServiceIdsList() {
            return serviceIds_;
        }

        /**
         * <code>repeated .context.ServiceId service_ids = 1;</code>
         */
        @java.lang.Override
        public java.util.List<? extends context.ContextOuterClass.ServiceIdOrBuilder> getServiceIdsOrBuilderList() {
            return serviceIds_;
        }

        /**
         * <code>repeated .context.ServiceId service_ids = 1;</code>
         */
        @java.lang.Override
        public int getServiceIdsCount() {
            return serviceIds_.size();
        }

        /**
         * <code>repeated .context.ServiceId service_ids = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.ServiceId getServiceIds(int index) {
            return serviceIds_.get(index);
        }

        /**
         * <code>repeated .context.ServiceId service_ids = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdsOrBuilder(int index) {
            return serviceIds_.get(index);
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            for (int i = 0; i < serviceIds_.size(); i++) {
                output.writeMessage(1, serviceIds_.get(i));
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            for (int i = 0; i < serviceIds_.size(); i++) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, serviceIds_.get(i));
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.ServiceIdList)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.ServiceIdList other = (context.ContextOuterClass.ServiceIdList) obj;
            if (!getServiceIdsList().equals(other.getServiceIdsList()))
                return false;
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            if (getServiceIdsCount() > 0) {
                hash = (37 * hash) + SERVICE_IDS_FIELD_NUMBER;
                hash = (53 * hash) + getServiceIdsList().hashCode();
            }
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.ServiceIdList parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.ServiceIdList parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.ServiceIdList parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.ServiceIdList parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.ServiceIdList parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.ServiceIdList parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.ServiceIdList parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.ServiceIdList parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.ServiceIdList parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.ServiceIdList parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.ServiceIdList parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.ServiceIdList parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.ServiceIdList prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code context.ServiceIdList}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.ServiceIdList)
        context.ContextOuterClass.ServiceIdListOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_ServiceIdList_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_ServiceIdList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ServiceIdList.class, context.ContextOuterClass.ServiceIdList.Builder.class);
            }

            // Construct using context.ContextOuterClass.ServiceIdList.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                if (serviceIdsBuilder_ == null) {
                    serviceIds_ = java.util.Collections.emptyList();
                } else {
                    serviceIds_ = null;
                    serviceIdsBuilder_.clear();
                }
                bitField0_ = (bitField0_ & ~0x00000001);
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_ServiceIdList_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.ServiceIdList getDefaultInstanceForType() {
                return context.ContextOuterClass.ServiceIdList.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.ServiceIdList build() {
                context.ContextOuterClass.ServiceIdList result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.ServiceIdList buildPartial() {
                context.ContextOuterClass.ServiceIdList result = new context.ContextOuterClass.ServiceIdList(this);
                buildPartialRepeatedFields(result);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartialRepeatedFields(context.ContextOuterClass.ServiceIdList result) {
                if (serviceIdsBuilder_ == null) {
                    if (((bitField0_ & 0x00000001) != 0)) {
                        serviceIds_ = java.util.Collections.unmodifiableList(serviceIds_);
                        bitField0_ = (bitField0_ & ~0x00000001);
                    }
                    result.serviceIds_ = serviceIds_;
                } else {
                    result.serviceIds_ = serviceIdsBuilder_.build();
                }
            }

            private void buildPartial0(context.ContextOuterClass.ServiceIdList result) {
                int from_bitField0_ = bitField0_;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.ServiceIdList) {
                    return mergeFrom((context.ContextOuterClass.ServiceIdList) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.ServiceIdList other) {
                if (other == context.ContextOuterClass.ServiceIdList.getDefaultInstance())
                    return this;
                if (serviceIdsBuilder_ == null) {
                    if (!other.serviceIds_.isEmpty()) {
                        if (serviceIds_.isEmpty()) {
                            serviceIds_ = other.serviceIds_;
                            bitField0_ = (bitField0_ & ~0x00000001);
                        } else {
                            ensureServiceIdsIsMutable();
                            serviceIds_.addAll(other.serviceIds_);
                        }
                        onChanged();
                    }
                } else {
                    if (!other.serviceIds_.isEmpty()) {
                        if (serviceIdsBuilder_.isEmpty()) {
                            serviceIdsBuilder_.dispose();
                            serviceIdsBuilder_ = null;
                            serviceIds_ = other.serviceIds_;
                            bitField0_ = (bitField0_ & ~0x00000001);
                            serviceIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getServiceIdsFieldBuilder() : null;
                        } else {
                            serviceIdsBuilder_.addAllMessages(other.serviceIds_);
                        }
                    }
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 10:
                                {
                                    context.ContextOuterClass.ServiceId m = input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry);
                                    if (serviceIdsBuilder_ == null) {
                                        ensureServiceIdsIsMutable();
                                        serviceIds_.add(m);
                                    } else {
                                        serviceIdsBuilder_.addMessage(m);
                                    }
                                    break;
                                }
                            // case 10
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private java.util.List<context.ContextOuterClass.ServiceId> serviceIds_ = java.util.Collections.emptyList();

            private void ensureServiceIdsIsMutable() {
                if (!((bitField0_ & 0x00000001) != 0)) {
                    serviceIds_ = new java.util.ArrayList<context.ContextOuterClass.ServiceId>(serviceIds_);
                    bitField0_ |= 0x00000001;
                }
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> serviceIdsBuilder_;

            /**
             * <code>repeated .context.ServiceId service_ids = 1;</code>
             */
            public java.util.List<context.ContextOuterClass.ServiceId> getServiceIdsList() {
                if (serviceIdsBuilder_ == null) {
                    return java.util.Collections.unmodifiableList(serviceIds_);
                } else {
                    return serviceIdsBuilder_.getMessageList();
                }
            }

            /**
             * <code>repeated .context.ServiceId service_ids = 1;</code>
             */
            public int getServiceIdsCount() {
                if (serviceIdsBuilder_ == null) {
                    return serviceIds_.size();
                } else {
                    return serviceIdsBuilder_.getCount();
                }
            }

            /**
             * <code>repeated .context.ServiceId service_ids = 1;</code>
             */
            public context.ContextOuterClass.ServiceId getServiceIds(int index) {
                if (serviceIdsBuilder_ == null) {
                    return serviceIds_.get(index);
                } else {
                    return serviceIdsBuilder_.getMessage(index);
                }
            }

            /**
             * <code>repeated .context.ServiceId service_ids = 1;</code>
             */
            public Builder setServiceIds(int index, context.ContextOuterClass.ServiceId value) {
                if (serviceIdsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureServiceIdsIsMutable();
                    serviceIds_.set(index, value);
                    onChanged();
                } else {
                    serviceIdsBuilder_.setMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.ServiceId service_ids = 1;</code>
             */
            public Builder setServiceIds(int index, context.ContextOuterClass.ServiceId.Builder builderForValue) {
                if (serviceIdsBuilder_ == null) {
                    ensureServiceIdsIsMutable();
                    serviceIds_.set(index, builderForValue.build());
                    onChanged();
                } else {
                    serviceIdsBuilder_.setMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.ServiceId service_ids = 1;</code>
             */
            public Builder addServiceIds(context.ContextOuterClass.ServiceId value) {
                if (serviceIdsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureServiceIdsIsMutable();
                    serviceIds_.add(value);
                    onChanged();
                } else {
                    serviceIdsBuilder_.addMessage(value);
                }
                return this;
            }

            /**
             * <code>repeated .context.ServiceId service_ids = 1;</code>
             */
            public Builder addServiceIds(int index, context.ContextOuterClass.ServiceId value) {
                if (serviceIdsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureServiceIdsIsMutable();
                    serviceIds_.add(index, value);
                    onChanged();
                } else {
                    serviceIdsBuilder_.addMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.ServiceId service_ids = 1;</code>
             */
            public Builder addServiceIds(context.ContextOuterClass.ServiceId.Builder builderForValue) {
                if (serviceIdsBuilder_ == null) {
                    ensureServiceIdsIsMutable();
                    serviceIds_.add(builderForValue.build());
                    onChanged();
                } else {
                    serviceIdsBuilder_.addMessage(builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.ServiceId service_ids = 1;</code>
             */
            public Builder addServiceIds(int index, context.ContextOuterClass.ServiceId.Builder builderForValue) {
                if (serviceIdsBuilder_ == null) {
                    ensureServiceIdsIsMutable();
                    serviceIds_.add(index, builderForValue.build());
                    onChanged();
                } else {
                    serviceIdsBuilder_.addMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.ServiceId service_ids = 1;</code>
             */
            public Builder addAllServiceIds(java.lang.Iterable<? extends context.ContextOuterClass.ServiceId> values) {
                if (serviceIdsBuilder_ == null) {
                    ensureServiceIdsIsMutable();
                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, serviceIds_);
                    onChanged();
                } else {
                    serviceIdsBuilder_.addAllMessages(values);
                }
                return this;
            }

            /**
             * <code>repeated .context.ServiceId service_ids = 1;</code>
             */
            public Builder clearServiceIds() {
                if (serviceIdsBuilder_ == null) {
                    serviceIds_ = java.util.Collections.emptyList();
                    bitField0_ = (bitField0_ & ~0x00000001);
                    onChanged();
                } else {
                    serviceIdsBuilder_.clear();
                }
                return this;
            }

            /**
             * <code>repeated .context.ServiceId service_ids = 1;</code>
             */
            public Builder removeServiceIds(int index) {
                if (serviceIdsBuilder_ == null) {
                    ensureServiceIdsIsMutable();
                    serviceIds_.remove(index);
                    onChanged();
                } else {
                    serviceIdsBuilder_.remove(index);
                }
                return this;
            }

            /**
             * <code>repeated .context.ServiceId service_ids = 1;</code>
             */
            public context.ContextOuterClass.ServiceId.Builder getServiceIdsBuilder(int index) {
                return getServiceIdsFieldBuilder().getBuilder(index);
            }

            /**
             * <code>repeated .context.ServiceId service_ids = 1;</code>
             */
            public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdsOrBuilder(int index) {
                if (serviceIdsBuilder_ == null) {
                    return serviceIds_.get(index);
                } else {
                    return serviceIdsBuilder_.getMessageOrBuilder(index);
                }
            }

            /**
             * <code>repeated .context.ServiceId service_ids = 1;</code>
             */
            public java.util.List<? extends context.ContextOuterClass.ServiceIdOrBuilder> getServiceIdsOrBuilderList() {
                if (serviceIdsBuilder_ != null) {
                    return serviceIdsBuilder_.getMessageOrBuilderList();
                } else {
                    return java.util.Collections.unmodifiableList(serviceIds_);
                }
            }

            /**
             * <code>repeated .context.ServiceId service_ids = 1;</code>
             */
            public context.ContextOuterClass.ServiceId.Builder addServiceIdsBuilder() {
                return getServiceIdsFieldBuilder().addBuilder(context.ContextOuterClass.ServiceId.getDefaultInstance());
            }

            /**
             * <code>repeated .context.ServiceId service_ids = 1;</code>
             */
            public context.ContextOuterClass.ServiceId.Builder addServiceIdsBuilder(int index) {
                return getServiceIdsFieldBuilder().addBuilder(index, context.ContextOuterClass.ServiceId.getDefaultInstance());
            }

            /**
             * <code>repeated .context.ServiceId service_ids = 1;</code>
             */
            public java.util.List<context.ContextOuterClass.ServiceId.Builder> getServiceIdsBuilderList() {
                return getServiceIdsFieldBuilder().getBuilderList();
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> getServiceIdsFieldBuilder() {
                if (serviceIdsBuilder_ == null) {
                    serviceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder>(serviceIds_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
                    serviceIds_ = null;
                }
                return serviceIdsBuilder_;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.ServiceIdList)
        }

        // @@protoc_insertion_point(class_scope:context.ServiceIdList)
        private static final context.ContextOuterClass.ServiceIdList DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.ServiceIdList();
        }

        public static context.ContextOuterClass.ServiceIdList getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<ServiceIdList> PARSER = new com.google.protobuf.AbstractParser<ServiceIdList>() {

            @java.lang.Override
            public ServiceIdList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<ServiceIdList> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<ServiceIdList> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.ServiceIdList getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface ServiceListOrBuilder extends // @@protoc_insertion_point(interface_extends:context.ServiceList)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>repeated .context.Service services = 1;</code>
         */
        java.util.List<context.ContextOuterClass.Service> getServicesList();

        /**
         * <code>repeated .context.Service services = 1;</code>
         */
        context.ContextOuterClass.Service getServices(int index);

        /**
         * <code>repeated .context.Service services = 1;</code>
         */
        int getServicesCount();

        /**
         * <code>repeated .context.Service services = 1;</code>
         */
        java.util.List<? extends context.ContextOuterClass.ServiceOrBuilder> getServicesOrBuilderList();

        /**
         * <code>repeated .context.Service services = 1;</code>
         */
        context.ContextOuterClass.ServiceOrBuilder getServicesOrBuilder(int index);
    }

    /**
     * Protobuf type {@code context.ServiceList}
     */
    public static final class ServiceList extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.ServiceList)
    ServiceListOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use ServiceList.newBuilder() to construct.
        private ServiceList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private ServiceList() {
            services_ = java.util.Collections.emptyList();
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new ServiceList();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_ServiceList_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_ServiceList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ServiceList.class, context.ContextOuterClass.ServiceList.Builder.class);
        }

        public static final int SERVICES_FIELD_NUMBER = 1;

        @SuppressWarnings("serial")
        private java.util.List<context.ContextOuterClass.Service> services_;

        /**
         * <code>repeated .context.Service services = 1;</code>
         */
        @java.lang.Override
        public java.util.List<context.ContextOuterClass.Service> getServicesList() {
            return services_;
        }

        /**
         * <code>repeated .context.Service services = 1;</code>
         */
        @java.lang.Override
        public java.util.List<? extends context.ContextOuterClass.ServiceOrBuilder> getServicesOrBuilderList() {
            return services_;
        }

        /**
         * <code>repeated .context.Service services = 1;</code>
         */
        @java.lang.Override
        public int getServicesCount() {
            return services_.size();
        }

        /**
         * <code>repeated .context.Service services = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.Service getServices(int index) {
            return services_.get(index);
        }

        /**
         * <code>repeated .context.Service services = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.ServiceOrBuilder getServicesOrBuilder(int index) {
            return services_.get(index);
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            for (int i = 0; i < services_.size(); i++) {
                output.writeMessage(1, services_.get(i));
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            for (int i = 0; i < services_.size(); i++) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, services_.get(i));
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.ServiceList)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.ServiceList other = (context.ContextOuterClass.ServiceList) obj;
            if (!getServicesList().equals(other.getServicesList()))
                return false;
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            if (getServicesCount() > 0) {
                hash = (37 * hash) + SERVICES_FIELD_NUMBER;
                hash = (53 * hash) + getServicesList().hashCode();
            }
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.ServiceList parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.ServiceList parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.ServiceList parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.ServiceList parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.ServiceList parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.ServiceList parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.ServiceList parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.ServiceList parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.ServiceList parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.ServiceList parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.ServiceList parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.ServiceList parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.ServiceList prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code context.ServiceList}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.ServiceList)
        context.ContextOuterClass.ServiceListOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_ServiceList_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_ServiceList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ServiceList.class, context.ContextOuterClass.ServiceList.Builder.class);
            }

            // Construct using context.ContextOuterClass.ServiceList.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                if (servicesBuilder_ == null) {
                    services_ = java.util.Collections.emptyList();
                } else {
                    services_ = null;
                    servicesBuilder_.clear();
                }
                bitField0_ = (bitField0_ & ~0x00000001);
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_ServiceList_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.ServiceList getDefaultInstanceForType() {
                return context.ContextOuterClass.ServiceList.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.ServiceList build() {
                context.ContextOuterClass.ServiceList result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.ServiceList buildPartial() {
                context.ContextOuterClass.ServiceList result = new context.ContextOuterClass.ServiceList(this);
                buildPartialRepeatedFields(result);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartialRepeatedFields(context.ContextOuterClass.ServiceList result) {
                if (servicesBuilder_ == null) {
                    if (((bitField0_ & 0x00000001) != 0)) {
                        services_ = java.util.Collections.unmodifiableList(services_);
                        bitField0_ = (bitField0_ & ~0x00000001);
                    }
                    result.services_ = services_;
                } else {
                    result.services_ = servicesBuilder_.build();
                }
            }

            private void buildPartial0(context.ContextOuterClass.ServiceList result) {
                int from_bitField0_ = bitField0_;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.ServiceList) {
                    return mergeFrom((context.ContextOuterClass.ServiceList) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.ServiceList other) {
                if (other == context.ContextOuterClass.ServiceList.getDefaultInstance())
                    return this;
                if (servicesBuilder_ == null) {
                    if (!other.services_.isEmpty()) {
                        if (services_.isEmpty()) {
                            services_ = other.services_;
                            bitField0_ = (bitField0_ & ~0x00000001);
                        } else {
                            ensureServicesIsMutable();
                            services_.addAll(other.services_);
                        }
                        onChanged();
                    }
                } else {
                    if (!other.services_.isEmpty()) {
                        if (servicesBuilder_.isEmpty()) {
                            servicesBuilder_.dispose();
                            servicesBuilder_ = null;
                            services_ = other.services_;
                            bitField0_ = (bitField0_ & ~0x00000001);
                            servicesBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getServicesFieldBuilder() : null;
                        } else {
                            servicesBuilder_.addAllMessages(other.services_);
                        }
                    }
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 10:
                                {
                                    context.ContextOuterClass.Service m = input.readMessage(context.ContextOuterClass.Service.parser(), extensionRegistry);
                                    if (servicesBuilder_ == null) {
                                        ensureServicesIsMutable();
                                        services_.add(m);
                                    } else {
                                        servicesBuilder_.addMessage(m);
                                    }
                                    break;
                                }
                            // case 10
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private java.util.List<context.ContextOuterClass.Service> services_ = java.util.Collections.emptyList();

            private void ensureServicesIsMutable() {
                if (!((bitField0_ & 0x00000001) != 0)) {
                    services_ = new java.util.ArrayList<context.ContextOuterClass.Service>(services_);
                    bitField0_ |= 0x00000001;
                }
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Service, context.ContextOuterClass.Service.Builder, context.ContextOuterClass.ServiceOrBuilder> servicesBuilder_;

            /**
             * <code>repeated .context.Service services = 1;</code>
             */
            public java.util.List<context.ContextOuterClass.Service> getServicesList() {
                if (servicesBuilder_ == null) {
                    return java.util.Collections.unmodifiableList(services_);
                } else {
                    return servicesBuilder_.getMessageList();
                }
            }

            /**
             * <code>repeated .context.Service services = 1;</code>
             */
            public int getServicesCount() {
                if (servicesBuilder_ == null) {
                    return services_.size();
                } else {
                    return servicesBuilder_.getCount();
                }
            }

            /**
             * <code>repeated .context.Service services = 1;</code>
             */
            public context.ContextOuterClass.Service getServices(int index) {
                if (servicesBuilder_ == null) {
                    return services_.get(index);
                } else {
                    return servicesBuilder_.getMessage(index);
                }
            }

            /**
             * <code>repeated .context.Service services = 1;</code>
             */
            public Builder setServices(int index, context.ContextOuterClass.Service value) {
                if (servicesBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureServicesIsMutable();
                    services_.set(index, value);
                    onChanged();
                } else {
                    servicesBuilder_.setMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.Service services = 1;</code>
             */
            public Builder setServices(int index, context.ContextOuterClass.Service.Builder builderForValue) {
                if (servicesBuilder_ == null) {
                    ensureServicesIsMutable();
                    services_.set(index, builderForValue.build());
                    onChanged();
                } else {
                    servicesBuilder_.setMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.Service services = 1;</code>
             */
            public Builder addServices(context.ContextOuterClass.Service value) {
                if (servicesBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureServicesIsMutable();
                    services_.add(value);
                    onChanged();
                } else {
                    servicesBuilder_.addMessage(value);
                }
                return this;
            }

            /**
             * <code>repeated .context.Service services = 1;</code>
             */
            public Builder addServices(int index, context.ContextOuterClass.Service value) {
                if (servicesBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureServicesIsMutable();
                    services_.add(index, value);
                    onChanged();
                } else {
                    servicesBuilder_.addMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.Service services = 1;</code>
             */
            public Builder addServices(context.ContextOuterClass.Service.Builder builderForValue) {
                if (servicesBuilder_ == null) {
                    ensureServicesIsMutable();
                    services_.add(builderForValue.build());
                    onChanged();
                } else {
                    servicesBuilder_.addMessage(builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.Service services = 1;</code>
             */
            public Builder addServices(int index, context.ContextOuterClass.Service.Builder builderForValue) {
                if (servicesBuilder_ == null) {
                    ensureServicesIsMutable();
                    services_.add(index, builderForValue.build());
                    onChanged();
                } else {
                    servicesBuilder_.addMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.Service services = 1;</code>
             */
            public Builder addAllServices(java.lang.Iterable<? extends context.ContextOuterClass.Service> values) {
                if (servicesBuilder_ == null) {
                    ensureServicesIsMutable();
                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, services_);
                    onChanged();
                } else {
                    servicesBuilder_.addAllMessages(values);
                }
                return this;
            }

            /**
             * <code>repeated .context.Service services = 1;</code>
             */
            public Builder clearServices() {
                if (servicesBuilder_ == null) {
                    services_ = java.util.Collections.emptyList();
                    bitField0_ = (bitField0_ & ~0x00000001);
                    onChanged();
                } else {
                    servicesBuilder_.clear();
                }
                return this;
            }

            /**
             * <code>repeated .context.Service services = 1;</code>
             */
            public Builder removeServices(int index) {
                if (servicesBuilder_ == null) {
                    ensureServicesIsMutable();
                    services_.remove(index);
                    onChanged();
                } else {
                    servicesBuilder_.remove(index);
                }
                return this;
            }

            /**
             * <code>repeated .context.Service services = 1;</code>
             */
            public context.ContextOuterClass.Service.Builder getServicesBuilder(int index) {
                return getServicesFieldBuilder().getBuilder(index);
            }

            /**
             * <code>repeated .context.Service services = 1;</code>
             */
            public context.ContextOuterClass.ServiceOrBuilder getServicesOrBuilder(int index) {
                if (servicesBuilder_ == null) {
                    return services_.get(index);
                } else {
                    return servicesBuilder_.getMessageOrBuilder(index);
                }
            }

            /**
             * <code>repeated .context.Service services = 1;</code>
             */
            public java.util.List<? extends context.ContextOuterClass.ServiceOrBuilder> getServicesOrBuilderList() {
                if (servicesBuilder_ != null) {
                    return servicesBuilder_.getMessageOrBuilderList();
                } else {
                    return java.util.Collections.unmodifiableList(services_);
                }
            }

            /**
             * <code>repeated .context.Service services = 1;</code>
             */
            public context.ContextOuterClass.Service.Builder addServicesBuilder() {
                return getServicesFieldBuilder().addBuilder(context.ContextOuterClass.Service.getDefaultInstance());
            }

            /**
             * <code>repeated .context.Service services = 1;</code>
             */
            public context.ContextOuterClass.Service.Builder addServicesBuilder(int index) {
                return getServicesFieldBuilder().addBuilder(index, context.ContextOuterClass.Service.getDefaultInstance());
            }

            /**
             * <code>repeated .context.Service services = 1;</code>
             */
            public java.util.List<context.ContextOuterClass.Service.Builder> getServicesBuilderList() {
                return getServicesFieldBuilder().getBuilderList();
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Service, context.ContextOuterClass.Service.Builder, context.ContextOuterClass.ServiceOrBuilder> getServicesFieldBuilder() {
                if (servicesBuilder_ == null) {
                    servicesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Service, context.ContextOuterClass.Service.Builder, context.ContextOuterClass.ServiceOrBuilder>(services_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
                    services_ = null;
                }
                return servicesBuilder_;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.ServiceList)
        }

        // @@protoc_insertion_point(class_scope:context.ServiceList)
        private static final context.ContextOuterClass.ServiceList DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.ServiceList();
        }

        public static context.ContextOuterClass.ServiceList getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<ServiceList> PARSER = new com.google.protobuf.AbstractParser<ServiceList>() {

            @java.lang.Override
            public ServiceList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<ServiceList> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<ServiceList> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.ServiceList getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface ServiceFilterOrBuilder extends // @@protoc_insertion_point(interface_extends:context.ServiceFilter)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>.context.ServiceIdList service_ids = 1;</code>
         * @return Whether the serviceIds field is set.
         */
        boolean hasServiceIds();

        /**
         * <code>.context.ServiceIdList service_ids = 1;</code>
         * @return The serviceIds.
         */
        context.ContextOuterClass.ServiceIdList getServiceIds();

        /**
         * <code>.context.ServiceIdList service_ids = 1;</code>
         */
        context.ContextOuterClass.ServiceIdListOrBuilder getServiceIdsOrBuilder();

        /**
         * <code>bool include_endpoint_ids = 2;</code>
         * @return The includeEndpointIds.
         */
        boolean getIncludeEndpointIds();

        /**
         * <code>bool include_constraints = 3;</code>
         * @return The includeConstraints.
         */
        boolean getIncludeConstraints();

        /**
         * <code>bool include_config_rules = 4;</code>
         * @return The includeConfigRules.
         */
        boolean getIncludeConfigRules();
    }

    /**
     * Protobuf type {@code context.ServiceFilter}
     */
    public static final class ServiceFilter extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.ServiceFilter)
    ServiceFilterOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use ServiceFilter.newBuilder() to construct.
        private ServiceFilter(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private ServiceFilter() {
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new ServiceFilter();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_ServiceFilter_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_ServiceFilter_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ServiceFilter.class, context.ContextOuterClass.ServiceFilter.Builder.class);
        }

        public static final int SERVICE_IDS_FIELD_NUMBER = 1;

        private context.ContextOuterClass.ServiceIdList serviceIds_;

        /**
         * <code>.context.ServiceIdList service_ids = 1;</code>
         * @return Whether the serviceIds field is set.
         */
        @java.lang.Override
        public boolean hasServiceIds() {
            return serviceIds_ != null;
        }

        /**
         * <code>.context.ServiceIdList service_ids = 1;</code>
         * @return The serviceIds.
         */
        @java.lang.Override
        public context.ContextOuterClass.ServiceIdList getServiceIds() {
            return serviceIds_ == null ? context.ContextOuterClass.ServiceIdList.getDefaultInstance() : serviceIds_;
        }

        /**
         * <code>.context.ServiceIdList service_ids = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.ServiceIdListOrBuilder getServiceIdsOrBuilder() {
            return serviceIds_ == null ? context.ContextOuterClass.ServiceIdList.getDefaultInstance() : serviceIds_;
        }

        public static final int INCLUDE_ENDPOINT_IDS_FIELD_NUMBER = 2;

        private boolean includeEndpointIds_ = false;

        /**
         * <code>bool include_endpoint_ids = 2;</code>
         * @return The includeEndpointIds.
         */
        @java.lang.Override
        public boolean getIncludeEndpointIds() {
            return includeEndpointIds_;
        }

        public static final int INCLUDE_CONSTRAINTS_FIELD_NUMBER = 3;

        private boolean includeConstraints_ = false;

        /**
         * <code>bool include_constraints = 3;</code>
         * @return The includeConstraints.
         */
        @java.lang.Override
        public boolean getIncludeConstraints() {
            return includeConstraints_;
        }

        public static final int INCLUDE_CONFIG_RULES_FIELD_NUMBER = 4;

        private boolean includeConfigRules_ = false;

        /**
         * <code>bool include_config_rules = 4;</code>
         * @return The includeConfigRules.
         */
        @java.lang.Override
        public boolean getIncludeConfigRules() {
            return includeConfigRules_;
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            if (serviceIds_ != null) {
                output.writeMessage(1, getServiceIds());
            }
            if (includeEndpointIds_ != false) {
                output.writeBool(2, includeEndpointIds_);
            }
            if (includeConstraints_ != false) {
                output.writeBool(3, includeConstraints_);
            }
            if (includeConfigRules_ != false) {
                output.writeBool(4, includeConfigRules_);
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            if (serviceIds_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getServiceIds());
            }
            if (includeEndpointIds_ != false) {
                size += com.google.protobuf.CodedOutputStream.computeBoolSize(2, includeEndpointIds_);
            }
            if (includeConstraints_ != false) {
                size += com.google.protobuf.CodedOutputStream.computeBoolSize(3, includeConstraints_);
            }
            if (includeConfigRules_ != false) {
                size += com.google.protobuf.CodedOutputStream.computeBoolSize(4, includeConfigRules_);
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.ServiceFilter)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.ServiceFilter other = (context.ContextOuterClass.ServiceFilter) obj;
            if (hasServiceIds() != other.hasServiceIds())
                return false;
            if (hasServiceIds()) {
                if (!getServiceIds().equals(other.getServiceIds()))
                    return false;
            }
            if (getIncludeEndpointIds() != other.getIncludeEndpointIds())
                return false;
            if (getIncludeConstraints() != other.getIncludeConstraints())
                return false;
            if (getIncludeConfigRules() != other.getIncludeConfigRules())
                return false;
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            if (hasServiceIds()) {
                hash = (37 * hash) + SERVICE_IDS_FIELD_NUMBER;
                hash = (53 * hash) + getServiceIds().hashCode();
            }
            hash = (37 * hash) + INCLUDE_ENDPOINT_IDS_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getIncludeEndpointIds());
            hash = (37 * hash) + INCLUDE_CONSTRAINTS_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getIncludeConstraints());
            hash = (37 * hash) + INCLUDE_CONFIG_RULES_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getIncludeConfigRules());
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.ServiceFilter parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.ServiceFilter parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.ServiceFilter parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.ServiceFilter parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.ServiceFilter parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.ServiceFilter parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.ServiceFilter parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.ServiceFilter parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.ServiceFilter parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.ServiceFilter parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.ServiceFilter parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.ServiceFilter parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.ServiceFilter prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code context.ServiceFilter}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.ServiceFilter)
        context.ContextOuterClass.ServiceFilterOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_ServiceFilter_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_ServiceFilter_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ServiceFilter.class, context.ContextOuterClass.ServiceFilter.Builder.class);
            }

            // Construct using context.ContextOuterClass.ServiceFilter.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                serviceIds_ = null;
                if (serviceIdsBuilder_ != null) {
                    serviceIdsBuilder_.dispose();
                    serviceIdsBuilder_ = null;
                }
                includeEndpointIds_ = false;
                includeConstraints_ = false;
                includeConfigRules_ = false;
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_ServiceFilter_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.ServiceFilter getDefaultInstanceForType() {
                return context.ContextOuterClass.ServiceFilter.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.ServiceFilter build() {
                context.ContextOuterClass.ServiceFilter result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.ServiceFilter buildPartial() {
                context.ContextOuterClass.ServiceFilter result = new context.ContextOuterClass.ServiceFilter(this);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartial0(context.ContextOuterClass.ServiceFilter result) {
                int from_bitField0_ = bitField0_;
                if (((from_bitField0_ & 0x00000001) != 0)) {
                    result.serviceIds_ = serviceIdsBuilder_ == null ? serviceIds_ : serviceIdsBuilder_.build();
                }
                if (((from_bitField0_ & 0x00000002) != 0)) {
                    result.includeEndpointIds_ = includeEndpointIds_;
                }
                if (((from_bitField0_ & 0x00000004) != 0)) {
                    result.includeConstraints_ = includeConstraints_;
                }
                if (((from_bitField0_ & 0x00000008) != 0)) {
                    result.includeConfigRules_ = includeConfigRules_;
                }
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.ServiceFilter) {
                    return mergeFrom((context.ContextOuterClass.ServiceFilter) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.ServiceFilter other) {
                if (other == context.ContextOuterClass.ServiceFilter.getDefaultInstance())
                    return this;
                if (other.hasServiceIds()) {
                    mergeServiceIds(other.getServiceIds());
                }
                if (other.getIncludeEndpointIds() != false) {
                    setIncludeEndpointIds(other.getIncludeEndpointIds());
                }
                if (other.getIncludeConstraints() != false) {
                    setIncludeConstraints(other.getIncludeConstraints());
                }
                if (other.getIncludeConfigRules() != false) {
                    setIncludeConfigRules(other.getIncludeConfigRules());
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 10:
                                {
                                    input.readMessage(getServiceIdsFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000001;
                                    break;
                                }
                            // case 10
                            case 16:
                                {
                                    includeEndpointIds_ = input.readBool();
                                    bitField0_ |= 0x00000002;
                                    break;
                                }
                            // case 16
                            case 24:
                                {
                                    includeConstraints_ = input.readBool();
                                    bitField0_ |= 0x00000004;
                                    break;
                                }
                            // case 24
                            case 32:
                                {
                                    includeConfigRules_ = input.readBool();
                                    bitField0_ |= 0x00000008;
                                    break;
                                }
                            // case 32
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private context.ContextOuterClass.ServiceIdList serviceIds_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ServiceIdList, context.ContextOuterClass.ServiceIdList.Builder, context.ContextOuterClass.ServiceIdListOrBuilder> serviceIdsBuilder_;

            /**
             * <code>.context.ServiceIdList service_ids = 1;</code>
             * @return Whether the serviceIds field is set.
             */
            public boolean hasServiceIds() {
                return ((bitField0_ & 0x00000001) != 0);
            }

            /**
             * <code>.context.ServiceIdList service_ids = 1;</code>
             * @return The serviceIds.
             */
            public context.ContextOuterClass.ServiceIdList getServiceIds() {
                if (serviceIdsBuilder_ == null) {
                    return serviceIds_ == null ? context.ContextOuterClass.ServiceIdList.getDefaultInstance() : serviceIds_;
                } else {
                    return serviceIdsBuilder_.getMessage();
                }
            }

            /**
             * <code>.context.ServiceIdList service_ids = 1;</code>
             */
            public Builder setServiceIds(context.ContextOuterClass.ServiceIdList value) {
                if (serviceIdsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    serviceIds_ = value;
                } else {
                    serviceIdsBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.ServiceIdList service_ids = 1;</code>
             */
            public Builder setServiceIds(context.ContextOuterClass.ServiceIdList.Builder builderForValue) {
                if (serviceIdsBuilder_ == null) {
                    serviceIds_ = builderForValue.build();
                } else {
                    serviceIdsBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.ServiceIdList service_ids = 1;</code>
             */
            public Builder mergeServiceIds(context.ContextOuterClass.ServiceIdList value) {
                if (serviceIdsBuilder_ == null) {
                    if (((bitField0_ & 0x00000001) != 0) && serviceIds_ != null && serviceIds_ != context.ContextOuterClass.ServiceIdList.getDefaultInstance()) {
                        getServiceIdsBuilder().mergeFrom(value);
                    } else {
                        serviceIds_ = value;
                    }
                } else {
                    serviceIdsBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.ServiceIdList service_ids = 1;</code>
             */
            public Builder clearServiceIds() {
                bitField0_ = (bitField0_ & ~0x00000001);
                serviceIds_ = null;
                if (serviceIdsBuilder_ != null) {
                    serviceIdsBuilder_.dispose();
                    serviceIdsBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.ServiceIdList service_ids = 1;</code>
             */
            public context.ContextOuterClass.ServiceIdList.Builder getServiceIdsBuilder() {
                bitField0_ |= 0x00000001;
                onChanged();
                return getServiceIdsFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.ServiceIdList service_ids = 1;</code>
             */
            public context.ContextOuterClass.ServiceIdListOrBuilder getServiceIdsOrBuilder() {
                if (serviceIdsBuilder_ != null) {
                    return serviceIdsBuilder_.getMessageOrBuilder();
                } else {
                    return serviceIds_ == null ? context.ContextOuterClass.ServiceIdList.getDefaultInstance() : serviceIds_;
                }
            }

            /**
             * <code>.context.ServiceIdList service_ids = 1;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ServiceIdList, context.ContextOuterClass.ServiceIdList.Builder, context.ContextOuterClass.ServiceIdListOrBuilder> getServiceIdsFieldBuilder() {
                if (serviceIdsBuilder_ == null) {
                    serviceIdsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ServiceIdList, context.ContextOuterClass.ServiceIdList.Builder, context.ContextOuterClass.ServiceIdListOrBuilder>(getServiceIds(), getParentForChildren(), isClean());
                    serviceIds_ = null;
                }
                return serviceIdsBuilder_;
            }

            private boolean includeEndpointIds_;

            /**
             * <code>bool include_endpoint_ids = 2;</code>
             * @return The includeEndpointIds.
             */
            @java.lang.Override
            public boolean getIncludeEndpointIds() {
                return includeEndpointIds_;
            }

            /**
             * <code>bool include_endpoint_ids = 2;</code>
             * @param value The includeEndpointIds to set.
             * @return This builder for chaining.
             */
            public Builder setIncludeEndpointIds(boolean value) {
                includeEndpointIds_ = value;
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>bool include_endpoint_ids = 2;</code>
             * @return This builder for chaining.
             */
            public Builder clearIncludeEndpointIds() {
                bitField0_ = (bitField0_ & ~0x00000002);
                includeEndpointIds_ = false;
                onChanged();
                return this;
            }

            private boolean includeConstraints_;

            /**
             * <code>bool include_constraints = 3;</code>
             * @return The includeConstraints.
             */
            @java.lang.Override
            public boolean getIncludeConstraints() {
                return includeConstraints_;
            }

            /**
             * <code>bool include_constraints = 3;</code>
             * @param value The includeConstraints to set.
             * @return This builder for chaining.
             */
            public Builder setIncludeConstraints(boolean value) {
                includeConstraints_ = value;
                bitField0_ |= 0x00000004;
                onChanged();
                return this;
            }

            /**
             * <code>bool include_constraints = 3;</code>
             * @return This builder for chaining.
             */
            public Builder clearIncludeConstraints() {
                bitField0_ = (bitField0_ & ~0x00000004);
                includeConstraints_ = false;
                onChanged();
                return this;
            }

            private boolean includeConfigRules_;

            /**
             * <code>bool include_config_rules = 4;</code>
             * @return The includeConfigRules.
             */
            @java.lang.Override
            public boolean getIncludeConfigRules() {
                return includeConfigRules_;
            }

            /**
             * <code>bool include_config_rules = 4;</code>
             * @param value The includeConfigRules to set.
             * @return This builder for chaining.
             */
            public Builder setIncludeConfigRules(boolean value) {
                includeConfigRules_ = value;
                bitField0_ |= 0x00000008;
                onChanged();
                return this;
            }

            /**
             * <code>bool include_config_rules = 4;</code>
             * @return This builder for chaining.
             */
            public Builder clearIncludeConfigRules() {
                bitField0_ = (bitField0_ & ~0x00000008);
                includeConfigRules_ = false;
                onChanged();
                return this;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.ServiceFilter)
        }

        // @@protoc_insertion_point(class_scope:context.ServiceFilter)
        private static final context.ContextOuterClass.ServiceFilter DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.ServiceFilter();
        }

        public static context.ContextOuterClass.ServiceFilter getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<ServiceFilter> PARSER = new com.google.protobuf.AbstractParser<ServiceFilter>() {

            @java.lang.Override
            public ServiceFilter parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<ServiceFilter> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<ServiceFilter> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.ServiceFilter getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface ServiceEventOrBuilder extends // @@protoc_insertion_point(interface_extends:context.ServiceEvent)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>.context.Event event = 1;</code>
         * @return Whether the event field is set.
         */
        boolean hasEvent();

        /**
         * <code>.context.Event event = 1;</code>
         * @return The event.
         */
        context.ContextOuterClass.Event getEvent();

        /**
         * <code>.context.Event event = 1;</code>
         */
        context.ContextOuterClass.EventOrBuilder getEventOrBuilder();

        /**
         * <code>.context.ServiceId service_id = 2;</code>
         * @return Whether the serviceId field is set.
         */
        boolean hasServiceId();

        /**
         * <code>.context.ServiceId service_id = 2;</code>
         * @return The serviceId.
         */
        context.ContextOuterClass.ServiceId getServiceId();

        /**
         * <code>.context.ServiceId service_id = 2;</code>
         */
        context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder();
    }

    /**
     * Protobuf type {@code context.ServiceEvent}
     */
    public static final class ServiceEvent extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.ServiceEvent)
    ServiceEventOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use ServiceEvent.newBuilder() to construct.
        private ServiceEvent(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private ServiceEvent() {
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new ServiceEvent();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_ServiceEvent_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_ServiceEvent_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ServiceEvent.class, context.ContextOuterClass.ServiceEvent.Builder.class);
        }

        public static final int EVENT_FIELD_NUMBER = 1;

        private context.ContextOuterClass.Event event_;

        /**
         * <code>.context.Event event = 1;</code>
         * @return Whether the event field is set.
         */
        @java.lang.Override
        public boolean hasEvent() {
            return event_ != null;
        }

        /**
         * <code>.context.Event event = 1;</code>
         * @return The event.
         */
        @java.lang.Override
        public context.ContextOuterClass.Event getEvent() {
            return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
        }

        /**
         * <code>.context.Event event = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
            return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
        }

        public static final int SERVICE_ID_FIELD_NUMBER = 2;

        private context.ContextOuterClass.ServiceId serviceId_;

        /**
         * <code>.context.ServiceId service_id = 2;</code>
         * @return Whether the serviceId field is set.
         */
        @java.lang.Override
        public boolean hasServiceId() {
            return serviceId_ != null;
        }

        /**
         * <code>.context.ServiceId service_id = 2;</code>
         * @return The serviceId.
         */
        @java.lang.Override
        public context.ContextOuterClass.ServiceId getServiceId() {
            return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
        }

        /**
         * <code>.context.ServiceId service_id = 2;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder() {
            return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            if (event_ != null) {
                output.writeMessage(1, getEvent());
            }
            if (serviceId_ != null) {
                output.writeMessage(2, getServiceId());
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            if (event_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getEvent());
            }
            if (serviceId_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getServiceId());
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.ServiceEvent)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.ServiceEvent other = (context.ContextOuterClass.ServiceEvent) obj;
            if (hasEvent() != other.hasEvent())
                return false;
            if (hasEvent()) {
                if (!getEvent().equals(other.getEvent()))
                    return false;
            }
            if (hasServiceId() != other.hasServiceId())
                return false;
            if (hasServiceId()) {
                if (!getServiceId().equals(other.getServiceId()))
                    return false;
            }
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            if (hasEvent()) {
                hash = (37 * hash) + EVENT_FIELD_NUMBER;
                hash = (53 * hash) + getEvent().hashCode();
            }
            if (hasServiceId()) {
                hash = (37 * hash) + SERVICE_ID_FIELD_NUMBER;
                hash = (53 * hash) + getServiceId().hashCode();
            }
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.ServiceEvent parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.ServiceEvent parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.ServiceEvent parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.ServiceEvent parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.ServiceEvent parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.ServiceEvent parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.ServiceEvent parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.ServiceEvent parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.ServiceEvent parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.ServiceEvent parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.ServiceEvent parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.ServiceEvent parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.ServiceEvent prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code context.ServiceEvent}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.ServiceEvent)
        context.ContextOuterClass.ServiceEventOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_ServiceEvent_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_ServiceEvent_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ServiceEvent.class, context.ContextOuterClass.ServiceEvent.Builder.class);
            }

            // Construct using context.ContextOuterClass.ServiceEvent.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                event_ = null;
                if (eventBuilder_ != null) {
                    eventBuilder_.dispose();
                    eventBuilder_ = null;
                }
                serviceId_ = null;
                if (serviceIdBuilder_ != null) {
                    serviceIdBuilder_.dispose();
                    serviceIdBuilder_ = null;
                }
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_ServiceEvent_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.ServiceEvent getDefaultInstanceForType() {
                return context.ContextOuterClass.ServiceEvent.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.ServiceEvent build() {
                context.ContextOuterClass.ServiceEvent result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.ServiceEvent buildPartial() {
                context.ContextOuterClass.ServiceEvent result = new context.ContextOuterClass.ServiceEvent(this);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartial0(context.ContextOuterClass.ServiceEvent result) {
                int from_bitField0_ = bitField0_;
                if (((from_bitField0_ & 0x00000001) != 0)) {
                    result.event_ = eventBuilder_ == null ? event_ : eventBuilder_.build();
                }
                if (((from_bitField0_ & 0x00000002) != 0)) {
                    result.serviceId_ = serviceIdBuilder_ == null ? serviceId_ : serviceIdBuilder_.build();
                }
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.ServiceEvent) {
                    return mergeFrom((context.ContextOuterClass.ServiceEvent) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.ServiceEvent other) {
                if (other == context.ContextOuterClass.ServiceEvent.getDefaultInstance())
                    return this;
                if (other.hasEvent()) {
                    mergeEvent(other.getEvent());
                }
                if (other.hasServiceId()) {
                    mergeServiceId(other.getServiceId());
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 10:
                                {
                                    input.readMessage(getEventFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000001;
                                    break;
                                }
                            // case 10
                            case 18:
                                {
                                    input.readMessage(getServiceIdFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000002;
                                    break;
                                }
                            // case 18
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private context.ContextOuterClass.Event event_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> eventBuilder_;

            /**
             * <code>.context.Event event = 1;</code>
             * @return Whether the event field is set.
             */
            public boolean hasEvent() {
                return ((bitField0_ & 0x00000001) != 0);
            }

            /**
             * <code>.context.Event event = 1;</code>
             * @return The event.
             */
            public context.ContextOuterClass.Event getEvent() {
                if (eventBuilder_ == null) {
                    return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
                } else {
                    return eventBuilder_.getMessage();
                }
            }

            /**
             * <code>.context.Event event = 1;</code>
             */
            public Builder setEvent(context.ContextOuterClass.Event value) {
                if (eventBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    event_ = value;
                } else {
                    eventBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.Event event = 1;</code>
             */
            public Builder setEvent(context.ContextOuterClass.Event.Builder builderForValue) {
                if (eventBuilder_ == null) {
                    event_ = builderForValue.build();
                } else {
                    eventBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.Event event = 1;</code>
             */
            public Builder mergeEvent(context.ContextOuterClass.Event value) {
                if (eventBuilder_ == null) {
                    if (((bitField0_ & 0x00000001) != 0) && event_ != null && event_ != context.ContextOuterClass.Event.getDefaultInstance()) {
                        getEventBuilder().mergeFrom(value);
                    } else {
                        event_ = value;
                    }
                } else {
                    eventBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.Event event = 1;</code>
             */
            public Builder clearEvent() {
                bitField0_ = (bitField0_ & ~0x00000001);
                event_ = null;
                if (eventBuilder_ != null) {
                    eventBuilder_.dispose();
                    eventBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.Event event = 1;</code>
             */
            public context.ContextOuterClass.Event.Builder getEventBuilder() {
                bitField0_ |= 0x00000001;
                onChanged();
                return getEventFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.Event event = 1;</code>
             */
            public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
                if (eventBuilder_ != null) {
                    return eventBuilder_.getMessageOrBuilder();
                } else {
                    return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
                }
            }

            /**
             * <code>.context.Event event = 1;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> getEventFieldBuilder() {
                if (eventBuilder_ == null) {
                    eventBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder>(getEvent(), getParentForChildren(), isClean());
                    event_ = null;
                }
                return eventBuilder_;
            }

            private context.ContextOuterClass.ServiceId serviceId_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> serviceIdBuilder_;

            /**
             * <code>.context.ServiceId service_id = 2;</code>
             * @return Whether the serviceId field is set.
             */
            public boolean hasServiceId() {
                return ((bitField0_ & 0x00000002) != 0);
            }

            /**
             * <code>.context.ServiceId service_id = 2;</code>
             * @return The serviceId.
             */
            public context.ContextOuterClass.ServiceId getServiceId() {
                if (serviceIdBuilder_ == null) {
                    return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
                } else {
                    return serviceIdBuilder_.getMessage();
                }
            }

            /**
             * <code>.context.ServiceId service_id = 2;</code>
             */
            public Builder setServiceId(context.ContextOuterClass.ServiceId value) {
                if (serviceIdBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    serviceId_ = value;
                } else {
                    serviceIdBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>.context.ServiceId service_id = 2;</code>
             */
            public Builder setServiceId(context.ContextOuterClass.ServiceId.Builder builderForValue) {
                if (serviceIdBuilder_ == null) {
                    serviceId_ = builderForValue.build();
                } else {
                    serviceIdBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>.context.ServiceId service_id = 2;</code>
             */
            public Builder mergeServiceId(context.ContextOuterClass.ServiceId value) {
                if (serviceIdBuilder_ == null) {
                    if (((bitField0_ & 0x00000002) != 0) && serviceId_ != null && serviceId_ != context.ContextOuterClass.ServiceId.getDefaultInstance()) {
                        getServiceIdBuilder().mergeFrom(value);
                    } else {
                        serviceId_ = value;
                    }
                } else {
                    serviceIdBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>.context.ServiceId service_id = 2;</code>
             */
            public Builder clearServiceId() {
                bitField0_ = (bitField0_ & ~0x00000002);
                serviceId_ = null;
                if (serviceIdBuilder_ != null) {
                    serviceIdBuilder_.dispose();
                    serviceIdBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.ServiceId service_id = 2;</code>
             */
            public context.ContextOuterClass.ServiceId.Builder getServiceIdBuilder() {
                bitField0_ |= 0x00000002;
                onChanged();
                return getServiceIdFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.ServiceId service_id = 2;</code>
             */
            public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder() {
                if (serviceIdBuilder_ != null) {
                    return serviceIdBuilder_.getMessageOrBuilder();
                } else {
                    return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
                }
            }

            /**
             * <code>.context.ServiceId service_id = 2;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> getServiceIdFieldBuilder() {
                if (serviceIdBuilder_ == null) {
                    serviceIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder>(getServiceId(), getParentForChildren(), isClean());
                    serviceId_ = null;
                }
                return serviceIdBuilder_;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.ServiceEvent)
        }

        // @@protoc_insertion_point(class_scope:context.ServiceEvent)
        private static final context.ContextOuterClass.ServiceEvent DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.ServiceEvent();
        }

        public static context.ContextOuterClass.ServiceEvent getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<ServiceEvent> PARSER = new com.google.protobuf.AbstractParser<ServiceEvent>() {

            @java.lang.Override
            public ServiceEvent parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<ServiceEvent> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<ServiceEvent> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.ServiceEvent getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface SliceIdOrBuilder extends // @@protoc_insertion_point(interface_extends:context.SliceId)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>.context.ContextId context_id = 1;</code>
         * @return Whether the contextId field is set.
         */
        boolean hasContextId();

        /**
         * <code>.context.ContextId context_id = 1;</code>
         * @return The contextId.
         */
        context.ContextOuterClass.ContextId getContextId();

        /**
         * <code>.context.ContextId context_id = 1;</code>
         */
        context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder();

        /**
         * <code>.context.Uuid slice_uuid = 2;</code>
         * @return Whether the sliceUuid field is set.
         */
        boolean hasSliceUuid();

        /**
         * <code>.context.Uuid slice_uuid = 2;</code>
         * @return The sliceUuid.
         */
        context.ContextOuterClass.Uuid getSliceUuid();

        /**
         * <code>.context.Uuid slice_uuid = 2;</code>
         */
        context.ContextOuterClass.UuidOrBuilder getSliceUuidOrBuilder();
    }

    /**
     * <pre>
     * ----- Slice ---------------------------------------------------------------------------------------------------------
     * </pre>
     *
     * Protobuf type {@code context.SliceId}
     */
    public static final class SliceId extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.SliceId)
    SliceIdOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use SliceId.newBuilder() to construct.
        private SliceId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private SliceId() {
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new SliceId();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_SliceId_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_SliceId_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.SliceId.class, context.ContextOuterClass.SliceId.Builder.class);
        }

        public static final int CONTEXT_ID_FIELD_NUMBER = 1;

        private context.ContextOuterClass.ContextId contextId_;

        /**
         * <code>.context.ContextId context_id = 1;</code>
         * @return Whether the contextId field is set.
         */
        @java.lang.Override
        public boolean hasContextId() {
            return contextId_ != null;
        }

        /**
         * <code>.context.ContextId context_id = 1;</code>
         * @return The contextId.
         */
        @java.lang.Override
        public context.ContextOuterClass.ContextId getContextId() {
            return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
        }

        /**
         * <code>.context.ContextId context_id = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
            return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
        }

        public static final int SLICE_UUID_FIELD_NUMBER = 2;

        private context.ContextOuterClass.Uuid sliceUuid_;

        /**
         * <code>.context.Uuid slice_uuid = 2;</code>
         * @return Whether the sliceUuid field is set.
         */
        @java.lang.Override
        public boolean hasSliceUuid() {
            return sliceUuid_ != null;
        }

        /**
         * <code>.context.Uuid slice_uuid = 2;</code>
         * @return The sliceUuid.
         */
        @java.lang.Override
        public context.ContextOuterClass.Uuid getSliceUuid() {
            return sliceUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : sliceUuid_;
        }

        /**
         * <code>.context.Uuid slice_uuid = 2;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.UuidOrBuilder getSliceUuidOrBuilder() {
            return sliceUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : sliceUuid_;
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            if (contextId_ != null) {
                output.writeMessage(1, getContextId());
            }
            if (sliceUuid_ != null) {
                output.writeMessage(2, getSliceUuid());
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            if (contextId_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getContextId());
            }
            if (sliceUuid_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getSliceUuid());
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.SliceId)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.SliceId other = (context.ContextOuterClass.SliceId) obj;
            if (hasContextId() != other.hasContextId())
                return false;
            if (hasContextId()) {
                if (!getContextId().equals(other.getContextId()))
                    return false;
            }
            if (hasSliceUuid() != other.hasSliceUuid())
                return false;
            if (hasSliceUuid()) {
                if (!getSliceUuid().equals(other.getSliceUuid()))
                    return false;
            }
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            if (hasContextId()) {
                hash = (37 * hash) + CONTEXT_ID_FIELD_NUMBER;
                hash = (53 * hash) + getContextId().hashCode();
            }
            if (hasSliceUuid()) {
                hash = (37 * hash) + SLICE_UUID_FIELD_NUMBER;
                hash = (53 * hash) + getSliceUuid().hashCode();
            }
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.SliceId parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.SliceId parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.SliceId parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.SliceId parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.SliceId parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.SliceId parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.SliceId parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.SliceId parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.SliceId parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.SliceId parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.SliceId parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.SliceId parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.SliceId prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * <pre>
         * ----- Slice ---------------------------------------------------------------------------------------------------------
         * </pre>
         *
         * Protobuf type {@code context.SliceId}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.SliceId)
        context.ContextOuterClass.SliceIdOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_SliceId_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_SliceId_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.SliceId.class, context.ContextOuterClass.SliceId.Builder.class);
            }

            // Construct using context.ContextOuterClass.SliceId.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                contextId_ = null;
                if (contextIdBuilder_ != null) {
                    contextIdBuilder_.dispose();
                    contextIdBuilder_ = null;
                }
                sliceUuid_ = null;
                if (sliceUuidBuilder_ != null) {
                    sliceUuidBuilder_.dispose();
                    sliceUuidBuilder_ = null;
                }
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_SliceId_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.SliceId getDefaultInstanceForType() {
                return context.ContextOuterClass.SliceId.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.SliceId build() {
                context.ContextOuterClass.SliceId result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.SliceId buildPartial() {
                context.ContextOuterClass.SliceId result = new context.ContextOuterClass.SliceId(this);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartial0(context.ContextOuterClass.SliceId result) {
                int from_bitField0_ = bitField0_;
                if (((from_bitField0_ & 0x00000001) != 0)) {
                    result.contextId_ = contextIdBuilder_ == null ? contextId_ : contextIdBuilder_.build();
                }
                if (((from_bitField0_ & 0x00000002) != 0)) {
                    result.sliceUuid_ = sliceUuidBuilder_ == null ? sliceUuid_ : sliceUuidBuilder_.build();
                }
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.SliceId) {
                    return mergeFrom((context.ContextOuterClass.SliceId) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.SliceId other) {
                if (other == context.ContextOuterClass.SliceId.getDefaultInstance())
                    return this;
                if (other.hasContextId()) {
                    mergeContextId(other.getContextId());
                }
                if (other.hasSliceUuid()) {
                    mergeSliceUuid(other.getSliceUuid());
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 10:
                                {
                                    input.readMessage(getContextIdFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000001;
                                    break;
                                }
                            // case 10
                            case 18:
                                {
                                    input.readMessage(getSliceUuidFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000002;
                                    break;
                                }
                            // case 18
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private context.ContextOuterClass.ContextId contextId_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> contextIdBuilder_;

            /**
             * <code>.context.ContextId context_id = 1;</code>
             * @return Whether the contextId field is set.
             */
            public boolean hasContextId() {
                return ((bitField0_ & 0x00000001) != 0);
            }

            /**
             * <code>.context.ContextId context_id = 1;</code>
             * @return The contextId.
             */
            public context.ContextOuterClass.ContextId getContextId() {
                if (contextIdBuilder_ == null) {
                    return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
                } else {
                    return contextIdBuilder_.getMessage();
                }
            }

            /**
             * <code>.context.ContextId context_id = 1;</code>
             */
            public Builder setContextId(context.ContextOuterClass.ContextId value) {
                if (contextIdBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    contextId_ = value;
                } else {
                    contextIdBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.ContextId context_id = 1;</code>
             */
            public Builder setContextId(context.ContextOuterClass.ContextId.Builder builderForValue) {
                if (contextIdBuilder_ == null) {
                    contextId_ = builderForValue.build();
                } else {
                    contextIdBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.ContextId context_id = 1;</code>
             */
            public Builder mergeContextId(context.ContextOuterClass.ContextId value) {
                if (contextIdBuilder_ == null) {
                    if (((bitField0_ & 0x00000001) != 0) && contextId_ != null && contextId_ != context.ContextOuterClass.ContextId.getDefaultInstance()) {
                        getContextIdBuilder().mergeFrom(value);
                    } else {
                        contextId_ = value;
                    }
                } else {
                    contextIdBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.ContextId context_id = 1;</code>
             */
            public Builder clearContextId() {
                bitField0_ = (bitField0_ & ~0x00000001);
                contextId_ = null;
                if (contextIdBuilder_ != null) {
                    contextIdBuilder_.dispose();
                    contextIdBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.ContextId context_id = 1;</code>
             */
            public context.ContextOuterClass.ContextId.Builder getContextIdBuilder() {
                bitField0_ |= 0x00000001;
                onChanged();
                return getContextIdFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.ContextId context_id = 1;</code>
             */
            public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
                if (contextIdBuilder_ != null) {
                    return contextIdBuilder_.getMessageOrBuilder();
                } else {
                    return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
                }
            }

            /**
             * <code>.context.ContextId context_id = 1;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> getContextIdFieldBuilder() {
                if (contextIdBuilder_ == null) {
                    contextIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder>(getContextId(), getParentForChildren(), isClean());
                    contextId_ = null;
                }
                return contextIdBuilder_;
            }

            private context.ContextOuterClass.Uuid sliceUuid_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> sliceUuidBuilder_;

            /**
             * <code>.context.Uuid slice_uuid = 2;</code>
             * @return Whether the sliceUuid field is set.
             */
            public boolean hasSliceUuid() {
                return ((bitField0_ & 0x00000002) != 0);
            }

            /**
             * <code>.context.Uuid slice_uuid = 2;</code>
             * @return The sliceUuid.
             */
            public context.ContextOuterClass.Uuid getSliceUuid() {
                if (sliceUuidBuilder_ == null) {
                    return sliceUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : sliceUuid_;
                } else {
                    return sliceUuidBuilder_.getMessage();
                }
            }

            /**
             * <code>.context.Uuid slice_uuid = 2;</code>
             */
            public Builder setSliceUuid(context.ContextOuterClass.Uuid value) {
                if (sliceUuidBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    sliceUuid_ = value;
                } else {
                    sliceUuidBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>.context.Uuid slice_uuid = 2;</code>
             */
            public Builder setSliceUuid(context.ContextOuterClass.Uuid.Builder builderForValue) {
                if (sliceUuidBuilder_ == null) {
                    sliceUuid_ = builderForValue.build();
                } else {
                    sliceUuidBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>.context.Uuid slice_uuid = 2;</code>
             */
            public Builder mergeSliceUuid(context.ContextOuterClass.Uuid value) {
                if (sliceUuidBuilder_ == null) {
                    if (((bitField0_ & 0x00000002) != 0) && sliceUuid_ != null && sliceUuid_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
                        getSliceUuidBuilder().mergeFrom(value);
                    } else {
                        sliceUuid_ = value;
                    }
                } else {
                    sliceUuidBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>.context.Uuid slice_uuid = 2;</code>
             */
            public Builder clearSliceUuid() {
                bitField0_ = (bitField0_ & ~0x00000002);
                sliceUuid_ = null;
                if (sliceUuidBuilder_ != null) {
                    sliceUuidBuilder_.dispose();
                    sliceUuidBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.Uuid slice_uuid = 2;</code>
             */
            public context.ContextOuterClass.Uuid.Builder getSliceUuidBuilder() {
                bitField0_ |= 0x00000002;
                onChanged();
                return getSliceUuidFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.Uuid slice_uuid = 2;</code>
             */
            public context.ContextOuterClass.UuidOrBuilder getSliceUuidOrBuilder() {
                if (sliceUuidBuilder_ != null) {
                    return sliceUuidBuilder_.getMessageOrBuilder();
                } else {
                    return sliceUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : sliceUuid_;
                }
            }

            /**
             * <code>.context.Uuid slice_uuid = 2;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> getSliceUuidFieldBuilder() {
                if (sliceUuidBuilder_ == null) {
                    sliceUuidBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder>(getSliceUuid(), getParentForChildren(), isClean());
                    sliceUuid_ = null;
                }
                return sliceUuidBuilder_;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.SliceId)
        }

        // @@protoc_insertion_point(class_scope:context.SliceId)
        private static final context.ContextOuterClass.SliceId DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.SliceId();
        }

        public static context.ContextOuterClass.SliceId getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<SliceId> PARSER = new com.google.protobuf.AbstractParser<SliceId>() {

            @java.lang.Override
            public SliceId parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<SliceId> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<SliceId> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.SliceId getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface SliceOrBuilder extends // @@protoc_insertion_point(interface_extends:context.Slice)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>.context.SliceId slice_id = 1;</code>
         * @return Whether the sliceId field is set.
         */
        boolean hasSliceId();

        /**
         * <code>.context.SliceId slice_id = 1;</code>
         * @return The sliceId.
         */
        context.ContextOuterClass.SliceId getSliceId();

        /**
         * <code>.context.SliceId slice_id = 1;</code>
         */
        context.ContextOuterClass.SliceIdOrBuilder getSliceIdOrBuilder();

        /**
         * <code>string name = 2;</code>
         * @return The name.
         */
        java.lang.String getName();

        /**
         * <code>string name = 2;</code>
         * @return The bytes for name.
         */
        com.google.protobuf.ByteString getNameBytes();

        /**
         * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
         */
        java.util.List<context.ContextOuterClass.EndPointId> getSliceEndpointIdsList();

        /**
         * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
         */
        context.ContextOuterClass.EndPointId getSliceEndpointIds(int index);

        /**
         * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
         */
        int getSliceEndpointIdsCount();

        /**
         * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
         */
        java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> getSliceEndpointIdsOrBuilderList();

        /**
         * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
         */
        context.ContextOuterClass.EndPointIdOrBuilder getSliceEndpointIdsOrBuilder(int index);

        /**
         * <code>repeated .context.Constraint slice_constraints = 4;</code>
         */
        java.util.List<context.ContextOuterClass.Constraint> getSliceConstraintsList();

        /**
         * <code>repeated .context.Constraint slice_constraints = 4;</code>
         */
        context.ContextOuterClass.Constraint getSliceConstraints(int index);

        /**
         * <code>repeated .context.Constraint slice_constraints = 4;</code>
         */
        int getSliceConstraintsCount();

        /**
         * <code>repeated .context.Constraint slice_constraints = 4;</code>
         */
        java.util.List<? extends context.ContextOuterClass.ConstraintOrBuilder> getSliceConstraintsOrBuilderList();

        /**
         * <code>repeated .context.Constraint slice_constraints = 4;</code>
         */
        context.ContextOuterClass.ConstraintOrBuilder getSliceConstraintsOrBuilder(int index);

        /**
         * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
         */
        java.util.List<context.ContextOuterClass.ServiceId> getSliceServiceIdsList();

        /**
         * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
         */
        context.ContextOuterClass.ServiceId getSliceServiceIds(int index);

        /**
         * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
         */
        int getSliceServiceIdsCount();

        /**
         * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
         */
        java.util.List<? extends context.ContextOuterClass.ServiceIdOrBuilder> getSliceServiceIdsOrBuilderList();

        /**
         * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
         */
        context.ContextOuterClass.ServiceIdOrBuilder getSliceServiceIdsOrBuilder(int index);

        /**
         * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
         */
        java.util.List<context.ContextOuterClass.SliceId> getSliceSubsliceIdsList();

        /**
         * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
         */
        context.ContextOuterClass.SliceId getSliceSubsliceIds(int index);

        /**
         * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
         */
        int getSliceSubsliceIdsCount();

        /**
         * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
         */
        java.util.List<? extends context.ContextOuterClass.SliceIdOrBuilder> getSliceSubsliceIdsOrBuilderList();

        /**
         * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
         */
        context.ContextOuterClass.SliceIdOrBuilder getSliceSubsliceIdsOrBuilder(int index);

        /**
         * <code>.context.SliceStatus slice_status = 7;</code>
         * @return Whether the sliceStatus field is set.
         */
        boolean hasSliceStatus();

        /**
         * <code>.context.SliceStatus slice_status = 7;</code>
         * @return The sliceStatus.
         */
        context.ContextOuterClass.SliceStatus getSliceStatus();

        /**
         * <code>.context.SliceStatus slice_status = 7;</code>
         */
        context.ContextOuterClass.SliceStatusOrBuilder getSliceStatusOrBuilder();

        /**
         * <code>.context.SliceConfig slice_config = 8;</code>
         * @return Whether the sliceConfig field is set.
         */
        boolean hasSliceConfig();

        /**
         * <code>.context.SliceConfig slice_config = 8;</code>
         * @return The sliceConfig.
         */
        context.ContextOuterClass.SliceConfig getSliceConfig();

        /**
         * <code>.context.SliceConfig slice_config = 8;</code>
         */
        context.ContextOuterClass.SliceConfigOrBuilder getSliceConfigOrBuilder();

        /**
         * <code>.context.SliceOwner slice_owner = 9;</code>
         * @return Whether the sliceOwner field is set.
         */
        boolean hasSliceOwner();

        /**
         * <code>.context.SliceOwner slice_owner = 9;</code>
         * @return The sliceOwner.
         */
        context.ContextOuterClass.SliceOwner getSliceOwner();

        /**
         * <code>.context.SliceOwner slice_owner = 9;</code>
         */
        context.ContextOuterClass.SliceOwnerOrBuilder getSliceOwnerOrBuilder();

        /**
         * <code>.context.Timestamp timestamp = 10;</code>
         * @return Whether the timestamp field is set.
         */
        boolean hasTimestamp();

        /**
         * <code>.context.Timestamp timestamp = 10;</code>
         * @return The timestamp.
         */
        context.ContextOuterClass.Timestamp getTimestamp();

        /**
         * <code>.context.Timestamp timestamp = 10;</code>
         */
        context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder();
    }

    /**
     * Protobuf type {@code context.Slice}
     */
    public static final class Slice extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.Slice)
    SliceOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use Slice.newBuilder() to construct.
        private Slice(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private Slice() {
            name_ = "";
            sliceEndpointIds_ = java.util.Collections.emptyList();
            sliceConstraints_ = java.util.Collections.emptyList();
            sliceServiceIds_ = java.util.Collections.emptyList();
            sliceSubsliceIds_ = java.util.Collections.emptyList();
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new Slice();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_Slice_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_Slice_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Slice.class, context.ContextOuterClass.Slice.Builder.class);
        }

        public static final int SLICE_ID_FIELD_NUMBER = 1;

        private context.ContextOuterClass.SliceId sliceId_;

        /**
         * <code>.context.SliceId slice_id = 1;</code>
         * @return Whether the sliceId field is set.
         */
        @java.lang.Override
        public boolean hasSliceId() {
            return sliceId_ != null;
        }

        /**
         * <code>.context.SliceId slice_id = 1;</code>
         * @return The sliceId.
         */
        @java.lang.Override
        public context.ContextOuterClass.SliceId getSliceId() {
            return sliceId_ == null ? context.ContextOuterClass.SliceId.getDefaultInstance() : sliceId_;
        }

        /**
         * <code>.context.SliceId slice_id = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.SliceIdOrBuilder getSliceIdOrBuilder() {
            return sliceId_ == null ? context.ContextOuterClass.SliceId.getDefaultInstance() : sliceId_;
        }

        public static final int NAME_FIELD_NUMBER = 2;

        @SuppressWarnings("serial")
        private volatile java.lang.Object name_ = "";

        /**
         * <code>string name = 2;</code>
         * @return The name.
         */
        @java.lang.Override
        public java.lang.String getName() {
            java.lang.Object ref = name_;
            if (ref instanceof java.lang.String) {
                return (java.lang.String) ref;
            } else {
                com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                java.lang.String s = bs.toStringUtf8();
                name_ = s;
                return s;
            }
        }

        /**
         * <code>string name = 2;</code>
         * @return The bytes for name.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString getNameBytes() {
            java.lang.Object ref = name_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                name_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int SLICE_ENDPOINT_IDS_FIELD_NUMBER = 3;

        @SuppressWarnings("serial")
        private java.util.List<context.ContextOuterClass.EndPointId> sliceEndpointIds_;

        /**
         * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
         */
        @java.lang.Override
        public java.util.List<context.ContextOuterClass.EndPointId> getSliceEndpointIdsList() {
            return sliceEndpointIds_;
        }

        /**
         * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
         */
        @java.lang.Override
        public java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> getSliceEndpointIdsOrBuilderList() {
            return sliceEndpointIds_;
        }

        /**
         * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
         */
        @java.lang.Override
        public int getSliceEndpointIdsCount() {
            return sliceEndpointIds_.size();
        }

        /**
         * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.EndPointId getSliceEndpointIds(int index) {
            return sliceEndpointIds_.get(index);
        }

        /**
         * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.EndPointIdOrBuilder getSliceEndpointIdsOrBuilder(int index) {
            return sliceEndpointIds_.get(index);
        }

        public static final int SLICE_CONSTRAINTS_FIELD_NUMBER = 4;

        @SuppressWarnings("serial")
        private java.util.List<context.ContextOuterClass.Constraint> sliceConstraints_;

        /**
         * <code>repeated .context.Constraint slice_constraints = 4;</code>
         */
        @java.lang.Override
        public java.util.List<context.ContextOuterClass.Constraint> getSliceConstraintsList() {
            return sliceConstraints_;
        }

        /**
         * <code>repeated .context.Constraint slice_constraints = 4;</code>
         */
        @java.lang.Override
        public java.util.List<? extends context.ContextOuterClass.ConstraintOrBuilder> getSliceConstraintsOrBuilderList() {
            return sliceConstraints_;
        }

        /**
         * <code>repeated .context.Constraint slice_constraints = 4;</code>
         */
        @java.lang.Override
        public int getSliceConstraintsCount() {
            return sliceConstraints_.size();
        }

        /**
         * <code>repeated .context.Constraint slice_constraints = 4;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.Constraint getSliceConstraints(int index) {
            return sliceConstraints_.get(index);
        }

        /**
         * <code>repeated .context.Constraint slice_constraints = 4;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.ConstraintOrBuilder getSliceConstraintsOrBuilder(int index) {
            return sliceConstraints_.get(index);
        }

        public static final int SLICE_SERVICE_IDS_FIELD_NUMBER = 5;

        @SuppressWarnings("serial")
        private java.util.List<context.ContextOuterClass.ServiceId> sliceServiceIds_;

        /**
         * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
         */
        @java.lang.Override
        public java.util.List<context.ContextOuterClass.ServiceId> getSliceServiceIdsList() {
            return sliceServiceIds_;
        }

        /**
         * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
         */
        @java.lang.Override
        public java.util.List<? extends context.ContextOuterClass.ServiceIdOrBuilder> getSliceServiceIdsOrBuilderList() {
            return sliceServiceIds_;
        }

        /**
         * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
         */
        @java.lang.Override
        public int getSliceServiceIdsCount() {
            return sliceServiceIds_.size();
        }

        /**
         * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.ServiceId getSliceServiceIds(int index) {
            return sliceServiceIds_.get(index);
        }

        /**
         * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.ServiceIdOrBuilder getSliceServiceIdsOrBuilder(int index) {
            return sliceServiceIds_.get(index);
        }

        public static final int SLICE_SUBSLICE_IDS_FIELD_NUMBER = 6;

        @SuppressWarnings("serial")
        private java.util.List<context.ContextOuterClass.SliceId> sliceSubsliceIds_;

        /**
         * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
         */
        @java.lang.Override
        public java.util.List<context.ContextOuterClass.SliceId> getSliceSubsliceIdsList() {
            return sliceSubsliceIds_;
        }

        /**
         * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
         */
        @java.lang.Override
        public java.util.List<? extends context.ContextOuterClass.SliceIdOrBuilder> getSliceSubsliceIdsOrBuilderList() {
            return sliceSubsliceIds_;
        }

        /**
         * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
         */
        @java.lang.Override
        public int getSliceSubsliceIdsCount() {
            return sliceSubsliceIds_.size();
        }

        /**
         * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.SliceId getSliceSubsliceIds(int index) {
            return sliceSubsliceIds_.get(index);
        }

        /**
         * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.SliceIdOrBuilder getSliceSubsliceIdsOrBuilder(int index) {
            return sliceSubsliceIds_.get(index);
        }

        public static final int SLICE_STATUS_FIELD_NUMBER = 7;

        private context.ContextOuterClass.SliceStatus sliceStatus_;

        /**
         * <code>.context.SliceStatus slice_status = 7;</code>
         * @return Whether the sliceStatus field is set.
         */
        @java.lang.Override
        public boolean hasSliceStatus() {
            return sliceStatus_ != null;
        }

        /**
         * <code>.context.SliceStatus slice_status = 7;</code>
         * @return The sliceStatus.
         */
        @java.lang.Override
        public context.ContextOuterClass.SliceStatus getSliceStatus() {
            return sliceStatus_ == null ? context.ContextOuterClass.SliceStatus.getDefaultInstance() : sliceStatus_;
        }

        /**
         * <code>.context.SliceStatus slice_status = 7;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.SliceStatusOrBuilder getSliceStatusOrBuilder() {
            return sliceStatus_ == null ? context.ContextOuterClass.SliceStatus.getDefaultInstance() : sliceStatus_;
        }

        public static final int SLICE_CONFIG_FIELD_NUMBER = 8;

        private context.ContextOuterClass.SliceConfig sliceConfig_;

        /**
         * <code>.context.SliceConfig slice_config = 8;</code>
         * @return Whether the sliceConfig field is set.
         */
        @java.lang.Override
        public boolean hasSliceConfig() {
            return sliceConfig_ != null;
        }

        /**
         * <code>.context.SliceConfig slice_config = 8;</code>
         * @return The sliceConfig.
         */
        @java.lang.Override
        public context.ContextOuterClass.SliceConfig getSliceConfig() {
            return sliceConfig_ == null ? context.ContextOuterClass.SliceConfig.getDefaultInstance() : sliceConfig_;
        }

        /**
         * <code>.context.SliceConfig slice_config = 8;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.SliceConfigOrBuilder getSliceConfigOrBuilder() {
            return sliceConfig_ == null ? context.ContextOuterClass.SliceConfig.getDefaultInstance() : sliceConfig_;
        }

        public static final int SLICE_OWNER_FIELD_NUMBER = 9;

        private context.ContextOuterClass.SliceOwner sliceOwner_;

        /**
         * <code>.context.SliceOwner slice_owner = 9;</code>
         * @return Whether the sliceOwner field is set.
         */
        @java.lang.Override
        public boolean hasSliceOwner() {
            return sliceOwner_ != null;
        }

        /**
         * <code>.context.SliceOwner slice_owner = 9;</code>
         * @return The sliceOwner.
         */
        @java.lang.Override
        public context.ContextOuterClass.SliceOwner getSliceOwner() {
            return sliceOwner_ == null ? context.ContextOuterClass.SliceOwner.getDefaultInstance() : sliceOwner_;
        }

        /**
         * <code>.context.SliceOwner slice_owner = 9;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.SliceOwnerOrBuilder getSliceOwnerOrBuilder() {
            return sliceOwner_ == null ? context.ContextOuterClass.SliceOwner.getDefaultInstance() : sliceOwner_;
        }

        public static final int TIMESTAMP_FIELD_NUMBER = 10;

        private context.ContextOuterClass.Timestamp timestamp_;

        /**
         * <code>.context.Timestamp timestamp = 10;</code>
         * @return Whether the timestamp field is set.
         */
        @java.lang.Override
        public boolean hasTimestamp() {
            return timestamp_ != null;
        }

        /**
         * <code>.context.Timestamp timestamp = 10;</code>
         * @return The timestamp.
         */
        @java.lang.Override
        public context.ContextOuterClass.Timestamp getTimestamp() {
            return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
        }

        /**
         * <code>.context.Timestamp timestamp = 10;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder() {
            return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            if (sliceId_ != null) {
                output.writeMessage(1, getSliceId());
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
            }
            for (int i = 0; i < sliceEndpointIds_.size(); i++) {
                output.writeMessage(3, sliceEndpointIds_.get(i));
            }
            for (int i = 0; i < sliceConstraints_.size(); i++) {
                output.writeMessage(4, sliceConstraints_.get(i));
            }
            for (int i = 0; i < sliceServiceIds_.size(); i++) {
                output.writeMessage(5, sliceServiceIds_.get(i));
            }
            for (int i = 0; i < sliceSubsliceIds_.size(); i++) {
                output.writeMessage(6, sliceSubsliceIds_.get(i));
            }
            if (sliceStatus_ != null) {
                output.writeMessage(7, getSliceStatus());
            }
            if (sliceConfig_ != null) {
                output.writeMessage(8, getSliceConfig());
            }
            if (sliceOwner_ != null) {
                output.writeMessage(9, getSliceOwner());
            }
            if (timestamp_ != null) {
                output.writeMessage(10, getTimestamp());
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            if (sliceId_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getSliceId());
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
            }
            for (int i = 0; i < sliceEndpointIds_.size(); i++) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, sliceEndpointIds_.get(i));
            }
            for (int i = 0; i < sliceConstraints_.size(); i++) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, sliceConstraints_.get(i));
            }
            for (int i = 0; i < sliceServiceIds_.size(); i++) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(5, sliceServiceIds_.get(i));
            }
            for (int i = 0; i < sliceSubsliceIds_.size(); i++) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(6, sliceSubsliceIds_.get(i));
            }
            if (sliceStatus_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(7, getSliceStatus());
            }
            if (sliceConfig_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(8, getSliceConfig());
            }
            if (sliceOwner_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(9, getSliceOwner());
            }
            if (timestamp_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(10, getTimestamp());
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.Slice)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.Slice other = (context.ContextOuterClass.Slice) obj;
            if (hasSliceId() != other.hasSliceId())
                return false;
            if (hasSliceId()) {
                if (!getSliceId().equals(other.getSliceId()))
                    return false;
            }
            if (!getName().equals(other.getName()))
                return false;
            if (!getSliceEndpointIdsList().equals(other.getSliceEndpointIdsList()))
                return false;
            if (!getSliceConstraintsList().equals(other.getSliceConstraintsList()))
                return false;
            if (!getSliceServiceIdsList().equals(other.getSliceServiceIdsList()))
                return false;
            if (!getSliceSubsliceIdsList().equals(other.getSliceSubsliceIdsList()))
                return false;
            if (hasSliceStatus() != other.hasSliceStatus())
                return false;
            if (hasSliceStatus()) {
                if (!getSliceStatus().equals(other.getSliceStatus()))
                    return false;
            }
            if (hasSliceConfig() != other.hasSliceConfig())
                return false;
            if (hasSliceConfig()) {
                if (!getSliceConfig().equals(other.getSliceConfig()))
                    return false;
            }
            if (hasSliceOwner() != other.hasSliceOwner())
                return false;
            if (hasSliceOwner()) {
                if (!getSliceOwner().equals(other.getSliceOwner()))
                    return false;
            }
            if (hasTimestamp() != other.hasTimestamp())
                return false;
            if (hasTimestamp()) {
                if (!getTimestamp().equals(other.getTimestamp()))
                    return false;
            }
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            if (hasSliceId()) {
                hash = (37 * hash) + SLICE_ID_FIELD_NUMBER;
                hash = (53 * hash) + getSliceId().hashCode();
            }
            hash = (37 * hash) + NAME_FIELD_NUMBER;
            hash = (53 * hash) + getName().hashCode();
            if (getSliceEndpointIdsCount() > 0) {
                hash = (37 * hash) + SLICE_ENDPOINT_IDS_FIELD_NUMBER;
                hash = (53 * hash) + getSliceEndpointIdsList().hashCode();
            }
            if (getSliceConstraintsCount() > 0) {
                hash = (37 * hash) + SLICE_CONSTRAINTS_FIELD_NUMBER;
                hash = (53 * hash) + getSliceConstraintsList().hashCode();
            }
            if (getSliceServiceIdsCount() > 0) {
                hash = (37 * hash) + SLICE_SERVICE_IDS_FIELD_NUMBER;
                hash = (53 * hash) + getSliceServiceIdsList().hashCode();
            }
            if (getSliceSubsliceIdsCount() > 0) {
                hash = (37 * hash) + SLICE_SUBSLICE_IDS_FIELD_NUMBER;
                hash = (53 * hash) + getSliceSubsliceIdsList().hashCode();
            }
            if (hasSliceStatus()) {
                hash = (37 * hash) + SLICE_STATUS_FIELD_NUMBER;
                hash = (53 * hash) + getSliceStatus().hashCode();
            }
            if (hasSliceConfig()) {
                hash = (37 * hash) + SLICE_CONFIG_FIELD_NUMBER;
                hash = (53 * hash) + getSliceConfig().hashCode();
            }
            if (hasSliceOwner()) {
                hash = (37 * hash) + SLICE_OWNER_FIELD_NUMBER;
                hash = (53 * hash) + getSliceOwner().hashCode();
            }
            if (hasTimestamp()) {
                hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER;
                hash = (53 * hash) + getTimestamp().hashCode();
            }
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.Slice parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.Slice parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.Slice parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.Slice parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.Slice parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.Slice parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.Slice parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.Slice parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.Slice parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.Slice parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.Slice parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.Slice parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.Slice prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code context.Slice}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.Slice)
        context.ContextOuterClass.SliceOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_Slice_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_Slice_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Slice.class, context.ContextOuterClass.Slice.Builder.class);
            }

            // Construct using context.ContextOuterClass.Slice.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                sliceId_ = null;
                if (sliceIdBuilder_ != null) {
                    sliceIdBuilder_.dispose();
                    sliceIdBuilder_ = null;
                }
                name_ = "";
                if (sliceEndpointIdsBuilder_ == null) {
                    sliceEndpointIds_ = java.util.Collections.emptyList();
                } else {
                    sliceEndpointIds_ = null;
                    sliceEndpointIdsBuilder_.clear();
                }
                bitField0_ = (bitField0_ & ~0x00000004);
                if (sliceConstraintsBuilder_ == null) {
                    sliceConstraints_ = java.util.Collections.emptyList();
                } else {
                    sliceConstraints_ = null;
                    sliceConstraintsBuilder_.clear();
                }
                bitField0_ = (bitField0_ & ~0x00000008);
                if (sliceServiceIdsBuilder_ == null) {
                    sliceServiceIds_ = java.util.Collections.emptyList();
                } else {
                    sliceServiceIds_ = null;
                    sliceServiceIdsBuilder_.clear();
                }
                bitField0_ = (bitField0_ & ~0x00000010);
                if (sliceSubsliceIdsBuilder_ == null) {
                    sliceSubsliceIds_ = java.util.Collections.emptyList();
                } else {
                    sliceSubsliceIds_ = null;
                    sliceSubsliceIdsBuilder_.clear();
                }
                bitField0_ = (bitField0_ & ~0x00000020);
                sliceStatus_ = null;
                if (sliceStatusBuilder_ != null) {
                    sliceStatusBuilder_.dispose();
                    sliceStatusBuilder_ = null;
                }
                sliceConfig_ = null;
                if (sliceConfigBuilder_ != null) {
                    sliceConfigBuilder_.dispose();
                    sliceConfigBuilder_ = null;
                }
                sliceOwner_ = null;
                if (sliceOwnerBuilder_ != null) {
                    sliceOwnerBuilder_.dispose();
                    sliceOwnerBuilder_ = null;
                }
                timestamp_ = null;
                if (timestampBuilder_ != null) {
                    timestampBuilder_.dispose();
                    timestampBuilder_ = null;
                }
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_Slice_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.Slice getDefaultInstanceForType() {
                return context.ContextOuterClass.Slice.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.Slice build() {
                context.ContextOuterClass.Slice result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.Slice buildPartial() {
                context.ContextOuterClass.Slice result = new context.ContextOuterClass.Slice(this);
                buildPartialRepeatedFields(result);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartialRepeatedFields(context.ContextOuterClass.Slice result) {
                if (sliceEndpointIdsBuilder_ == null) {
                    if (((bitField0_ & 0x00000004) != 0)) {
                        sliceEndpointIds_ = java.util.Collections.unmodifiableList(sliceEndpointIds_);
                        bitField0_ = (bitField0_ & ~0x00000004);
                    }
                    result.sliceEndpointIds_ = sliceEndpointIds_;
                } else {
                    result.sliceEndpointIds_ = sliceEndpointIdsBuilder_.build();
                }
                if (sliceConstraintsBuilder_ == null) {
                    if (((bitField0_ & 0x00000008) != 0)) {
                        sliceConstraints_ = java.util.Collections.unmodifiableList(sliceConstraints_);
                        bitField0_ = (bitField0_ & ~0x00000008);
                    }
                    result.sliceConstraints_ = sliceConstraints_;
                } else {
                    result.sliceConstraints_ = sliceConstraintsBuilder_.build();
                }
                if (sliceServiceIdsBuilder_ == null) {
                    if (((bitField0_ & 0x00000010) != 0)) {
                        sliceServiceIds_ = java.util.Collections.unmodifiableList(sliceServiceIds_);
                        bitField0_ = (bitField0_ & ~0x00000010);
                    }
                    result.sliceServiceIds_ = sliceServiceIds_;
                } else {
                    result.sliceServiceIds_ = sliceServiceIdsBuilder_.build();
                }
                if (sliceSubsliceIdsBuilder_ == null) {
                    if (((bitField0_ & 0x00000020) != 0)) {
                        sliceSubsliceIds_ = java.util.Collections.unmodifiableList(sliceSubsliceIds_);
                        bitField0_ = (bitField0_ & ~0x00000020);
                    }
                    result.sliceSubsliceIds_ = sliceSubsliceIds_;
                } else {
                    result.sliceSubsliceIds_ = sliceSubsliceIdsBuilder_.build();
                }
            }

            private void buildPartial0(context.ContextOuterClass.Slice result) {
                int from_bitField0_ = bitField0_;
                if (((from_bitField0_ & 0x00000001) != 0)) {
                    result.sliceId_ = sliceIdBuilder_ == null ? sliceId_ : sliceIdBuilder_.build();
                }
                if (((from_bitField0_ & 0x00000002) != 0)) {
                    result.name_ = name_;
                }
                if (((from_bitField0_ & 0x00000040) != 0)) {
                    result.sliceStatus_ = sliceStatusBuilder_ == null ? sliceStatus_ : sliceStatusBuilder_.build();
                }
                if (((from_bitField0_ & 0x00000080) != 0)) {
                    result.sliceConfig_ = sliceConfigBuilder_ == null ? sliceConfig_ : sliceConfigBuilder_.build();
                }
                if (((from_bitField0_ & 0x00000100) != 0)) {
                    result.sliceOwner_ = sliceOwnerBuilder_ == null ? sliceOwner_ : sliceOwnerBuilder_.build();
                }
                if (((from_bitField0_ & 0x00000200) != 0)) {
                    result.timestamp_ = timestampBuilder_ == null ? timestamp_ : timestampBuilder_.build();
                }
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.Slice) {
                    return mergeFrom((context.ContextOuterClass.Slice) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.Slice other) {
                if (other == context.ContextOuterClass.Slice.getDefaultInstance())
                    return this;
                if (other.hasSliceId()) {
                    mergeSliceId(other.getSliceId());
                }
                if (!other.getName().isEmpty()) {
                    name_ = other.name_;
                    bitField0_ |= 0x00000002;
                    onChanged();
                }
                if (sliceEndpointIdsBuilder_ == null) {
                    if (!other.sliceEndpointIds_.isEmpty()) {
                        if (sliceEndpointIds_.isEmpty()) {
                            sliceEndpointIds_ = other.sliceEndpointIds_;
                            bitField0_ = (bitField0_ & ~0x00000004);
                        } else {
                            ensureSliceEndpointIdsIsMutable();
                            sliceEndpointIds_.addAll(other.sliceEndpointIds_);
                        }
                        onChanged();
                    }
                } else {
                    if (!other.sliceEndpointIds_.isEmpty()) {
                        if (sliceEndpointIdsBuilder_.isEmpty()) {
                            sliceEndpointIdsBuilder_.dispose();
                            sliceEndpointIdsBuilder_ = null;
                            sliceEndpointIds_ = other.sliceEndpointIds_;
                            bitField0_ = (bitField0_ & ~0x00000004);
                            sliceEndpointIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getSliceEndpointIdsFieldBuilder() : null;
                        } else {
                            sliceEndpointIdsBuilder_.addAllMessages(other.sliceEndpointIds_);
                        }
                    }
                }
                if (sliceConstraintsBuilder_ == null) {
                    if (!other.sliceConstraints_.isEmpty()) {
                        if (sliceConstraints_.isEmpty()) {
                            sliceConstraints_ = other.sliceConstraints_;
                            bitField0_ = (bitField0_ & ~0x00000008);
                        } else {
                            ensureSliceConstraintsIsMutable();
                            sliceConstraints_.addAll(other.sliceConstraints_);
                        }
                        onChanged();
                    }
                } else {
                    if (!other.sliceConstraints_.isEmpty()) {
                        if (sliceConstraintsBuilder_.isEmpty()) {
                            sliceConstraintsBuilder_.dispose();
                            sliceConstraintsBuilder_ = null;
                            sliceConstraints_ = other.sliceConstraints_;
                            bitField0_ = (bitField0_ & ~0x00000008);
                            sliceConstraintsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getSliceConstraintsFieldBuilder() : null;
                        } else {
                            sliceConstraintsBuilder_.addAllMessages(other.sliceConstraints_);
                        }
                    }
                }
                if (sliceServiceIdsBuilder_ == null) {
                    if (!other.sliceServiceIds_.isEmpty()) {
                        if (sliceServiceIds_.isEmpty()) {
                            sliceServiceIds_ = other.sliceServiceIds_;
                            bitField0_ = (bitField0_ & ~0x00000010);
                        } else {
                            ensureSliceServiceIdsIsMutable();
                            sliceServiceIds_.addAll(other.sliceServiceIds_);
                        }
                        onChanged();
                    }
                } else {
                    if (!other.sliceServiceIds_.isEmpty()) {
                        if (sliceServiceIdsBuilder_.isEmpty()) {
                            sliceServiceIdsBuilder_.dispose();
                            sliceServiceIdsBuilder_ = null;
                            sliceServiceIds_ = other.sliceServiceIds_;
                            bitField0_ = (bitField0_ & ~0x00000010);
                            sliceServiceIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getSliceServiceIdsFieldBuilder() : null;
                        } else {
                            sliceServiceIdsBuilder_.addAllMessages(other.sliceServiceIds_);
                        }
                    }
                }
                if (sliceSubsliceIdsBuilder_ == null) {
                    if (!other.sliceSubsliceIds_.isEmpty()) {
                        if (sliceSubsliceIds_.isEmpty()) {
                            sliceSubsliceIds_ = other.sliceSubsliceIds_;
                            bitField0_ = (bitField0_ & ~0x00000020);
                        } else {
                            ensureSliceSubsliceIdsIsMutable();
                            sliceSubsliceIds_.addAll(other.sliceSubsliceIds_);
                        }
                        onChanged();
                    }
                } else {
                    if (!other.sliceSubsliceIds_.isEmpty()) {
                        if (sliceSubsliceIdsBuilder_.isEmpty()) {
                            sliceSubsliceIdsBuilder_.dispose();
                            sliceSubsliceIdsBuilder_ = null;
                            sliceSubsliceIds_ = other.sliceSubsliceIds_;
                            bitField0_ = (bitField0_ & ~0x00000020);
                            sliceSubsliceIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getSliceSubsliceIdsFieldBuilder() : null;
                        } else {
                            sliceSubsliceIdsBuilder_.addAllMessages(other.sliceSubsliceIds_);
                        }
                    }
                }
                if (other.hasSliceStatus()) {
                    mergeSliceStatus(other.getSliceStatus());
                }
                if (other.hasSliceConfig()) {
                    mergeSliceConfig(other.getSliceConfig());
                }
                if (other.hasSliceOwner()) {
                    mergeSliceOwner(other.getSliceOwner());
                }
                if (other.hasTimestamp()) {
                    mergeTimestamp(other.getTimestamp());
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 10:
                                {
                                    input.readMessage(getSliceIdFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000001;
                                    break;
                                }
                            // case 10
                            case 18:
                                {
                                    name_ = input.readStringRequireUtf8();
                                    bitField0_ |= 0x00000002;
                                    break;
                                }
                            // case 18
                            case 26:
                                {
                                    context.ContextOuterClass.EndPointId m = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry);
                                    if (sliceEndpointIdsBuilder_ == null) {
                                        ensureSliceEndpointIdsIsMutable();
                                        sliceEndpointIds_.add(m);
                                    } else {
                                        sliceEndpointIdsBuilder_.addMessage(m);
                                    }
                                    break;
                                }
                            // case 26
                            case 34:
                                {
                                    context.ContextOuterClass.Constraint m = input.readMessage(context.ContextOuterClass.Constraint.parser(), extensionRegistry);
                                    if (sliceConstraintsBuilder_ == null) {
                                        ensureSliceConstraintsIsMutable();
                                        sliceConstraints_.add(m);
                                    } else {
                                        sliceConstraintsBuilder_.addMessage(m);
                                    }
                                    break;
                                }
                            // case 34
                            case 42:
                                {
                                    context.ContextOuterClass.ServiceId m = input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry);
                                    if (sliceServiceIdsBuilder_ == null) {
                                        ensureSliceServiceIdsIsMutable();
                                        sliceServiceIds_.add(m);
                                    } else {
                                        sliceServiceIdsBuilder_.addMessage(m);
                                    }
                                    break;
                                }
                            // case 42
                            case 50:
                                {
                                    context.ContextOuterClass.SliceId m = input.readMessage(context.ContextOuterClass.SliceId.parser(), extensionRegistry);
                                    if (sliceSubsliceIdsBuilder_ == null) {
                                        ensureSliceSubsliceIdsIsMutable();
                                        sliceSubsliceIds_.add(m);
                                    } else {
                                        sliceSubsliceIdsBuilder_.addMessage(m);
                                    }
                                    break;
                                }
                            // case 50
                            case 58:
                                {
                                    input.readMessage(getSliceStatusFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000040;
                                    break;
                                }
                            // case 58
                            case 66:
                                {
                                    input.readMessage(getSliceConfigFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000080;
                                    break;
                                }
                            // case 66
                            case 74:
                                {
                                    input.readMessage(getSliceOwnerFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000100;
                                    break;
                                }
                            // case 74
                            case 82:
                                {
                                    input.readMessage(getTimestampFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000200;
                                    break;
                                }
                            // case 82
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private context.ContextOuterClass.SliceId sliceId_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder> sliceIdBuilder_;

            /**
             * <code>.context.SliceId slice_id = 1;</code>
             * @return Whether the sliceId field is set.
             */
            public boolean hasSliceId() {
                return ((bitField0_ & 0x00000001) != 0);
            }

            /**
             * <code>.context.SliceId slice_id = 1;</code>
             * @return The sliceId.
             */
            public context.ContextOuterClass.SliceId getSliceId() {
                if (sliceIdBuilder_ == null) {
                    return sliceId_ == null ? context.ContextOuterClass.SliceId.getDefaultInstance() : sliceId_;
                } else {
                    return sliceIdBuilder_.getMessage();
                }
            }

            /**
             * <code>.context.SliceId slice_id = 1;</code>
             */
            public Builder setSliceId(context.ContextOuterClass.SliceId value) {
                if (sliceIdBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    sliceId_ = value;
                } else {
                    sliceIdBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.SliceId slice_id = 1;</code>
             */
            public Builder setSliceId(context.ContextOuterClass.SliceId.Builder builderForValue) {
                if (sliceIdBuilder_ == null) {
                    sliceId_ = builderForValue.build();
                } else {
                    sliceIdBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.SliceId slice_id = 1;</code>
             */
            public Builder mergeSliceId(context.ContextOuterClass.SliceId value) {
                if (sliceIdBuilder_ == null) {
                    if (((bitField0_ & 0x00000001) != 0) && sliceId_ != null && sliceId_ != context.ContextOuterClass.SliceId.getDefaultInstance()) {
                        getSliceIdBuilder().mergeFrom(value);
                    } else {
                        sliceId_ = value;
                    }
                } else {
                    sliceIdBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.SliceId slice_id = 1;</code>
             */
            public Builder clearSliceId() {
                bitField0_ = (bitField0_ & ~0x00000001);
                sliceId_ = null;
                if (sliceIdBuilder_ != null) {
                    sliceIdBuilder_.dispose();
                    sliceIdBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.SliceId slice_id = 1;</code>
             */
            public context.ContextOuterClass.SliceId.Builder getSliceIdBuilder() {
                bitField0_ |= 0x00000001;
                onChanged();
                return getSliceIdFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.SliceId slice_id = 1;</code>
             */
            public context.ContextOuterClass.SliceIdOrBuilder getSliceIdOrBuilder() {
                if (sliceIdBuilder_ != null) {
                    return sliceIdBuilder_.getMessageOrBuilder();
                } else {
                    return sliceId_ == null ? context.ContextOuterClass.SliceId.getDefaultInstance() : sliceId_;
                }
            }

            /**
             * <code>.context.SliceId slice_id = 1;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder> getSliceIdFieldBuilder() {
                if (sliceIdBuilder_ == null) {
                    sliceIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder>(getSliceId(), getParentForChildren(), isClean());
                    sliceId_ = null;
                }
                return sliceIdBuilder_;
            }

            private java.lang.Object name_ = "";

            /**
             * <code>string name = 2;</code>
             * @return The name.
             */
            public java.lang.String getName() {
                java.lang.Object ref = name_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    name_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }

            /**
             * <code>string name = 2;</code>
             * @return The bytes for name.
             */
            public com.google.protobuf.ByteString getNameBytes() {
                java.lang.Object ref = name_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                    name_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }

            /**
             * <code>string name = 2;</code>
             * @param value The name to set.
             * @return This builder for chaining.
             */
            public Builder setName(java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                name_ = value;
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>string name = 2;</code>
             * @return This builder for chaining.
             */
            public Builder clearName() {
                name_ = getDefaultInstance().getName();
                bitField0_ = (bitField0_ & ~0x00000002);
                onChanged();
                return this;
            }

            /**
             * <code>string name = 2;</code>
             * @param value The bytes for name to set.
             * @return This builder for chaining.
             */
            public Builder setNameBytes(com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);
                name_ = value;
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            private java.util.List<context.ContextOuterClass.EndPointId> sliceEndpointIds_ = java.util.Collections.emptyList();

            private void ensureSliceEndpointIdsIsMutable() {
                if (!((bitField0_ & 0x00000004) != 0)) {
                    sliceEndpointIds_ = new java.util.ArrayList<context.ContextOuterClass.EndPointId>(sliceEndpointIds_);
                    bitField0_ |= 0x00000004;
                }
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> sliceEndpointIdsBuilder_;

            /**
             * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
             */
            public java.util.List<context.ContextOuterClass.EndPointId> getSliceEndpointIdsList() {
                if (sliceEndpointIdsBuilder_ == null) {
                    return java.util.Collections.unmodifiableList(sliceEndpointIds_);
                } else {
                    return sliceEndpointIdsBuilder_.getMessageList();
                }
            }

            /**
             * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
             */
            public int getSliceEndpointIdsCount() {
                if (sliceEndpointIdsBuilder_ == null) {
                    return sliceEndpointIds_.size();
                } else {
                    return sliceEndpointIdsBuilder_.getCount();
                }
            }

            /**
             * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
             */
            public context.ContextOuterClass.EndPointId getSliceEndpointIds(int index) {
                if (sliceEndpointIdsBuilder_ == null) {
                    return sliceEndpointIds_.get(index);
                } else {
                    return sliceEndpointIdsBuilder_.getMessage(index);
                }
            }

            /**
             * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
             */
            public Builder setSliceEndpointIds(int index, context.ContextOuterClass.EndPointId value) {
                if (sliceEndpointIdsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureSliceEndpointIdsIsMutable();
                    sliceEndpointIds_.set(index, value);
                    onChanged();
                } else {
                    sliceEndpointIdsBuilder_.setMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
             */
            public Builder setSliceEndpointIds(int index, context.ContextOuterClass.EndPointId.Builder builderForValue) {
                if (sliceEndpointIdsBuilder_ == null) {
                    ensureSliceEndpointIdsIsMutable();
                    sliceEndpointIds_.set(index, builderForValue.build());
                    onChanged();
                } else {
                    sliceEndpointIdsBuilder_.setMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
             */
            public Builder addSliceEndpointIds(context.ContextOuterClass.EndPointId value) {
                if (sliceEndpointIdsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureSliceEndpointIdsIsMutable();
                    sliceEndpointIds_.add(value);
                    onChanged();
                } else {
                    sliceEndpointIdsBuilder_.addMessage(value);
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
             */
            public Builder addSliceEndpointIds(int index, context.ContextOuterClass.EndPointId value) {
                if (sliceEndpointIdsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureSliceEndpointIdsIsMutable();
                    sliceEndpointIds_.add(index, value);
                    onChanged();
                } else {
                    sliceEndpointIdsBuilder_.addMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
             */
            public Builder addSliceEndpointIds(context.ContextOuterClass.EndPointId.Builder builderForValue) {
                if (sliceEndpointIdsBuilder_ == null) {
                    ensureSliceEndpointIdsIsMutable();
                    sliceEndpointIds_.add(builderForValue.build());
                    onChanged();
                } else {
                    sliceEndpointIdsBuilder_.addMessage(builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
             */
            public Builder addSliceEndpointIds(int index, context.ContextOuterClass.EndPointId.Builder builderForValue) {
                if (sliceEndpointIdsBuilder_ == null) {
                    ensureSliceEndpointIdsIsMutable();
                    sliceEndpointIds_.add(index, builderForValue.build());
                    onChanged();
                } else {
                    sliceEndpointIdsBuilder_.addMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
             */
            public Builder addAllSliceEndpointIds(java.lang.Iterable<? extends context.ContextOuterClass.EndPointId> values) {
                if (sliceEndpointIdsBuilder_ == null) {
                    ensureSliceEndpointIdsIsMutable();
                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, sliceEndpointIds_);
                    onChanged();
                } else {
                    sliceEndpointIdsBuilder_.addAllMessages(values);
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
             */
            public Builder clearSliceEndpointIds() {
                if (sliceEndpointIdsBuilder_ == null) {
                    sliceEndpointIds_ = java.util.Collections.emptyList();
                    bitField0_ = (bitField0_ & ~0x00000004);
                    onChanged();
                } else {
                    sliceEndpointIdsBuilder_.clear();
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
             */
            public Builder removeSliceEndpointIds(int index) {
                if (sliceEndpointIdsBuilder_ == null) {
                    ensureSliceEndpointIdsIsMutable();
                    sliceEndpointIds_.remove(index);
                    onChanged();
                } else {
                    sliceEndpointIdsBuilder_.remove(index);
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
             */
            public context.ContextOuterClass.EndPointId.Builder getSliceEndpointIdsBuilder(int index) {
                return getSliceEndpointIdsFieldBuilder().getBuilder(index);
            }

            /**
             * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
             */
            public context.ContextOuterClass.EndPointIdOrBuilder getSliceEndpointIdsOrBuilder(int index) {
                if (sliceEndpointIdsBuilder_ == null) {
                    return sliceEndpointIds_.get(index);
                } else {
                    return sliceEndpointIdsBuilder_.getMessageOrBuilder(index);
                }
            }

            /**
             * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
             */
            public java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> getSliceEndpointIdsOrBuilderList() {
                if (sliceEndpointIdsBuilder_ != null) {
                    return sliceEndpointIdsBuilder_.getMessageOrBuilderList();
                } else {
                    return java.util.Collections.unmodifiableList(sliceEndpointIds_);
                }
            }

            /**
             * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
             */
            public context.ContextOuterClass.EndPointId.Builder addSliceEndpointIdsBuilder() {
                return getSliceEndpointIdsFieldBuilder().addBuilder(context.ContextOuterClass.EndPointId.getDefaultInstance());
            }

            /**
             * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
             */
            public context.ContextOuterClass.EndPointId.Builder addSliceEndpointIdsBuilder(int index) {
                return getSliceEndpointIdsFieldBuilder().addBuilder(index, context.ContextOuterClass.EndPointId.getDefaultInstance());
            }

            /**
             * <code>repeated .context.EndPointId slice_endpoint_ids = 3;</code>
             */
            public java.util.List<context.ContextOuterClass.EndPointId.Builder> getSliceEndpointIdsBuilderList() {
                return getSliceEndpointIdsFieldBuilder().getBuilderList();
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> getSliceEndpointIdsFieldBuilder() {
                if (sliceEndpointIdsBuilder_ == null) {
                    sliceEndpointIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder>(sliceEndpointIds_, ((bitField0_ & 0x00000004) != 0), getParentForChildren(), isClean());
                    sliceEndpointIds_ = null;
                }
                return sliceEndpointIdsBuilder_;
            }

            private java.util.List<context.ContextOuterClass.Constraint> sliceConstraints_ = java.util.Collections.emptyList();

            private void ensureSliceConstraintsIsMutable() {
                if (!((bitField0_ & 0x00000008) != 0)) {
                    sliceConstraints_ = new java.util.ArrayList<context.ContextOuterClass.Constraint>(sliceConstraints_);
                    bitField0_ |= 0x00000008;
                }
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Constraint, context.ContextOuterClass.Constraint.Builder, context.ContextOuterClass.ConstraintOrBuilder> sliceConstraintsBuilder_;

            /**
             * <code>repeated .context.Constraint slice_constraints = 4;</code>
             */
            public java.util.List<context.ContextOuterClass.Constraint> getSliceConstraintsList() {
                if (sliceConstraintsBuilder_ == null) {
                    return java.util.Collections.unmodifiableList(sliceConstraints_);
                } else {
                    return sliceConstraintsBuilder_.getMessageList();
                }
            }

            /**
             * <code>repeated .context.Constraint slice_constraints = 4;</code>
             */
            public int getSliceConstraintsCount() {
                if (sliceConstraintsBuilder_ == null) {
                    return sliceConstraints_.size();
                } else {
                    return sliceConstraintsBuilder_.getCount();
                }
            }

            /**
             * <code>repeated .context.Constraint slice_constraints = 4;</code>
             */
            public context.ContextOuterClass.Constraint getSliceConstraints(int index) {
                if (sliceConstraintsBuilder_ == null) {
                    return sliceConstraints_.get(index);
                } else {
                    return sliceConstraintsBuilder_.getMessage(index);
                }
            }

            /**
             * <code>repeated .context.Constraint slice_constraints = 4;</code>
             */
            public Builder setSliceConstraints(int index, context.ContextOuterClass.Constraint value) {
                if (sliceConstraintsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureSliceConstraintsIsMutable();
                    sliceConstraints_.set(index, value);
                    onChanged();
                } else {
                    sliceConstraintsBuilder_.setMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.Constraint slice_constraints = 4;</code>
             */
            public Builder setSliceConstraints(int index, context.ContextOuterClass.Constraint.Builder builderForValue) {
                if (sliceConstraintsBuilder_ == null) {
                    ensureSliceConstraintsIsMutable();
                    sliceConstraints_.set(index, builderForValue.build());
                    onChanged();
                } else {
                    sliceConstraintsBuilder_.setMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.Constraint slice_constraints = 4;</code>
             */
            public Builder addSliceConstraints(context.ContextOuterClass.Constraint value) {
                if (sliceConstraintsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureSliceConstraintsIsMutable();
                    sliceConstraints_.add(value);
                    onChanged();
                } else {
                    sliceConstraintsBuilder_.addMessage(value);
                }
                return this;
            }

            /**
             * <code>repeated .context.Constraint slice_constraints = 4;</code>
             */
            public Builder addSliceConstraints(int index, context.ContextOuterClass.Constraint value) {
                if (sliceConstraintsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureSliceConstraintsIsMutable();
                    sliceConstraints_.add(index, value);
                    onChanged();
                } else {
                    sliceConstraintsBuilder_.addMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.Constraint slice_constraints = 4;</code>
             */
            public Builder addSliceConstraints(context.ContextOuterClass.Constraint.Builder builderForValue) {
                if (sliceConstraintsBuilder_ == null) {
                    ensureSliceConstraintsIsMutable();
                    sliceConstraints_.add(builderForValue.build());
                    onChanged();
                } else {
                    sliceConstraintsBuilder_.addMessage(builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.Constraint slice_constraints = 4;</code>
             */
            public Builder addSliceConstraints(int index, context.ContextOuterClass.Constraint.Builder builderForValue) {
                if (sliceConstraintsBuilder_ == null) {
                    ensureSliceConstraintsIsMutable();
                    sliceConstraints_.add(index, builderForValue.build());
                    onChanged();
                } else {
                    sliceConstraintsBuilder_.addMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.Constraint slice_constraints = 4;</code>
             */
            public Builder addAllSliceConstraints(java.lang.Iterable<? extends context.ContextOuterClass.Constraint> values) {
                if (sliceConstraintsBuilder_ == null) {
                    ensureSliceConstraintsIsMutable();
                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, sliceConstraints_);
                    onChanged();
                } else {
                    sliceConstraintsBuilder_.addAllMessages(values);
                }
                return this;
            }

            /**
             * <code>repeated .context.Constraint slice_constraints = 4;</code>
             */
            public Builder clearSliceConstraints() {
                if (sliceConstraintsBuilder_ == null) {
                    sliceConstraints_ = java.util.Collections.emptyList();
                    bitField0_ = (bitField0_ & ~0x00000008);
                    onChanged();
                } else {
                    sliceConstraintsBuilder_.clear();
                }
                return this;
            }

            /**
             * <code>repeated .context.Constraint slice_constraints = 4;</code>
             */
            public Builder removeSliceConstraints(int index) {
                if (sliceConstraintsBuilder_ == null) {
                    ensureSliceConstraintsIsMutable();
                    sliceConstraints_.remove(index);
                    onChanged();
                } else {
                    sliceConstraintsBuilder_.remove(index);
                }
                return this;
            }

            /**
             * <code>repeated .context.Constraint slice_constraints = 4;</code>
             */
            public context.ContextOuterClass.Constraint.Builder getSliceConstraintsBuilder(int index) {
                return getSliceConstraintsFieldBuilder().getBuilder(index);
            }

            /**
             * <code>repeated .context.Constraint slice_constraints = 4;</code>
             */
            public context.ContextOuterClass.ConstraintOrBuilder getSliceConstraintsOrBuilder(int index) {
                if (sliceConstraintsBuilder_ == null) {
                    return sliceConstraints_.get(index);
                } else {
                    return sliceConstraintsBuilder_.getMessageOrBuilder(index);
                }
            }

            /**
             * <code>repeated .context.Constraint slice_constraints = 4;</code>
             */
            public java.util.List<? extends context.ContextOuterClass.ConstraintOrBuilder> getSliceConstraintsOrBuilderList() {
                if (sliceConstraintsBuilder_ != null) {
                    return sliceConstraintsBuilder_.getMessageOrBuilderList();
                } else {
                    return java.util.Collections.unmodifiableList(sliceConstraints_);
                }
            }

            /**
             * <code>repeated .context.Constraint slice_constraints = 4;</code>
             */
            public context.ContextOuterClass.Constraint.Builder addSliceConstraintsBuilder() {
                return getSliceConstraintsFieldBuilder().addBuilder(context.ContextOuterClass.Constraint.getDefaultInstance());
            }

            /**
             * <code>repeated .context.Constraint slice_constraints = 4;</code>
             */
            public context.ContextOuterClass.Constraint.Builder addSliceConstraintsBuilder(int index) {
                return getSliceConstraintsFieldBuilder().addBuilder(index, context.ContextOuterClass.Constraint.getDefaultInstance());
            }

            /**
             * <code>repeated .context.Constraint slice_constraints = 4;</code>
             */
            public java.util.List<context.ContextOuterClass.Constraint.Builder> getSliceConstraintsBuilderList() {
                return getSliceConstraintsFieldBuilder().getBuilderList();
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Constraint, context.ContextOuterClass.Constraint.Builder, context.ContextOuterClass.ConstraintOrBuilder> getSliceConstraintsFieldBuilder() {
                if (sliceConstraintsBuilder_ == null) {
                    sliceConstraintsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Constraint, context.ContextOuterClass.Constraint.Builder, context.ContextOuterClass.ConstraintOrBuilder>(sliceConstraints_, ((bitField0_ & 0x00000008) != 0), getParentForChildren(), isClean());
                    sliceConstraints_ = null;
                }
                return sliceConstraintsBuilder_;
            }

            private java.util.List<context.ContextOuterClass.ServiceId> sliceServiceIds_ = java.util.Collections.emptyList();

            private void ensureSliceServiceIdsIsMutable() {
                if (!((bitField0_ & 0x00000010) != 0)) {
                    sliceServiceIds_ = new java.util.ArrayList<context.ContextOuterClass.ServiceId>(sliceServiceIds_);
                    bitField0_ |= 0x00000010;
                }
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> sliceServiceIdsBuilder_;

            /**
             * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
             */
            public java.util.List<context.ContextOuterClass.ServiceId> getSliceServiceIdsList() {
                if (sliceServiceIdsBuilder_ == null) {
                    return java.util.Collections.unmodifiableList(sliceServiceIds_);
                } else {
                    return sliceServiceIdsBuilder_.getMessageList();
                }
            }

            /**
             * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
             */
            public int getSliceServiceIdsCount() {
                if (sliceServiceIdsBuilder_ == null) {
                    return sliceServiceIds_.size();
                } else {
                    return sliceServiceIdsBuilder_.getCount();
                }
            }

            /**
             * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
             */
            public context.ContextOuterClass.ServiceId getSliceServiceIds(int index) {
                if (sliceServiceIdsBuilder_ == null) {
                    return sliceServiceIds_.get(index);
                } else {
                    return sliceServiceIdsBuilder_.getMessage(index);
                }
            }

            /**
             * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
             */
            public Builder setSliceServiceIds(int index, context.ContextOuterClass.ServiceId value) {
                if (sliceServiceIdsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureSliceServiceIdsIsMutable();
                    sliceServiceIds_.set(index, value);
                    onChanged();
                } else {
                    sliceServiceIdsBuilder_.setMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
             */
            public Builder setSliceServiceIds(int index, context.ContextOuterClass.ServiceId.Builder builderForValue) {
                if (sliceServiceIdsBuilder_ == null) {
                    ensureSliceServiceIdsIsMutable();
                    sliceServiceIds_.set(index, builderForValue.build());
                    onChanged();
                } else {
                    sliceServiceIdsBuilder_.setMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
             */
            public Builder addSliceServiceIds(context.ContextOuterClass.ServiceId value) {
                if (sliceServiceIdsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureSliceServiceIdsIsMutable();
                    sliceServiceIds_.add(value);
                    onChanged();
                } else {
                    sliceServiceIdsBuilder_.addMessage(value);
                }
                return this;
            }

            /**
             * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
             */
            public Builder addSliceServiceIds(int index, context.ContextOuterClass.ServiceId value) {
                if (sliceServiceIdsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureSliceServiceIdsIsMutable();
                    sliceServiceIds_.add(index, value);
                    onChanged();
                } else {
                    sliceServiceIdsBuilder_.addMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
             */
            public Builder addSliceServiceIds(context.ContextOuterClass.ServiceId.Builder builderForValue) {
                if (sliceServiceIdsBuilder_ == null) {
                    ensureSliceServiceIdsIsMutable();
                    sliceServiceIds_.add(builderForValue.build());
                    onChanged();
                } else {
                    sliceServiceIdsBuilder_.addMessage(builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
             */
            public Builder addSliceServiceIds(int index, context.ContextOuterClass.ServiceId.Builder builderForValue) {
                if (sliceServiceIdsBuilder_ == null) {
                    ensureSliceServiceIdsIsMutable();
                    sliceServiceIds_.add(index, builderForValue.build());
                    onChanged();
                } else {
                    sliceServiceIdsBuilder_.addMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
             */
            public Builder addAllSliceServiceIds(java.lang.Iterable<? extends context.ContextOuterClass.ServiceId> values) {
                if (sliceServiceIdsBuilder_ == null) {
                    ensureSliceServiceIdsIsMutable();
                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, sliceServiceIds_);
                    onChanged();
                } else {
                    sliceServiceIdsBuilder_.addAllMessages(values);
                }
                return this;
            }

            /**
             * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
             */
            public Builder clearSliceServiceIds() {
                if (sliceServiceIdsBuilder_ == null) {
                    sliceServiceIds_ = java.util.Collections.emptyList();
                    bitField0_ = (bitField0_ & ~0x00000010);
                    onChanged();
                } else {
                    sliceServiceIdsBuilder_.clear();
                }
                return this;
            }

            /**
             * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
             */
            public Builder removeSliceServiceIds(int index) {
                if (sliceServiceIdsBuilder_ == null) {
                    ensureSliceServiceIdsIsMutable();
                    sliceServiceIds_.remove(index);
                    onChanged();
                } else {
                    sliceServiceIdsBuilder_.remove(index);
                }
                return this;
            }

            /**
             * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
             */
            public context.ContextOuterClass.ServiceId.Builder getSliceServiceIdsBuilder(int index) {
                return getSliceServiceIdsFieldBuilder().getBuilder(index);
            }

            /**
             * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
             */
            public context.ContextOuterClass.ServiceIdOrBuilder getSliceServiceIdsOrBuilder(int index) {
                if (sliceServiceIdsBuilder_ == null) {
                    return sliceServiceIds_.get(index);
                } else {
                    return sliceServiceIdsBuilder_.getMessageOrBuilder(index);
                }
            }

            /**
             * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
             */
            public java.util.List<? extends context.ContextOuterClass.ServiceIdOrBuilder> getSliceServiceIdsOrBuilderList() {
                if (sliceServiceIdsBuilder_ != null) {
                    return sliceServiceIdsBuilder_.getMessageOrBuilderList();
                } else {
                    return java.util.Collections.unmodifiableList(sliceServiceIds_);
                }
            }

            /**
             * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
             */
            public context.ContextOuterClass.ServiceId.Builder addSliceServiceIdsBuilder() {
                return getSliceServiceIdsFieldBuilder().addBuilder(context.ContextOuterClass.ServiceId.getDefaultInstance());
            }

            /**
             * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
             */
            public context.ContextOuterClass.ServiceId.Builder addSliceServiceIdsBuilder(int index) {
                return getSliceServiceIdsFieldBuilder().addBuilder(index, context.ContextOuterClass.ServiceId.getDefaultInstance());
            }

            /**
             * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
             */
            public java.util.List<context.ContextOuterClass.ServiceId.Builder> getSliceServiceIdsBuilderList() {
                return getSliceServiceIdsFieldBuilder().getBuilderList();
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> getSliceServiceIdsFieldBuilder() {
                if (sliceServiceIdsBuilder_ == null) {
                    sliceServiceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder>(sliceServiceIds_, ((bitField0_ & 0x00000010) != 0), getParentForChildren(), isClean());
                    sliceServiceIds_ = null;
                }
                return sliceServiceIdsBuilder_;
            }

            private java.util.List<context.ContextOuterClass.SliceId> sliceSubsliceIds_ = java.util.Collections.emptyList();

            private void ensureSliceSubsliceIdsIsMutable() {
                if (!((bitField0_ & 0x00000020) != 0)) {
                    sliceSubsliceIds_ = new java.util.ArrayList<context.ContextOuterClass.SliceId>(sliceSubsliceIds_);
                    bitField0_ |= 0x00000020;
                }
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder> sliceSubsliceIdsBuilder_;

            /**
             * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
             */
            public java.util.List<context.ContextOuterClass.SliceId> getSliceSubsliceIdsList() {
                if (sliceSubsliceIdsBuilder_ == null) {
                    return java.util.Collections.unmodifiableList(sliceSubsliceIds_);
                } else {
                    return sliceSubsliceIdsBuilder_.getMessageList();
                }
            }

            /**
             * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
             */
            public int getSliceSubsliceIdsCount() {
                if (sliceSubsliceIdsBuilder_ == null) {
                    return sliceSubsliceIds_.size();
                } else {
                    return sliceSubsliceIdsBuilder_.getCount();
                }
            }

            /**
             * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
             */
            public context.ContextOuterClass.SliceId getSliceSubsliceIds(int index) {
                if (sliceSubsliceIdsBuilder_ == null) {
                    return sliceSubsliceIds_.get(index);
                } else {
                    return sliceSubsliceIdsBuilder_.getMessage(index);
                }
            }

            /**
             * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
             */
            public Builder setSliceSubsliceIds(int index, context.ContextOuterClass.SliceId value) {
                if (sliceSubsliceIdsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureSliceSubsliceIdsIsMutable();
                    sliceSubsliceIds_.set(index, value);
                    onChanged();
                } else {
                    sliceSubsliceIdsBuilder_.setMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
             */
            public Builder setSliceSubsliceIds(int index, context.ContextOuterClass.SliceId.Builder builderForValue) {
                if (sliceSubsliceIdsBuilder_ == null) {
                    ensureSliceSubsliceIdsIsMutable();
                    sliceSubsliceIds_.set(index, builderForValue.build());
                    onChanged();
                } else {
                    sliceSubsliceIdsBuilder_.setMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
             */
            public Builder addSliceSubsliceIds(context.ContextOuterClass.SliceId value) {
                if (sliceSubsliceIdsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureSliceSubsliceIdsIsMutable();
                    sliceSubsliceIds_.add(value);
                    onChanged();
                } else {
                    sliceSubsliceIdsBuilder_.addMessage(value);
                }
                return this;
            }

            /**
             * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
             */
            public Builder addSliceSubsliceIds(int index, context.ContextOuterClass.SliceId value) {
                if (sliceSubsliceIdsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureSliceSubsliceIdsIsMutable();
                    sliceSubsliceIds_.add(index, value);
                    onChanged();
                } else {
                    sliceSubsliceIdsBuilder_.addMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
             */
            public Builder addSliceSubsliceIds(context.ContextOuterClass.SliceId.Builder builderForValue) {
                if (sliceSubsliceIdsBuilder_ == null) {
                    ensureSliceSubsliceIdsIsMutable();
                    sliceSubsliceIds_.add(builderForValue.build());
                    onChanged();
                } else {
                    sliceSubsliceIdsBuilder_.addMessage(builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
             */
            public Builder addSliceSubsliceIds(int index, context.ContextOuterClass.SliceId.Builder builderForValue) {
                if (sliceSubsliceIdsBuilder_ == null) {
                    ensureSliceSubsliceIdsIsMutable();
                    sliceSubsliceIds_.add(index, builderForValue.build());
                    onChanged();
                } else {
                    sliceSubsliceIdsBuilder_.addMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
             */
            public Builder addAllSliceSubsliceIds(java.lang.Iterable<? extends context.ContextOuterClass.SliceId> values) {
                if (sliceSubsliceIdsBuilder_ == null) {
                    ensureSliceSubsliceIdsIsMutable();
                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, sliceSubsliceIds_);
                    onChanged();
                } else {
                    sliceSubsliceIdsBuilder_.addAllMessages(values);
                }
                return this;
            }

            /**
             * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
             */
            public Builder clearSliceSubsliceIds() {
                if (sliceSubsliceIdsBuilder_ == null) {
                    sliceSubsliceIds_ = java.util.Collections.emptyList();
                    bitField0_ = (bitField0_ & ~0x00000020);
                    onChanged();
                } else {
                    sliceSubsliceIdsBuilder_.clear();
                }
                return this;
            }

            /**
             * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
             */
            public Builder removeSliceSubsliceIds(int index) {
                if (sliceSubsliceIdsBuilder_ == null) {
                    ensureSliceSubsliceIdsIsMutable();
                    sliceSubsliceIds_.remove(index);
                    onChanged();
                } else {
                    sliceSubsliceIdsBuilder_.remove(index);
                }
                return this;
            }

            /**
             * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
             */
            public context.ContextOuterClass.SliceId.Builder getSliceSubsliceIdsBuilder(int index) {
                return getSliceSubsliceIdsFieldBuilder().getBuilder(index);
            }

            /**
             * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
             */
            public context.ContextOuterClass.SliceIdOrBuilder getSliceSubsliceIdsOrBuilder(int index) {
                if (sliceSubsliceIdsBuilder_ == null) {
                    return sliceSubsliceIds_.get(index);
                } else {
                    return sliceSubsliceIdsBuilder_.getMessageOrBuilder(index);
                }
            }

            /**
             * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
             */
            public java.util.List<? extends context.ContextOuterClass.SliceIdOrBuilder> getSliceSubsliceIdsOrBuilderList() {
                if (sliceSubsliceIdsBuilder_ != null) {
                    return sliceSubsliceIdsBuilder_.getMessageOrBuilderList();
                } else {
                    return java.util.Collections.unmodifiableList(sliceSubsliceIds_);
                }
            }

            /**
             * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
             */
            public context.ContextOuterClass.SliceId.Builder addSliceSubsliceIdsBuilder() {
                return getSliceSubsliceIdsFieldBuilder().addBuilder(context.ContextOuterClass.SliceId.getDefaultInstance());
            }

            /**
             * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
             */
            public context.ContextOuterClass.SliceId.Builder addSliceSubsliceIdsBuilder(int index) {
                return getSliceSubsliceIdsFieldBuilder().addBuilder(index, context.ContextOuterClass.SliceId.getDefaultInstance());
            }

            /**
             * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
             */
            public java.util.List<context.ContextOuterClass.SliceId.Builder> getSliceSubsliceIdsBuilderList() {
                return getSliceSubsliceIdsFieldBuilder().getBuilderList();
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder> getSliceSubsliceIdsFieldBuilder() {
                if (sliceSubsliceIdsBuilder_ == null) {
                    sliceSubsliceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder>(sliceSubsliceIds_, ((bitField0_ & 0x00000020) != 0), getParentForChildren(), isClean());
                    sliceSubsliceIds_ = null;
                }
                return sliceSubsliceIdsBuilder_;
            }

            private context.ContextOuterClass.SliceStatus sliceStatus_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.SliceStatus, context.ContextOuterClass.SliceStatus.Builder, context.ContextOuterClass.SliceStatusOrBuilder> sliceStatusBuilder_;

            /**
             * <code>.context.SliceStatus slice_status = 7;</code>
             * @return Whether the sliceStatus field is set.
             */
            public boolean hasSliceStatus() {
                return ((bitField0_ & 0x00000040) != 0);
            }

            /**
             * <code>.context.SliceStatus slice_status = 7;</code>
             * @return The sliceStatus.
             */
            public context.ContextOuterClass.SliceStatus getSliceStatus() {
                if (sliceStatusBuilder_ == null) {
                    return sliceStatus_ == null ? context.ContextOuterClass.SliceStatus.getDefaultInstance() : sliceStatus_;
                } else {
                    return sliceStatusBuilder_.getMessage();
                }
            }

            /**
             * <code>.context.SliceStatus slice_status = 7;</code>
             */
            public Builder setSliceStatus(context.ContextOuterClass.SliceStatus value) {
                if (sliceStatusBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    sliceStatus_ = value;
                } else {
                    sliceStatusBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000040;
                onChanged();
                return this;
            }

            /**
             * <code>.context.SliceStatus slice_status = 7;</code>
             */
            public Builder setSliceStatus(context.ContextOuterClass.SliceStatus.Builder builderForValue) {
                if (sliceStatusBuilder_ == null) {
                    sliceStatus_ = builderForValue.build();
                } else {
                    sliceStatusBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000040;
                onChanged();
                return this;
            }

            /**
             * <code>.context.SliceStatus slice_status = 7;</code>
             */
            public Builder mergeSliceStatus(context.ContextOuterClass.SliceStatus value) {
                if (sliceStatusBuilder_ == null) {
                    if (((bitField0_ & 0x00000040) != 0) && sliceStatus_ != null && sliceStatus_ != context.ContextOuterClass.SliceStatus.getDefaultInstance()) {
                        getSliceStatusBuilder().mergeFrom(value);
                    } else {
                        sliceStatus_ = value;
                    }
                } else {
                    sliceStatusBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000040;
                onChanged();
                return this;
            }

            /**
             * <code>.context.SliceStatus slice_status = 7;</code>
             */
            public Builder clearSliceStatus() {
                bitField0_ = (bitField0_ & ~0x00000040);
                sliceStatus_ = null;
                if (sliceStatusBuilder_ != null) {
                    sliceStatusBuilder_.dispose();
                    sliceStatusBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.SliceStatus slice_status = 7;</code>
             */
            public context.ContextOuterClass.SliceStatus.Builder getSliceStatusBuilder() {
                bitField0_ |= 0x00000040;
                onChanged();
                return getSliceStatusFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.SliceStatus slice_status = 7;</code>
             */
            public context.ContextOuterClass.SliceStatusOrBuilder getSliceStatusOrBuilder() {
                if (sliceStatusBuilder_ != null) {
                    return sliceStatusBuilder_.getMessageOrBuilder();
                } else {
                    return sliceStatus_ == null ? context.ContextOuterClass.SliceStatus.getDefaultInstance() : sliceStatus_;
                }
            }

            /**
             * <code>.context.SliceStatus slice_status = 7;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.SliceStatus, context.ContextOuterClass.SliceStatus.Builder, context.ContextOuterClass.SliceStatusOrBuilder> getSliceStatusFieldBuilder() {
                if (sliceStatusBuilder_ == null) {
                    sliceStatusBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.SliceStatus, context.ContextOuterClass.SliceStatus.Builder, context.ContextOuterClass.SliceStatusOrBuilder>(getSliceStatus(), getParentForChildren(), isClean());
                    sliceStatus_ = null;
                }
                return sliceStatusBuilder_;
            }

            private context.ContextOuterClass.SliceConfig sliceConfig_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.SliceConfig, context.ContextOuterClass.SliceConfig.Builder, context.ContextOuterClass.SliceConfigOrBuilder> sliceConfigBuilder_;

            /**
             * <code>.context.SliceConfig slice_config = 8;</code>
             * @return Whether the sliceConfig field is set.
             */
            public boolean hasSliceConfig() {
                return ((bitField0_ & 0x00000080) != 0);
            }

            /**
             * <code>.context.SliceConfig slice_config = 8;</code>
             * @return The sliceConfig.
             */
            public context.ContextOuterClass.SliceConfig getSliceConfig() {
                if (sliceConfigBuilder_ == null) {
                    return sliceConfig_ == null ? context.ContextOuterClass.SliceConfig.getDefaultInstance() : sliceConfig_;
                } else {
                    return sliceConfigBuilder_.getMessage();
                }
            }

            /**
             * <code>.context.SliceConfig slice_config = 8;</code>
             */
            public Builder setSliceConfig(context.ContextOuterClass.SliceConfig value) {
                if (sliceConfigBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    sliceConfig_ = value;
                } else {
                    sliceConfigBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000080;
                onChanged();
                return this;
            }

            /**
             * <code>.context.SliceConfig slice_config = 8;</code>
             */
            public Builder setSliceConfig(context.ContextOuterClass.SliceConfig.Builder builderForValue) {
                if (sliceConfigBuilder_ == null) {
                    sliceConfig_ = builderForValue.build();
                } else {
                    sliceConfigBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000080;
                onChanged();
                return this;
            }

            /**
             * <code>.context.SliceConfig slice_config = 8;</code>
             */
            public Builder mergeSliceConfig(context.ContextOuterClass.SliceConfig value) {
                if (sliceConfigBuilder_ == null) {
                    if (((bitField0_ & 0x00000080) != 0) && sliceConfig_ != null && sliceConfig_ != context.ContextOuterClass.SliceConfig.getDefaultInstance()) {
                        getSliceConfigBuilder().mergeFrom(value);
                    } else {
                        sliceConfig_ = value;
                    }
                } else {
                    sliceConfigBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000080;
                onChanged();
                return this;
            }

            /**
             * <code>.context.SliceConfig slice_config = 8;</code>
             */
            public Builder clearSliceConfig() {
                bitField0_ = (bitField0_ & ~0x00000080);
                sliceConfig_ = null;
                if (sliceConfigBuilder_ != null) {
                    sliceConfigBuilder_.dispose();
                    sliceConfigBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.SliceConfig slice_config = 8;</code>
             */
            public context.ContextOuterClass.SliceConfig.Builder getSliceConfigBuilder() {
                bitField0_ |= 0x00000080;
                onChanged();
                return getSliceConfigFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.SliceConfig slice_config = 8;</code>
             */
            public context.ContextOuterClass.SliceConfigOrBuilder getSliceConfigOrBuilder() {
                if (sliceConfigBuilder_ != null) {
                    return sliceConfigBuilder_.getMessageOrBuilder();
                } else {
                    return sliceConfig_ == null ? context.ContextOuterClass.SliceConfig.getDefaultInstance() : sliceConfig_;
                }
            }

            /**
             * <code>.context.SliceConfig slice_config = 8;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.SliceConfig, context.ContextOuterClass.SliceConfig.Builder, context.ContextOuterClass.SliceConfigOrBuilder> getSliceConfigFieldBuilder() {
                if (sliceConfigBuilder_ == null) {
                    sliceConfigBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.SliceConfig, context.ContextOuterClass.SliceConfig.Builder, context.ContextOuterClass.SliceConfigOrBuilder>(getSliceConfig(), getParentForChildren(), isClean());
                    sliceConfig_ = null;
                }
                return sliceConfigBuilder_;
            }

            private context.ContextOuterClass.SliceOwner sliceOwner_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.SliceOwner, context.ContextOuterClass.SliceOwner.Builder, context.ContextOuterClass.SliceOwnerOrBuilder> sliceOwnerBuilder_;

            /**
             * <code>.context.SliceOwner slice_owner = 9;</code>
             * @return Whether the sliceOwner field is set.
             */
            public boolean hasSliceOwner() {
                return ((bitField0_ & 0x00000100) != 0);
            }

            /**
             * <code>.context.SliceOwner slice_owner = 9;</code>
             * @return The sliceOwner.
             */
            public context.ContextOuterClass.SliceOwner getSliceOwner() {
                if (sliceOwnerBuilder_ == null) {
                    return sliceOwner_ == null ? context.ContextOuterClass.SliceOwner.getDefaultInstance() : sliceOwner_;
                } else {
                    return sliceOwnerBuilder_.getMessage();
                }
            }

            /**
             * <code>.context.SliceOwner slice_owner = 9;</code>
             */
            public Builder setSliceOwner(context.ContextOuterClass.SliceOwner value) {
                if (sliceOwnerBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    sliceOwner_ = value;
                } else {
                    sliceOwnerBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000100;
                onChanged();
                return this;
            }

            /**
             * <code>.context.SliceOwner slice_owner = 9;</code>
             */
            public Builder setSliceOwner(context.ContextOuterClass.SliceOwner.Builder builderForValue) {
                if (sliceOwnerBuilder_ == null) {
                    sliceOwner_ = builderForValue.build();
                } else {
                    sliceOwnerBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000100;
                onChanged();
                return this;
            }

            /**
             * <code>.context.SliceOwner slice_owner = 9;</code>
             */
            public Builder mergeSliceOwner(context.ContextOuterClass.SliceOwner value) {
                if (sliceOwnerBuilder_ == null) {
                    if (((bitField0_ & 0x00000100) != 0) && sliceOwner_ != null && sliceOwner_ != context.ContextOuterClass.SliceOwner.getDefaultInstance()) {
                        getSliceOwnerBuilder().mergeFrom(value);
                    } else {
                        sliceOwner_ = value;
                    }
                } else {
                    sliceOwnerBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000100;
                onChanged();
                return this;
            }

            /**
             * <code>.context.SliceOwner slice_owner = 9;</code>
             */
            public Builder clearSliceOwner() {
                bitField0_ = (bitField0_ & ~0x00000100);
                sliceOwner_ = null;
                if (sliceOwnerBuilder_ != null) {
                    sliceOwnerBuilder_.dispose();
                    sliceOwnerBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.SliceOwner slice_owner = 9;</code>
             */
            public context.ContextOuterClass.SliceOwner.Builder getSliceOwnerBuilder() {
                bitField0_ |= 0x00000100;
                onChanged();
                return getSliceOwnerFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.SliceOwner slice_owner = 9;</code>
             */
            public context.ContextOuterClass.SliceOwnerOrBuilder getSliceOwnerOrBuilder() {
                if (sliceOwnerBuilder_ != null) {
                    return sliceOwnerBuilder_.getMessageOrBuilder();
                } else {
                    return sliceOwner_ == null ? context.ContextOuterClass.SliceOwner.getDefaultInstance() : sliceOwner_;
                }
            }

            /**
             * <code>.context.SliceOwner slice_owner = 9;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.SliceOwner, context.ContextOuterClass.SliceOwner.Builder, context.ContextOuterClass.SliceOwnerOrBuilder> getSliceOwnerFieldBuilder() {
                if (sliceOwnerBuilder_ == null) {
                    sliceOwnerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.SliceOwner, context.ContextOuterClass.SliceOwner.Builder, context.ContextOuterClass.SliceOwnerOrBuilder>(getSliceOwner(), getParentForChildren(), isClean());
                    sliceOwner_ = null;
                }
                return sliceOwnerBuilder_;
            }

            private context.ContextOuterClass.Timestamp timestamp_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> timestampBuilder_;

            /**
             * <code>.context.Timestamp timestamp = 10;</code>
             * @return Whether the timestamp field is set.
             */
            public boolean hasTimestamp() {
                return ((bitField0_ & 0x00000200) != 0);
            }

            /**
             * <code>.context.Timestamp timestamp = 10;</code>
             * @return The timestamp.
             */
            public context.ContextOuterClass.Timestamp getTimestamp() {
                if (timestampBuilder_ == null) {
                    return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
                } else {
                    return timestampBuilder_.getMessage();
                }
            }

            /**
             * <code>.context.Timestamp timestamp = 10;</code>
             */
            public Builder setTimestamp(context.ContextOuterClass.Timestamp value) {
                if (timestampBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    timestamp_ = value;
                } else {
                    timestampBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000200;
                onChanged();
                return this;
            }

            /**
             * <code>.context.Timestamp timestamp = 10;</code>
             */
            public Builder setTimestamp(context.ContextOuterClass.Timestamp.Builder builderForValue) {
                if (timestampBuilder_ == null) {
                    timestamp_ = builderForValue.build();
                } else {
                    timestampBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000200;
                onChanged();
                return this;
            }

            /**
             * <code>.context.Timestamp timestamp = 10;</code>
             */
            public Builder mergeTimestamp(context.ContextOuterClass.Timestamp value) {
                if (timestampBuilder_ == null) {
                    if (((bitField0_ & 0x00000200) != 0) && timestamp_ != null && timestamp_ != context.ContextOuterClass.Timestamp.getDefaultInstance()) {
                        getTimestampBuilder().mergeFrom(value);
                    } else {
                        timestamp_ = value;
                    }
                } else {
                    timestampBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000200;
                onChanged();
                return this;
            }

            /**
             * <code>.context.Timestamp timestamp = 10;</code>
             */
            public Builder clearTimestamp() {
                bitField0_ = (bitField0_ & ~0x00000200);
                timestamp_ = null;
                if (timestampBuilder_ != null) {
                    timestampBuilder_.dispose();
                    timestampBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.Timestamp timestamp = 10;</code>
             */
            public context.ContextOuterClass.Timestamp.Builder getTimestampBuilder() {
                bitField0_ |= 0x00000200;
                onChanged();
                return getTimestampFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.Timestamp timestamp = 10;</code>
             */
            public context.ContextOuterClass.TimestampOrBuilder getTimestampOrBuilder() {
                if (timestampBuilder_ != null) {
                    return timestampBuilder_.getMessageOrBuilder();
                } else {
                    return timestamp_ == null ? context.ContextOuterClass.Timestamp.getDefaultInstance() : timestamp_;
                }
            }

            /**
             * <code>.context.Timestamp timestamp = 10;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder> getTimestampFieldBuilder() {
                if (timestampBuilder_ == null) {
                    timestampBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Timestamp, context.ContextOuterClass.Timestamp.Builder, context.ContextOuterClass.TimestampOrBuilder>(getTimestamp(), getParentForChildren(), isClean());
                    timestamp_ = null;
                }
                return timestampBuilder_;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.Slice)
        }

        // @@protoc_insertion_point(class_scope:context.Slice)
        private static final context.ContextOuterClass.Slice DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.Slice();
        }

        public static context.ContextOuterClass.Slice getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<Slice> PARSER = new com.google.protobuf.AbstractParser<Slice>() {

            @java.lang.Override
            public Slice parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<Slice> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<Slice> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.Slice getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface SliceOwnerOrBuilder extends // @@protoc_insertion_point(interface_extends:context.SliceOwner)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>.context.Uuid owner_uuid = 1;</code>
         * @return Whether the ownerUuid field is set.
         */
        boolean hasOwnerUuid();

        /**
         * <code>.context.Uuid owner_uuid = 1;</code>
         * @return The ownerUuid.
         */
        context.ContextOuterClass.Uuid getOwnerUuid();

        /**
         * <code>.context.Uuid owner_uuid = 1;</code>
         */
        context.ContextOuterClass.UuidOrBuilder getOwnerUuidOrBuilder();

        /**
         * <code>string owner_string = 2;</code>
         * @return The ownerString.
         */
        java.lang.String getOwnerString();

        /**
         * <code>string owner_string = 2;</code>
         * @return The bytes for ownerString.
         */
        com.google.protobuf.ByteString getOwnerStringBytes();
    }

    /**
     * Protobuf type {@code context.SliceOwner}
     */
    public static final class SliceOwner extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.SliceOwner)
    SliceOwnerOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use SliceOwner.newBuilder() to construct.
        private SliceOwner(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private SliceOwner() {
            ownerString_ = "";
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new SliceOwner();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_SliceOwner_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_SliceOwner_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.SliceOwner.class, context.ContextOuterClass.SliceOwner.Builder.class);
        }

        public static final int OWNER_UUID_FIELD_NUMBER = 1;

        private context.ContextOuterClass.Uuid ownerUuid_;

        /**
         * <code>.context.Uuid owner_uuid = 1;</code>
         * @return Whether the ownerUuid field is set.
         */
        @java.lang.Override
        public boolean hasOwnerUuid() {
            return ownerUuid_ != null;
        }

        /**
         * <code>.context.Uuid owner_uuid = 1;</code>
         * @return The ownerUuid.
         */
        @java.lang.Override
        public context.ContextOuterClass.Uuid getOwnerUuid() {
            return ownerUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : ownerUuid_;
        }

        /**
         * <code>.context.Uuid owner_uuid = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.UuidOrBuilder getOwnerUuidOrBuilder() {
            return ownerUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : ownerUuid_;
        }

        public static final int OWNER_STRING_FIELD_NUMBER = 2;

        @SuppressWarnings("serial")
        private volatile java.lang.Object ownerString_ = "";

        /**
         * <code>string owner_string = 2;</code>
         * @return The ownerString.
         */
        @java.lang.Override
        public java.lang.String getOwnerString() {
            java.lang.Object ref = ownerString_;
            if (ref instanceof java.lang.String) {
                return (java.lang.String) ref;
            } else {
                com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                java.lang.String s = bs.toStringUtf8();
                ownerString_ = s;
                return s;
            }
        }

        /**
         * <code>string owner_string = 2;</code>
         * @return The bytes for ownerString.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString getOwnerStringBytes() {
            java.lang.Object ref = ownerString_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                ownerString_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            if (ownerUuid_ != null) {
                output.writeMessage(1, getOwnerUuid());
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(ownerString_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 2, ownerString_);
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            if (ownerUuid_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getOwnerUuid());
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(ownerString_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, ownerString_);
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.SliceOwner)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.SliceOwner other = (context.ContextOuterClass.SliceOwner) obj;
            if (hasOwnerUuid() != other.hasOwnerUuid())
                return false;
            if (hasOwnerUuid()) {
                if (!getOwnerUuid().equals(other.getOwnerUuid()))
                    return false;
            }
            if (!getOwnerString().equals(other.getOwnerString()))
                return false;
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            if (hasOwnerUuid()) {
                hash = (37 * hash) + OWNER_UUID_FIELD_NUMBER;
                hash = (53 * hash) + getOwnerUuid().hashCode();
            }
            hash = (37 * hash) + OWNER_STRING_FIELD_NUMBER;
            hash = (53 * hash) + getOwnerString().hashCode();
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.SliceOwner parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.SliceOwner parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.SliceOwner parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.SliceOwner parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.SliceOwner parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.SliceOwner parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.SliceOwner parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.SliceOwner parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.SliceOwner parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.SliceOwner parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.SliceOwner parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.SliceOwner parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.SliceOwner prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code context.SliceOwner}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.SliceOwner)
        context.ContextOuterClass.SliceOwnerOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_SliceOwner_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_SliceOwner_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.SliceOwner.class, context.ContextOuterClass.SliceOwner.Builder.class);
            }

            // Construct using context.ContextOuterClass.SliceOwner.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                ownerUuid_ = null;
                if (ownerUuidBuilder_ != null) {
                    ownerUuidBuilder_.dispose();
                    ownerUuidBuilder_ = null;
                }
                ownerString_ = "";
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_SliceOwner_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.SliceOwner getDefaultInstanceForType() {
                return context.ContextOuterClass.SliceOwner.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.SliceOwner build() {
                context.ContextOuterClass.SliceOwner result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.SliceOwner buildPartial() {
                context.ContextOuterClass.SliceOwner result = new context.ContextOuterClass.SliceOwner(this);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartial0(context.ContextOuterClass.SliceOwner result) {
                int from_bitField0_ = bitField0_;
                if (((from_bitField0_ & 0x00000001) != 0)) {
                    result.ownerUuid_ = ownerUuidBuilder_ == null ? ownerUuid_ : ownerUuidBuilder_.build();
                }
                if (((from_bitField0_ & 0x00000002) != 0)) {
                    result.ownerString_ = ownerString_;
                }
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.SliceOwner) {
                    return mergeFrom((context.ContextOuterClass.SliceOwner) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.SliceOwner other) {
                if (other == context.ContextOuterClass.SliceOwner.getDefaultInstance())
                    return this;
                if (other.hasOwnerUuid()) {
                    mergeOwnerUuid(other.getOwnerUuid());
                }
                if (!other.getOwnerString().isEmpty()) {
                    ownerString_ = other.ownerString_;
                    bitField0_ |= 0x00000002;
                    onChanged();
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 10:
                                {
                                    input.readMessage(getOwnerUuidFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000001;
                                    break;
                                }
                            // case 10
                            case 18:
                                {
                                    ownerString_ = input.readStringRequireUtf8();
                                    bitField0_ |= 0x00000002;
                                    break;
                                }
                            // case 18
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private context.ContextOuterClass.Uuid ownerUuid_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> ownerUuidBuilder_;

            /**
             * <code>.context.Uuid owner_uuid = 1;</code>
             * @return Whether the ownerUuid field is set.
             */
            public boolean hasOwnerUuid() {
                return ((bitField0_ & 0x00000001) != 0);
            }

            /**
             * <code>.context.Uuid owner_uuid = 1;</code>
             * @return The ownerUuid.
             */
            public context.ContextOuterClass.Uuid getOwnerUuid() {
                if (ownerUuidBuilder_ == null) {
                    return ownerUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : ownerUuid_;
                } else {
                    return ownerUuidBuilder_.getMessage();
                }
            }

            /**
             * <code>.context.Uuid owner_uuid = 1;</code>
             */
            public Builder setOwnerUuid(context.ContextOuterClass.Uuid value) {
                if (ownerUuidBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ownerUuid_ = value;
                } else {
                    ownerUuidBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.Uuid owner_uuid = 1;</code>
             */
            public Builder setOwnerUuid(context.ContextOuterClass.Uuid.Builder builderForValue) {
                if (ownerUuidBuilder_ == null) {
                    ownerUuid_ = builderForValue.build();
                } else {
                    ownerUuidBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.Uuid owner_uuid = 1;</code>
             */
            public Builder mergeOwnerUuid(context.ContextOuterClass.Uuid value) {
                if (ownerUuidBuilder_ == null) {
                    if (((bitField0_ & 0x00000001) != 0) && ownerUuid_ != null && ownerUuid_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
                        getOwnerUuidBuilder().mergeFrom(value);
                    } else {
                        ownerUuid_ = value;
                    }
                } else {
                    ownerUuidBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.Uuid owner_uuid = 1;</code>
             */
            public Builder clearOwnerUuid() {
                bitField0_ = (bitField0_ & ~0x00000001);
                ownerUuid_ = null;
                if (ownerUuidBuilder_ != null) {
                    ownerUuidBuilder_.dispose();
                    ownerUuidBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.Uuid owner_uuid = 1;</code>
             */
            public context.ContextOuterClass.Uuid.Builder getOwnerUuidBuilder() {
                bitField0_ |= 0x00000001;
                onChanged();
                return getOwnerUuidFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.Uuid owner_uuid = 1;</code>
             */
            public context.ContextOuterClass.UuidOrBuilder getOwnerUuidOrBuilder() {
                if (ownerUuidBuilder_ != null) {
                    return ownerUuidBuilder_.getMessageOrBuilder();
                } else {
                    return ownerUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : ownerUuid_;
                }
            }

            /**
             * <code>.context.Uuid owner_uuid = 1;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> getOwnerUuidFieldBuilder() {
                if (ownerUuidBuilder_ == null) {
                    ownerUuidBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder>(getOwnerUuid(), getParentForChildren(), isClean());
                    ownerUuid_ = null;
                }
                return ownerUuidBuilder_;
            }

            private java.lang.Object ownerString_ = "";

            /**
             * <code>string owner_string = 2;</code>
             * @return The ownerString.
             */
            public java.lang.String getOwnerString() {
                java.lang.Object ref = ownerString_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    ownerString_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }

            /**
             * <code>string owner_string = 2;</code>
             * @return The bytes for ownerString.
             */
            public com.google.protobuf.ByteString getOwnerStringBytes() {
                java.lang.Object ref = ownerString_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                    ownerString_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }

            /**
             * <code>string owner_string = 2;</code>
             * @param value The ownerString to set.
             * @return This builder for chaining.
             */
            public Builder setOwnerString(java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                ownerString_ = value;
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>string owner_string = 2;</code>
             * @return This builder for chaining.
             */
            public Builder clearOwnerString() {
                ownerString_ = getDefaultInstance().getOwnerString();
                bitField0_ = (bitField0_ & ~0x00000002);
                onChanged();
                return this;
            }

            /**
             * <code>string owner_string = 2;</code>
             * @param value The bytes for ownerString to set.
             * @return This builder for chaining.
             */
            public Builder setOwnerStringBytes(com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);
                ownerString_ = value;
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.SliceOwner)
        }

        // @@protoc_insertion_point(class_scope:context.SliceOwner)
        private static final context.ContextOuterClass.SliceOwner DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.SliceOwner();
        }

        public static context.ContextOuterClass.SliceOwner getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<SliceOwner> PARSER = new com.google.protobuf.AbstractParser<SliceOwner>() {

            @java.lang.Override
            public SliceOwner parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<SliceOwner> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<SliceOwner> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.SliceOwner getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface SliceStatusOrBuilder extends // @@protoc_insertion_point(interface_extends:context.SliceStatus)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>.context.SliceStatusEnum slice_status = 1;</code>
         * @return The enum numeric value on the wire for sliceStatus.
         */
        int getSliceStatusValue();

        /**
         * <code>.context.SliceStatusEnum slice_status = 1;</code>
         * @return The sliceStatus.
         */
        context.ContextOuterClass.SliceStatusEnum getSliceStatus();
    }

    /**
     * Protobuf type {@code context.SliceStatus}
     */
    public static final class SliceStatus extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.SliceStatus)
    SliceStatusOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use SliceStatus.newBuilder() to construct.
        private SliceStatus(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private SliceStatus() {
            sliceStatus_ = 0;
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new SliceStatus();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_SliceStatus_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_SliceStatus_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.SliceStatus.class, context.ContextOuterClass.SliceStatus.Builder.class);
        }

        public static final int SLICE_STATUS_FIELD_NUMBER = 1;

        private int sliceStatus_ = 0;

        /**
         * <code>.context.SliceStatusEnum slice_status = 1;</code>
         * @return The enum numeric value on the wire for sliceStatus.
         */
        @java.lang.Override
        public int getSliceStatusValue() {
            return sliceStatus_;
        }

        /**
         * <code>.context.SliceStatusEnum slice_status = 1;</code>
         * @return The sliceStatus.
         */
        @java.lang.Override
        public context.ContextOuterClass.SliceStatusEnum getSliceStatus() {
            context.ContextOuterClass.SliceStatusEnum result = context.ContextOuterClass.SliceStatusEnum.forNumber(sliceStatus_);
            return result == null ? context.ContextOuterClass.SliceStatusEnum.UNRECOGNIZED : result;
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            if (sliceStatus_ != context.ContextOuterClass.SliceStatusEnum.SLICESTATUS_UNDEFINED.getNumber()) {
                output.writeEnum(1, sliceStatus_);
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            if (sliceStatus_ != context.ContextOuterClass.SliceStatusEnum.SLICESTATUS_UNDEFINED.getNumber()) {
                size += com.google.protobuf.CodedOutputStream.computeEnumSize(1, sliceStatus_);
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.SliceStatus)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.SliceStatus other = (context.ContextOuterClass.SliceStatus) obj;
            if (sliceStatus_ != other.sliceStatus_)
                return false;
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            hash = (37 * hash) + SLICE_STATUS_FIELD_NUMBER;
            hash = (53 * hash) + sliceStatus_;
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.SliceStatus parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.SliceStatus parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.SliceStatus parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.SliceStatus parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.SliceStatus parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.SliceStatus parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.SliceStatus parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.SliceStatus parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.SliceStatus parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.SliceStatus parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.SliceStatus parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.SliceStatus parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.SliceStatus prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code context.SliceStatus}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.SliceStatus)
        context.ContextOuterClass.SliceStatusOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_SliceStatus_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_SliceStatus_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.SliceStatus.class, context.ContextOuterClass.SliceStatus.Builder.class);
            }

            // Construct using context.ContextOuterClass.SliceStatus.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                sliceStatus_ = 0;
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_SliceStatus_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.SliceStatus getDefaultInstanceForType() {
                return context.ContextOuterClass.SliceStatus.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.SliceStatus build() {
                context.ContextOuterClass.SliceStatus result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.SliceStatus buildPartial() {
                context.ContextOuterClass.SliceStatus result = new context.ContextOuterClass.SliceStatus(this);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartial0(context.ContextOuterClass.SliceStatus result) {
                int from_bitField0_ = bitField0_;
                if (((from_bitField0_ & 0x00000001) != 0)) {
                    result.sliceStatus_ = sliceStatus_;
                }
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.SliceStatus) {
                    return mergeFrom((context.ContextOuterClass.SliceStatus) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.SliceStatus other) {
                if (other == context.ContextOuterClass.SliceStatus.getDefaultInstance())
                    return this;
                if (other.sliceStatus_ != 0) {
                    setSliceStatusValue(other.getSliceStatusValue());
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 8:
                                {
                                    sliceStatus_ = input.readEnum();
                                    bitField0_ |= 0x00000001;
                                    break;
                                }
                            // case 8
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private int sliceStatus_ = 0;

            /**
             * <code>.context.SliceStatusEnum slice_status = 1;</code>
             * @return The enum numeric value on the wire for sliceStatus.
             */
            @java.lang.Override
            public int getSliceStatusValue() {
                return sliceStatus_;
            }

            /**
             * <code>.context.SliceStatusEnum slice_status = 1;</code>
             * @param value The enum numeric value on the wire for sliceStatus to set.
             * @return This builder for chaining.
             */
            public Builder setSliceStatusValue(int value) {
                sliceStatus_ = value;
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.SliceStatusEnum slice_status = 1;</code>
             * @return The sliceStatus.
             */
            @java.lang.Override
            public context.ContextOuterClass.SliceStatusEnum getSliceStatus() {
                context.ContextOuterClass.SliceStatusEnum result = context.ContextOuterClass.SliceStatusEnum.forNumber(sliceStatus_);
                return result == null ? context.ContextOuterClass.SliceStatusEnum.UNRECOGNIZED : result;
            }

            /**
             * <code>.context.SliceStatusEnum slice_status = 1;</code>
             * @param value The sliceStatus to set.
             * @return This builder for chaining.
             */
            public Builder setSliceStatus(context.ContextOuterClass.SliceStatusEnum value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                bitField0_ |= 0x00000001;
                sliceStatus_ = value.getNumber();
                onChanged();
                return this;
            }

            /**
             * <code>.context.SliceStatusEnum slice_status = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearSliceStatus() {
                bitField0_ = (bitField0_ & ~0x00000001);
                sliceStatus_ = 0;
                onChanged();
                return this;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.SliceStatus)
        }

        // @@protoc_insertion_point(class_scope:context.SliceStatus)
        private static final context.ContextOuterClass.SliceStatus DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.SliceStatus();
        }

        public static context.ContextOuterClass.SliceStatus getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<SliceStatus> PARSER = new com.google.protobuf.AbstractParser<SliceStatus>() {

            @java.lang.Override
            public SliceStatus parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<SliceStatus> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<SliceStatus> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.SliceStatus getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface SliceConfigOrBuilder extends // @@protoc_insertion_point(interface_extends:context.SliceConfig)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>repeated .context.ConfigRule config_rules = 1;</code>
         */
        java.util.List<context.ContextOuterClass.ConfigRule> getConfigRulesList();

        /**
         * <code>repeated .context.ConfigRule config_rules = 1;</code>
         */
        context.ContextOuterClass.ConfigRule getConfigRules(int index);

        /**
         * <code>repeated .context.ConfigRule config_rules = 1;</code>
         */
        int getConfigRulesCount();

        /**
         * <code>repeated .context.ConfigRule config_rules = 1;</code>
         */
        java.util.List<? extends context.ContextOuterClass.ConfigRuleOrBuilder> getConfigRulesOrBuilderList();

        /**
         * <code>repeated .context.ConfigRule config_rules = 1;</code>
         */
        context.ContextOuterClass.ConfigRuleOrBuilder getConfigRulesOrBuilder(int index);
    }

    /**
     * Protobuf type {@code context.SliceConfig}
     */
    public static final class SliceConfig extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.SliceConfig)
    SliceConfigOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use SliceConfig.newBuilder() to construct.
        private SliceConfig(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private SliceConfig() {
            configRules_ = java.util.Collections.emptyList();
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new SliceConfig();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_SliceConfig_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_SliceConfig_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.SliceConfig.class, context.ContextOuterClass.SliceConfig.Builder.class);
        }

        public static final int CONFIG_RULES_FIELD_NUMBER = 1;

        @SuppressWarnings("serial")
        private java.util.List<context.ContextOuterClass.ConfigRule> configRules_;

        /**
         * <code>repeated .context.ConfigRule config_rules = 1;</code>
         */
        @java.lang.Override
        public java.util.List<context.ContextOuterClass.ConfigRule> getConfigRulesList() {
            return configRules_;
        }

        /**
         * <code>repeated .context.ConfigRule config_rules = 1;</code>
         */
        @java.lang.Override
        public java.util.List<? extends context.ContextOuterClass.ConfigRuleOrBuilder> getConfigRulesOrBuilderList() {
            return configRules_;
        }

        /**
         * <code>repeated .context.ConfigRule config_rules = 1;</code>
         */
        @java.lang.Override
        public int getConfigRulesCount() {
            return configRules_.size();
        }

        /**
         * <code>repeated .context.ConfigRule config_rules = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.ConfigRule getConfigRules(int index) {
            return configRules_.get(index);
        }

        /**
         * <code>repeated .context.ConfigRule config_rules = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.ConfigRuleOrBuilder getConfigRulesOrBuilder(int index) {
            return configRules_.get(index);
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            for (int i = 0; i < configRules_.size(); i++) {
                output.writeMessage(1, configRules_.get(i));
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            for (int i = 0; i < configRules_.size(); i++) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, configRules_.get(i));
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.SliceConfig)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.SliceConfig other = (context.ContextOuterClass.SliceConfig) obj;
            if (!getConfigRulesList().equals(other.getConfigRulesList()))
                return false;
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            if (getConfigRulesCount() > 0) {
                hash = (37 * hash) + CONFIG_RULES_FIELD_NUMBER;
                hash = (53 * hash) + getConfigRulesList().hashCode();
            }
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.SliceConfig parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.SliceConfig parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.SliceConfig parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.SliceConfig parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.SliceConfig parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.SliceConfig parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.SliceConfig parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.SliceConfig parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.SliceConfig parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.SliceConfig parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.SliceConfig parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.SliceConfig parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.SliceConfig prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code context.SliceConfig}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.SliceConfig)
        context.ContextOuterClass.SliceConfigOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_SliceConfig_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_SliceConfig_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.SliceConfig.class, context.ContextOuterClass.SliceConfig.Builder.class);
            }

            // Construct using context.ContextOuterClass.SliceConfig.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                if (configRulesBuilder_ == null) {
                    configRules_ = java.util.Collections.emptyList();
                } else {
                    configRules_ = null;
                    configRulesBuilder_.clear();
                }
                bitField0_ = (bitField0_ & ~0x00000001);
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_SliceConfig_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.SliceConfig getDefaultInstanceForType() {
                return context.ContextOuterClass.SliceConfig.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.SliceConfig build() {
                context.ContextOuterClass.SliceConfig result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.SliceConfig buildPartial() {
                context.ContextOuterClass.SliceConfig result = new context.ContextOuterClass.SliceConfig(this);
                buildPartialRepeatedFields(result);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartialRepeatedFields(context.ContextOuterClass.SliceConfig result) {
                if (configRulesBuilder_ == null) {
                    if (((bitField0_ & 0x00000001) != 0)) {
                        configRules_ = java.util.Collections.unmodifiableList(configRules_);
                        bitField0_ = (bitField0_ & ~0x00000001);
                    }
                    result.configRules_ = configRules_;
                } else {
                    result.configRules_ = configRulesBuilder_.build();
                }
            }

            private void buildPartial0(context.ContextOuterClass.SliceConfig result) {
                int from_bitField0_ = bitField0_;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.SliceConfig) {
                    return mergeFrom((context.ContextOuterClass.SliceConfig) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.SliceConfig other) {
                if (other == context.ContextOuterClass.SliceConfig.getDefaultInstance())
                    return this;
                if (configRulesBuilder_ == null) {
                    if (!other.configRules_.isEmpty()) {
                        if (configRules_.isEmpty()) {
                            configRules_ = other.configRules_;
                            bitField0_ = (bitField0_ & ~0x00000001);
                        } else {
                            ensureConfigRulesIsMutable();
                            configRules_.addAll(other.configRules_);
                        }
                        onChanged();
                    }
                } else {
                    if (!other.configRules_.isEmpty()) {
                        if (configRulesBuilder_.isEmpty()) {
                            configRulesBuilder_.dispose();
                            configRulesBuilder_ = null;
                            configRules_ = other.configRules_;
                            bitField0_ = (bitField0_ & ~0x00000001);
                            configRulesBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getConfigRulesFieldBuilder() : null;
                        } else {
                            configRulesBuilder_.addAllMessages(other.configRules_);
                        }
                    }
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 10:
                                {
                                    context.ContextOuterClass.ConfigRule m = input.readMessage(context.ContextOuterClass.ConfigRule.parser(), extensionRegistry);
                                    if (configRulesBuilder_ == null) {
                                        ensureConfigRulesIsMutable();
                                        configRules_.add(m);
                                    } else {
                                        configRulesBuilder_.addMessage(m);
                                    }
                                    break;
                                }
                            // case 10
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private java.util.List<context.ContextOuterClass.ConfigRule> configRules_ = java.util.Collections.emptyList();

            private void ensureConfigRulesIsMutable() {
                if (!((bitField0_ & 0x00000001) != 0)) {
                    configRules_ = new java.util.ArrayList<context.ContextOuterClass.ConfigRule>(configRules_);
                    bitField0_ |= 0x00000001;
                }
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.ConfigRule, context.ContextOuterClass.ConfigRule.Builder, context.ContextOuterClass.ConfigRuleOrBuilder> configRulesBuilder_;

            /**
             * <code>repeated .context.ConfigRule config_rules = 1;</code>
             */
            public java.util.List<context.ContextOuterClass.ConfigRule> getConfigRulesList() {
                if (configRulesBuilder_ == null) {
                    return java.util.Collections.unmodifiableList(configRules_);
                } else {
                    return configRulesBuilder_.getMessageList();
                }
            }

            /**
             * <code>repeated .context.ConfigRule config_rules = 1;</code>
             */
            public int getConfigRulesCount() {
                if (configRulesBuilder_ == null) {
                    return configRules_.size();
                } else {
                    return configRulesBuilder_.getCount();
                }
            }

            /**
             * <code>repeated .context.ConfigRule config_rules = 1;</code>
             */
            public context.ContextOuterClass.ConfigRule getConfigRules(int index) {
                if (configRulesBuilder_ == null) {
                    return configRules_.get(index);
                } else {
                    return configRulesBuilder_.getMessage(index);
                }
            }

            /**
             * <code>repeated .context.ConfigRule config_rules = 1;</code>
             */
            public Builder setConfigRules(int index, context.ContextOuterClass.ConfigRule value) {
                if (configRulesBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureConfigRulesIsMutable();
                    configRules_.set(index, value);
                    onChanged();
                } else {
                    configRulesBuilder_.setMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.ConfigRule config_rules = 1;</code>
             */
            public Builder setConfigRules(int index, context.ContextOuterClass.ConfigRule.Builder builderForValue) {
                if (configRulesBuilder_ == null) {
                    ensureConfigRulesIsMutable();
                    configRules_.set(index, builderForValue.build());
                    onChanged();
                } else {
                    configRulesBuilder_.setMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.ConfigRule config_rules = 1;</code>
             */
            public Builder addConfigRules(context.ContextOuterClass.ConfigRule value) {
                if (configRulesBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureConfigRulesIsMutable();
                    configRules_.add(value);
                    onChanged();
                } else {
                    configRulesBuilder_.addMessage(value);
                }
                return this;
            }

            /**
             * <code>repeated .context.ConfigRule config_rules = 1;</code>
             */
            public Builder addConfigRules(int index, context.ContextOuterClass.ConfigRule value) {
                if (configRulesBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureConfigRulesIsMutable();
                    configRules_.add(index, value);
                    onChanged();
                } else {
                    configRulesBuilder_.addMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.ConfigRule config_rules = 1;</code>
             */
            public Builder addConfigRules(context.ContextOuterClass.ConfigRule.Builder builderForValue) {
                if (configRulesBuilder_ == null) {
                    ensureConfigRulesIsMutable();
                    configRules_.add(builderForValue.build());
                    onChanged();
                } else {
                    configRulesBuilder_.addMessage(builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.ConfigRule config_rules = 1;</code>
             */
            public Builder addConfigRules(int index, context.ContextOuterClass.ConfigRule.Builder builderForValue) {
                if (configRulesBuilder_ == null) {
                    ensureConfigRulesIsMutable();
                    configRules_.add(index, builderForValue.build());
                    onChanged();
                } else {
                    configRulesBuilder_.addMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.ConfigRule config_rules = 1;</code>
             */
            public Builder addAllConfigRules(java.lang.Iterable<? extends context.ContextOuterClass.ConfigRule> values) {
                if (configRulesBuilder_ == null) {
                    ensureConfigRulesIsMutable();
                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, configRules_);
                    onChanged();
                } else {
                    configRulesBuilder_.addAllMessages(values);
                }
                return this;
            }

            /**
             * <code>repeated .context.ConfigRule config_rules = 1;</code>
             */
            public Builder clearConfigRules() {
                if (configRulesBuilder_ == null) {
                    configRules_ = java.util.Collections.emptyList();
                    bitField0_ = (bitField0_ & ~0x00000001);
                    onChanged();
                } else {
                    configRulesBuilder_.clear();
                }
                return this;
            }

            /**
             * <code>repeated .context.ConfigRule config_rules = 1;</code>
             */
            public Builder removeConfigRules(int index) {
                if (configRulesBuilder_ == null) {
                    ensureConfigRulesIsMutable();
                    configRules_.remove(index);
                    onChanged();
                } else {
                    configRulesBuilder_.remove(index);
                }
                return this;
            }

            /**
             * <code>repeated .context.ConfigRule config_rules = 1;</code>
             */
            public context.ContextOuterClass.ConfigRule.Builder getConfigRulesBuilder(int index) {
                return getConfigRulesFieldBuilder().getBuilder(index);
            }

            /**
             * <code>repeated .context.ConfigRule config_rules = 1;</code>
             */
            public context.ContextOuterClass.ConfigRuleOrBuilder getConfigRulesOrBuilder(int index) {
                if (configRulesBuilder_ == null) {
                    return configRules_.get(index);
                } else {
                    return configRulesBuilder_.getMessageOrBuilder(index);
                }
            }

            /**
             * <code>repeated .context.ConfigRule config_rules = 1;</code>
             */
            public java.util.List<? extends context.ContextOuterClass.ConfigRuleOrBuilder> getConfigRulesOrBuilderList() {
                if (configRulesBuilder_ != null) {
                    return configRulesBuilder_.getMessageOrBuilderList();
                } else {
                    return java.util.Collections.unmodifiableList(configRules_);
                }
            }

            /**
             * <code>repeated .context.ConfigRule config_rules = 1;</code>
             */
            public context.ContextOuterClass.ConfigRule.Builder addConfigRulesBuilder() {
                return getConfigRulesFieldBuilder().addBuilder(context.ContextOuterClass.ConfigRule.getDefaultInstance());
            }

            /**
             * <code>repeated .context.ConfigRule config_rules = 1;</code>
             */
            public context.ContextOuterClass.ConfigRule.Builder addConfigRulesBuilder(int index) {
                return getConfigRulesFieldBuilder().addBuilder(index, context.ContextOuterClass.ConfigRule.getDefaultInstance());
            }

            /**
             * <code>repeated .context.ConfigRule config_rules = 1;</code>
             */
            public java.util.List<context.ContextOuterClass.ConfigRule.Builder> getConfigRulesBuilderList() {
                return getConfigRulesFieldBuilder().getBuilderList();
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.ConfigRule, context.ContextOuterClass.ConfigRule.Builder, context.ContextOuterClass.ConfigRuleOrBuilder> getConfigRulesFieldBuilder() {
                if (configRulesBuilder_ == null) {
                    configRulesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.ConfigRule, context.ContextOuterClass.ConfigRule.Builder, context.ContextOuterClass.ConfigRuleOrBuilder>(configRules_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
                    configRules_ = null;
                }
                return configRulesBuilder_;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.SliceConfig)
        }

        // @@protoc_insertion_point(class_scope:context.SliceConfig)
        private static final context.ContextOuterClass.SliceConfig DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.SliceConfig();
        }

        public static context.ContextOuterClass.SliceConfig getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<SliceConfig> PARSER = new com.google.protobuf.AbstractParser<SliceConfig>() {

            @java.lang.Override
            public SliceConfig parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<SliceConfig> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<SliceConfig> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.SliceConfig getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface SliceIdListOrBuilder extends // @@protoc_insertion_point(interface_extends:context.SliceIdList)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>repeated .context.SliceId slice_ids = 1;</code>
         */
        java.util.List<context.ContextOuterClass.SliceId> getSliceIdsList();

        /**
         * <code>repeated .context.SliceId slice_ids = 1;</code>
         */
        context.ContextOuterClass.SliceId getSliceIds(int index);

        /**
         * <code>repeated .context.SliceId slice_ids = 1;</code>
         */
        int getSliceIdsCount();

        /**
         * <code>repeated .context.SliceId slice_ids = 1;</code>
         */
        java.util.List<? extends context.ContextOuterClass.SliceIdOrBuilder> getSliceIdsOrBuilderList();

        /**
         * <code>repeated .context.SliceId slice_ids = 1;</code>
         */
        context.ContextOuterClass.SliceIdOrBuilder getSliceIdsOrBuilder(int index);
    }

    /**
     * Protobuf type {@code context.SliceIdList}
     */
    public static final class SliceIdList extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.SliceIdList)
    SliceIdListOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use SliceIdList.newBuilder() to construct.
        private SliceIdList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private SliceIdList() {
            sliceIds_ = java.util.Collections.emptyList();
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new SliceIdList();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_SliceIdList_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_SliceIdList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.SliceIdList.class, context.ContextOuterClass.SliceIdList.Builder.class);
        }

        public static final int SLICE_IDS_FIELD_NUMBER = 1;

        @SuppressWarnings("serial")
        private java.util.List<context.ContextOuterClass.SliceId> sliceIds_;

        /**
         * <code>repeated .context.SliceId slice_ids = 1;</code>
         */
        @java.lang.Override
        public java.util.List<context.ContextOuterClass.SliceId> getSliceIdsList() {
            return sliceIds_;
        }

        /**
         * <code>repeated .context.SliceId slice_ids = 1;</code>
         */
        @java.lang.Override
        public java.util.List<? extends context.ContextOuterClass.SliceIdOrBuilder> getSliceIdsOrBuilderList() {
            return sliceIds_;
        }

        /**
         * <code>repeated .context.SliceId slice_ids = 1;</code>
         */
        @java.lang.Override
        public int getSliceIdsCount() {
            return sliceIds_.size();
        }

        /**
         * <code>repeated .context.SliceId slice_ids = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.SliceId getSliceIds(int index) {
            return sliceIds_.get(index);
        }

        /**
         * <code>repeated .context.SliceId slice_ids = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.SliceIdOrBuilder getSliceIdsOrBuilder(int index) {
            return sliceIds_.get(index);
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            for (int i = 0; i < sliceIds_.size(); i++) {
                output.writeMessage(1, sliceIds_.get(i));
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            for (int i = 0; i < sliceIds_.size(); i++) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, sliceIds_.get(i));
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.SliceIdList)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.SliceIdList other = (context.ContextOuterClass.SliceIdList) obj;
            if (!getSliceIdsList().equals(other.getSliceIdsList()))
                return false;
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            if (getSliceIdsCount() > 0) {
                hash = (37 * hash) + SLICE_IDS_FIELD_NUMBER;
                hash = (53 * hash) + getSliceIdsList().hashCode();
            }
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.SliceIdList parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.SliceIdList parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.SliceIdList parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.SliceIdList parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.SliceIdList parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.SliceIdList parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.SliceIdList parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.SliceIdList parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.SliceIdList parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.SliceIdList parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.SliceIdList parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.SliceIdList parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.SliceIdList prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code context.SliceIdList}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.SliceIdList)
        context.ContextOuterClass.SliceIdListOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_SliceIdList_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_SliceIdList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.SliceIdList.class, context.ContextOuterClass.SliceIdList.Builder.class);
            }

            // Construct using context.ContextOuterClass.SliceIdList.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                if (sliceIdsBuilder_ == null) {
                    sliceIds_ = java.util.Collections.emptyList();
                } else {
                    sliceIds_ = null;
                    sliceIdsBuilder_.clear();
                }
                bitField0_ = (bitField0_ & ~0x00000001);
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_SliceIdList_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.SliceIdList getDefaultInstanceForType() {
                return context.ContextOuterClass.SliceIdList.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.SliceIdList build() {
                context.ContextOuterClass.SliceIdList result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.SliceIdList buildPartial() {
                context.ContextOuterClass.SliceIdList result = new context.ContextOuterClass.SliceIdList(this);
                buildPartialRepeatedFields(result);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartialRepeatedFields(context.ContextOuterClass.SliceIdList result) {
                if (sliceIdsBuilder_ == null) {
                    if (((bitField0_ & 0x00000001) != 0)) {
                        sliceIds_ = java.util.Collections.unmodifiableList(sliceIds_);
                        bitField0_ = (bitField0_ & ~0x00000001);
                    }
                    result.sliceIds_ = sliceIds_;
                } else {
                    result.sliceIds_ = sliceIdsBuilder_.build();
                }
            }

            private void buildPartial0(context.ContextOuterClass.SliceIdList result) {
                int from_bitField0_ = bitField0_;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.SliceIdList) {
                    return mergeFrom((context.ContextOuterClass.SliceIdList) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.SliceIdList other) {
                if (other == context.ContextOuterClass.SliceIdList.getDefaultInstance())
                    return this;
                if (sliceIdsBuilder_ == null) {
                    if (!other.sliceIds_.isEmpty()) {
                        if (sliceIds_.isEmpty()) {
                            sliceIds_ = other.sliceIds_;
                            bitField0_ = (bitField0_ & ~0x00000001);
                        } else {
                            ensureSliceIdsIsMutable();
                            sliceIds_.addAll(other.sliceIds_);
                        }
                        onChanged();
                    }
                } else {
                    if (!other.sliceIds_.isEmpty()) {
                        if (sliceIdsBuilder_.isEmpty()) {
                            sliceIdsBuilder_.dispose();
                            sliceIdsBuilder_ = null;
                            sliceIds_ = other.sliceIds_;
                            bitField0_ = (bitField0_ & ~0x00000001);
                            sliceIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getSliceIdsFieldBuilder() : null;
                        } else {
                            sliceIdsBuilder_.addAllMessages(other.sliceIds_);
                        }
                    }
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 10:
                                {
                                    context.ContextOuterClass.SliceId m = input.readMessage(context.ContextOuterClass.SliceId.parser(), extensionRegistry);
                                    if (sliceIdsBuilder_ == null) {
                                        ensureSliceIdsIsMutable();
                                        sliceIds_.add(m);
                                    } else {
                                        sliceIdsBuilder_.addMessage(m);
                                    }
                                    break;
                                }
                            // case 10
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private java.util.List<context.ContextOuterClass.SliceId> sliceIds_ = java.util.Collections.emptyList();

            private void ensureSliceIdsIsMutable() {
                if (!((bitField0_ & 0x00000001) != 0)) {
                    sliceIds_ = new java.util.ArrayList<context.ContextOuterClass.SliceId>(sliceIds_);
                    bitField0_ |= 0x00000001;
                }
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder> sliceIdsBuilder_;

            /**
             * <code>repeated .context.SliceId slice_ids = 1;</code>
             */
            public java.util.List<context.ContextOuterClass.SliceId> getSliceIdsList() {
                if (sliceIdsBuilder_ == null) {
                    return java.util.Collections.unmodifiableList(sliceIds_);
                } else {
                    return sliceIdsBuilder_.getMessageList();
                }
            }

            /**
             * <code>repeated .context.SliceId slice_ids = 1;</code>
             */
            public int getSliceIdsCount() {
                if (sliceIdsBuilder_ == null) {
                    return sliceIds_.size();
                } else {
                    return sliceIdsBuilder_.getCount();
                }
            }

            /**
             * <code>repeated .context.SliceId slice_ids = 1;</code>
             */
            public context.ContextOuterClass.SliceId getSliceIds(int index) {
                if (sliceIdsBuilder_ == null) {
                    return sliceIds_.get(index);
                } else {
                    return sliceIdsBuilder_.getMessage(index);
                }
            }

            /**
             * <code>repeated .context.SliceId slice_ids = 1;</code>
             */
            public Builder setSliceIds(int index, context.ContextOuterClass.SliceId value) {
                if (sliceIdsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureSliceIdsIsMutable();
                    sliceIds_.set(index, value);
                    onChanged();
                } else {
                    sliceIdsBuilder_.setMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.SliceId slice_ids = 1;</code>
             */
            public Builder setSliceIds(int index, context.ContextOuterClass.SliceId.Builder builderForValue) {
                if (sliceIdsBuilder_ == null) {
                    ensureSliceIdsIsMutable();
                    sliceIds_.set(index, builderForValue.build());
                    onChanged();
                } else {
                    sliceIdsBuilder_.setMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.SliceId slice_ids = 1;</code>
             */
            public Builder addSliceIds(context.ContextOuterClass.SliceId value) {
                if (sliceIdsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureSliceIdsIsMutable();
                    sliceIds_.add(value);
                    onChanged();
                } else {
                    sliceIdsBuilder_.addMessage(value);
                }
                return this;
            }

            /**
             * <code>repeated .context.SliceId slice_ids = 1;</code>
             */
            public Builder addSliceIds(int index, context.ContextOuterClass.SliceId value) {
                if (sliceIdsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureSliceIdsIsMutable();
                    sliceIds_.add(index, value);
                    onChanged();
                } else {
                    sliceIdsBuilder_.addMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.SliceId slice_ids = 1;</code>
             */
            public Builder addSliceIds(context.ContextOuterClass.SliceId.Builder builderForValue) {
                if (sliceIdsBuilder_ == null) {
                    ensureSliceIdsIsMutable();
                    sliceIds_.add(builderForValue.build());
                    onChanged();
                } else {
                    sliceIdsBuilder_.addMessage(builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.SliceId slice_ids = 1;</code>
             */
            public Builder addSliceIds(int index, context.ContextOuterClass.SliceId.Builder builderForValue) {
                if (sliceIdsBuilder_ == null) {
                    ensureSliceIdsIsMutable();
                    sliceIds_.add(index, builderForValue.build());
                    onChanged();
                } else {
                    sliceIdsBuilder_.addMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.SliceId slice_ids = 1;</code>
             */
            public Builder addAllSliceIds(java.lang.Iterable<? extends context.ContextOuterClass.SliceId> values) {
                if (sliceIdsBuilder_ == null) {
                    ensureSliceIdsIsMutable();
                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, sliceIds_);
                    onChanged();
                } else {
                    sliceIdsBuilder_.addAllMessages(values);
                }
                return this;
            }

            /**
             * <code>repeated .context.SliceId slice_ids = 1;</code>
             */
            public Builder clearSliceIds() {
                if (sliceIdsBuilder_ == null) {
                    sliceIds_ = java.util.Collections.emptyList();
                    bitField0_ = (bitField0_ & ~0x00000001);
                    onChanged();
                } else {
                    sliceIdsBuilder_.clear();
                }
                return this;
            }

            /**
             * <code>repeated .context.SliceId slice_ids = 1;</code>
             */
            public Builder removeSliceIds(int index) {
                if (sliceIdsBuilder_ == null) {
                    ensureSliceIdsIsMutable();
                    sliceIds_.remove(index);
                    onChanged();
                } else {
                    sliceIdsBuilder_.remove(index);
                }
                return this;
            }

            /**
             * <code>repeated .context.SliceId slice_ids = 1;</code>
             */
            public context.ContextOuterClass.SliceId.Builder getSliceIdsBuilder(int index) {
                return getSliceIdsFieldBuilder().getBuilder(index);
            }

            /**
             * <code>repeated .context.SliceId slice_ids = 1;</code>
             */
            public context.ContextOuterClass.SliceIdOrBuilder getSliceIdsOrBuilder(int index) {
                if (sliceIdsBuilder_ == null) {
                    return sliceIds_.get(index);
                } else {
                    return sliceIdsBuilder_.getMessageOrBuilder(index);
                }
            }

            /**
             * <code>repeated .context.SliceId slice_ids = 1;</code>
             */
            public java.util.List<? extends context.ContextOuterClass.SliceIdOrBuilder> getSliceIdsOrBuilderList() {
                if (sliceIdsBuilder_ != null) {
                    return sliceIdsBuilder_.getMessageOrBuilderList();
                } else {
                    return java.util.Collections.unmodifiableList(sliceIds_);
                }
            }

            /**
             * <code>repeated .context.SliceId slice_ids = 1;</code>
             */
            public context.ContextOuterClass.SliceId.Builder addSliceIdsBuilder() {
                return getSliceIdsFieldBuilder().addBuilder(context.ContextOuterClass.SliceId.getDefaultInstance());
            }

            /**
             * <code>repeated .context.SliceId slice_ids = 1;</code>
             */
            public context.ContextOuterClass.SliceId.Builder addSliceIdsBuilder(int index) {
                return getSliceIdsFieldBuilder().addBuilder(index, context.ContextOuterClass.SliceId.getDefaultInstance());
            }

            /**
             * <code>repeated .context.SliceId slice_ids = 1;</code>
             */
            public java.util.List<context.ContextOuterClass.SliceId.Builder> getSliceIdsBuilderList() {
                return getSliceIdsFieldBuilder().getBuilderList();
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder> getSliceIdsFieldBuilder() {
                if (sliceIdsBuilder_ == null) {
                    sliceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder>(sliceIds_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
                    sliceIds_ = null;
                }
                return sliceIdsBuilder_;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.SliceIdList)
        }

        // @@protoc_insertion_point(class_scope:context.SliceIdList)
        private static final context.ContextOuterClass.SliceIdList DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.SliceIdList();
        }

        public static context.ContextOuterClass.SliceIdList getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<SliceIdList> PARSER = new com.google.protobuf.AbstractParser<SliceIdList>() {

            @java.lang.Override
            public SliceIdList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<SliceIdList> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<SliceIdList> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.SliceIdList getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface SliceListOrBuilder extends // @@protoc_insertion_point(interface_extends:context.SliceList)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>repeated .context.Slice slices = 1;</code>
         */
        java.util.List<context.ContextOuterClass.Slice> getSlicesList();

        /**
         * <code>repeated .context.Slice slices = 1;</code>
         */
        context.ContextOuterClass.Slice getSlices(int index);

        /**
         * <code>repeated .context.Slice slices = 1;</code>
         */
        int getSlicesCount();

        /**
         * <code>repeated .context.Slice slices = 1;</code>
         */
        java.util.List<? extends context.ContextOuterClass.SliceOrBuilder> getSlicesOrBuilderList();

        /**
         * <code>repeated .context.Slice slices = 1;</code>
         */
        context.ContextOuterClass.SliceOrBuilder getSlicesOrBuilder(int index);
    }

    /**
     * Protobuf type {@code context.SliceList}
     */
    public static final class SliceList extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.SliceList)
    SliceListOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use SliceList.newBuilder() to construct.
        private SliceList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private SliceList() {
            slices_ = java.util.Collections.emptyList();
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new SliceList();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_SliceList_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_SliceList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.SliceList.class, context.ContextOuterClass.SliceList.Builder.class);
        }

        public static final int SLICES_FIELD_NUMBER = 1;

        @SuppressWarnings("serial")
        private java.util.List<context.ContextOuterClass.Slice> slices_;

        /**
         * <code>repeated .context.Slice slices = 1;</code>
         */
        @java.lang.Override
        public java.util.List<context.ContextOuterClass.Slice> getSlicesList() {
            return slices_;
        }

        /**
         * <code>repeated .context.Slice slices = 1;</code>
         */
        @java.lang.Override
        public java.util.List<? extends context.ContextOuterClass.SliceOrBuilder> getSlicesOrBuilderList() {
            return slices_;
        }

        /**
         * <code>repeated .context.Slice slices = 1;</code>
         */
        @java.lang.Override
        public int getSlicesCount() {
            return slices_.size();
        }

        /**
         * <code>repeated .context.Slice slices = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.Slice getSlices(int index) {
            return slices_.get(index);
        }

        /**
         * <code>repeated .context.Slice slices = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.SliceOrBuilder getSlicesOrBuilder(int index) {
            return slices_.get(index);
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            for (int i = 0; i < slices_.size(); i++) {
                output.writeMessage(1, slices_.get(i));
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            for (int i = 0; i < slices_.size(); i++) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, slices_.get(i));
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.SliceList)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.SliceList other = (context.ContextOuterClass.SliceList) obj;
            if (!getSlicesList().equals(other.getSlicesList()))
                return false;
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            if (getSlicesCount() > 0) {
                hash = (37 * hash) + SLICES_FIELD_NUMBER;
                hash = (53 * hash) + getSlicesList().hashCode();
            }
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.SliceList parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.SliceList parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.SliceList parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.SliceList parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.SliceList parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.SliceList parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.SliceList parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.SliceList parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.SliceList parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.SliceList parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.SliceList parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.SliceList parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.SliceList prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code context.SliceList}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.SliceList)
        context.ContextOuterClass.SliceListOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_SliceList_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_SliceList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.SliceList.class, context.ContextOuterClass.SliceList.Builder.class);
            }

            // Construct using context.ContextOuterClass.SliceList.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                if (slicesBuilder_ == null) {
                    slices_ = java.util.Collections.emptyList();
                } else {
                    slices_ = null;
                    slicesBuilder_.clear();
                }
                bitField0_ = (bitField0_ & ~0x00000001);
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_SliceList_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.SliceList getDefaultInstanceForType() {
                return context.ContextOuterClass.SliceList.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.SliceList build() {
                context.ContextOuterClass.SliceList result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.SliceList buildPartial() {
                context.ContextOuterClass.SliceList result = new context.ContextOuterClass.SliceList(this);
                buildPartialRepeatedFields(result);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartialRepeatedFields(context.ContextOuterClass.SliceList result) {
                if (slicesBuilder_ == null) {
                    if (((bitField0_ & 0x00000001) != 0)) {
                        slices_ = java.util.Collections.unmodifiableList(slices_);
                        bitField0_ = (bitField0_ & ~0x00000001);
                    }
                    result.slices_ = slices_;
                } else {
                    result.slices_ = slicesBuilder_.build();
                }
            }

            private void buildPartial0(context.ContextOuterClass.SliceList result) {
                int from_bitField0_ = bitField0_;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.SliceList) {
                    return mergeFrom((context.ContextOuterClass.SliceList) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.SliceList other) {
                if (other == context.ContextOuterClass.SliceList.getDefaultInstance())
                    return this;
                if (slicesBuilder_ == null) {
                    if (!other.slices_.isEmpty()) {
                        if (slices_.isEmpty()) {
                            slices_ = other.slices_;
                            bitField0_ = (bitField0_ & ~0x00000001);
                        } else {
                            ensureSlicesIsMutable();
                            slices_.addAll(other.slices_);
                        }
                        onChanged();
                    }
                } else {
                    if (!other.slices_.isEmpty()) {
                        if (slicesBuilder_.isEmpty()) {
                            slicesBuilder_.dispose();
                            slicesBuilder_ = null;
                            slices_ = other.slices_;
                            bitField0_ = (bitField0_ & ~0x00000001);
                            slicesBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getSlicesFieldBuilder() : null;
                        } else {
                            slicesBuilder_.addAllMessages(other.slices_);
                        }
                    }
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 10:
                                {
                                    context.ContextOuterClass.Slice m = input.readMessage(context.ContextOuterClass.Slice.parser(), extensionRegistry);
                                    if (slicesBuilder_ == null) {
                                        ensureSlicesIsMutable();
                                        slices_.add(m);
                                    } else {
                                        slicesBuilder_.addMessage(m);
                                    }
                                    break;
                                }
                            // case 10
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private java.util.List<context.ContextOuterClass.Slice> slices_ = java.util.Collections.emptyList();

            private void ensureSlicesIsMutable() {
                if (!((bitField0_ & 0x00000001) != 0)) {
                    slices_ = new java.util.ArrayList<context.ContextOuterClass.Slice>(slices_);
                    bitField0_ |= 0x00000001;
                }
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Slice, context.ContextOuterClass.Slice.Builder, context.ContextOuterClass.SliceOrBuilder> slicesBuilder_;

            /**
             * <code>repeated .context.Slice slices = 1;</code>
             */
            public java.util.List<context.ContextOuterClass.Slice> getSlicesList() {
                if (slicesBuilder_ == null) {
                    return java.util.Collections.unmodifiableList(slices_);
                } else {
                    return slicesBuilder_.getMessageList();
                }
            }

            /**
             * <code>repeated .context.Slice slices = 1;</code>
             */
            public int getSlicesCount() {
                if (slicesBuilder_ == null) {
                    return slices_.size();
                } else {
                    return slicesBuilder_.getCount();
                }
            }

            /**
             * <code>repeated .context.Slice slices = 1;</code>
             */
            public context.ContextOuterClass.Slice getSlices(int index) {
                if (slicesBuilder_ == null) {
                    return slices_.get(index);
                } else {
                    return slicesBuilder_.getMessage(index);
                }
            }

            /**
             * <code>repeated .context.Slice slices = 1;</code>
             */
            public Builder setSlices(int index, context.ContextOuterClass.Slice value) {
                if (slicesBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureSlicesIsMutable();
                    slices_.set(index, value);
                    onChanged();
                } else {
                    slicesBuilder_.setMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.Slice slices = 1;</code>
             */
            public Builder setSlices(int index, context.ContextOuterClass.Slice.Builder builderForValue) {
                if (slicesBuilder_ == null) {
                    ensureSlicesIsMutable();
                    slices_.set(index, builderForValue.build());
                    onChanged();
                } else {
                    slicesBuilder_.setMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.Slice slices = 1;</code>
             */
            public Builder addSlices(context.ContextOuterClass.Slice value) {
                if (slicesBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureSlicesIsMutable();
                    slices_.add(value);
                    onChanged();
                } else {
                    slicesBuilder_.addMessage(value);
                }
                return this;
            }

            /**
             * <code>repeated .context.Slice slices = 1;</code>
             */
            public Builder addSlices(int index, context.ContextOuterClass.Slice value) {
                if (slicesBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureSlicesIsMutable();
                    slices_.add(index, value);
                    onChanged();
                } else {
                    slicesBuilder_.addMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.Slice slices = 1;</code>
             */
            public Builder addSlices(context.ContextOuterClass.Slice.Builder builderForValue) {
                if (slicesBuilder_ == null) {
                    ensureSlicesIsMutable();
                    slices_.add(builderForValue.build());
                    onChanged();
                } else {
                    slicesBuilder_.addMessage(builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.Slice slices = 1;</code>
             */
            public Builder addSlices(int index, context.ContextOuterClass.Slice.Builder builderForValue) {
                if (slicesBuilder_ == null) {
                    ensureSlicesIsMutable();
                    slices_.add(index, builderForValue.build());
                    onChanged();
                } else {
                    slicesBuilder_.addMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.Slice slices = 1;</code>
             */
            public Builder addAllSlices(java.lang.Iterable<? extends context.ContextOuterClass.Slice> values) {
                if (slicesBuilder_ == null) {
                    ensureSlicesIsMutable();
                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, slices_);
                    onChanged();
                } else {
                    slicesBuilder_.addAllMessages(values);
                }
                return this;
            }

            /**
             * <code>repeated .context.Slice slices = 1;</code>
             */
            public Builder clearSlices() {
                if (slicesBuilder_ == null) {
                    slices_ = java.util.Collections.emptyList();
                    bitField0_ = (bitField0_ & ~0x00000001);
                    onChanged();
                } else {
                    slicesBuilder_.clear();
                }
                return this;
            }

            /**
             * <code>repeated .context.Slice slices = 1;</code>
             */
            public Builder removeSlices(int index) {
                if (slicesBuilder_ == null) {
                    ensureSlicesIsMutable();
                    slices_.remove(index);
                    onChanged();
                } else {
                    slicesBuilder_.remove(index);
                }
                return this;
            }

            /**
             * <code>repeated .context.Slice slices = 1;</code>
             */
            public context.ContextOuterClass.Slice.Builder getSlicesBuilder(int index) {
                return getSlicesFieldBuilder().getBuilder(index);
            }

            /**
             * <code>repeated .context.Slice slices = 1;</code>
             */
            public context.ContextOuterClass.SliceOrBuilder getSlicesOrBuilder(int index) {
                if (slicesBuilder_ == null) {
                    return slices_.get(index);
                } else {
                    return slicesBuilder_.getMessageOrBuilder(index);
                }
            }

            /**
             * <code>repeated .context.Slice slices = 1;</code>
             */
            public java.util.List<? extends context.ContextOuterClass.SliceOrBuilder> getSlicesOrBuilderList() {
                if (slicesBuilder_ != null) {
                    return slicesBuilder_.getMessageOrBuilderList();
                } else {
                    return java.util.Collections.unmodifiableList(slices_);
                }
            }

            /**
             * <code>repeated .context.Slice slices = 1;</code>
             */
            public context.ContextOuterClass.Slice.Builder addSlicesBuilder() {
                return getSlicesFieldBuilder().addBuilder(context.ContextOuterClass.Slice.getDefaultInstance());
            }

            /**
             * <code>repeated .context.Slice slices = 1;</code>
             */
            public context.ContextOuterClass.Slice.Builder addSlicesBuilder(int index) {
                return getSlicesFieldBuilder().addBuilder(index, context.ContextOuterClass.Slice.getDefaultInstance());
            }

            /**
             * <code>repeated .context.Slice slices = 1;</code>
             */
            public java.util.List<context.ContextOuterClass.Slice.Builder> getSlicesBuilderList() {
                return getSlicesFieldBuilder().getBuilderList();
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Slice, context.ContextOuterClass.Slice.Builder, context.ContextOuterClass.SliceOrBuilder> getSlicesFieldBuilder() {
                if (slicesBuilder_ == null) {
                    slicesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Slice, context.ContextOuterClass.Slice.Builder, context.ContextOuterClass.SliceOrBuilder>(slices_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
                    slices_ = null;
                }
                return slicesBuilder_;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.SliceList)
        }

        // @@protoc_insertion_point(class_scope:context.SliceList)
        private static final context.ContextOuterClass.SliceList DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.SliceList();
        }

        public static context.ContextOuterClass.SliceList getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<SliceList> PARSER = new com.google.protobuf.AbstractParser<SliceList>() {

            @java.lang.Override
            public SliceList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<SliceList> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<SliceList> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.SliceList getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface SliceFilterOrBuilder extends // @@protoc_insertion_point(interface_extends:context.SliceFilter)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>.context.SliceIdList slice_ids = 1;</code>
         * @return Whether the sliceIds field is set.
         */
        boolean hasSliceIds();

        /**
         * <code>.context.SliceIdList slice_ids = 1;</code>
         * @return The sliceIds.
         */
        context.ContextOuterClass.SliceIdList getSliceIds();

        /**
         * <code>.context.SliceIdList slice_ids = 1;</code>
         */
        context.ContextOuterClass.SliceIdListOrBuilder getSliceIdsOrBuilder();

        /**
         * <code>bool include_endpoint_ids = 2;</code>
         * @return The includeEndpointIds.
         */
        boolean getIncludeEndpointIds();

        /**
         * <code>bool include_constraints = 3;</code>
         * @return The includeConstraints.
         */
        boolean getIncludeConstraints();

        /**
         * <code>bool include_service_ids = 4;</code>
         * @return The includeServiceIds.
         */
        boolean getIncludeServiceIds();

        /**
         * <code>bool include_subslice_ids = 5;</code>
         * @return The includeSubsliceIds.
         */
        boolean getIncludeSubsliceIds();

        /**
         * <code>bool include_config_rules = 6;</code>
         * @return The includeConfigRules.
         */
        boolean getIncludeConfigRules();
    }

    /**
     * Protobuf type {@code context.SliceFilter}
     */
    public static final class SliceFilter extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.SliceFilter)
    SliceFilterOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use SliceFilter.newBuilder() to construct.
        private SliceFilter(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private SliceFilter() {
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new SliceFilter();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_SliceFilter_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_SliceFilter_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.SliceFilter.class, context.ContextOuterClass.SliceFilter.Builder.class);
        }

        public static final int SLICE_IDS_FIELD_NUMBER = 1;

        private context.ContextOuterClass.SliceIdList sliceIds_;

        /**
         * <code>.context.SliceIdList slice_ids = 1;</code>
         * @return Whether the sliceIds field is set.
         */
        @java.lang.Override
        public boolean hasSliceIds() {
            return sliceIds_ != null;
        }

        /**
         * <code>.context.SliceIdList slice_ids = 1;</code>
         * @return The sliceIds.
         */
        @java.lang.Override
        public context.ContextOuterClass.SliceIdList getSliceIds() {
            return sliceIds_ == null ? context.ContextOuterClass.SliceIdList.getDefaultInstance() : sliceIds_;
        }

        /**
         * <code>.context.SliceIdList slice_ids = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.SliceIdListOrBuilder getSliceIdsOrBuilder() {
            return sliceIds_ == null ? context.ContextOuterClass.SliceIdList.getDefaultInstance() : sliceIds_;
        }

        public static final int INCLUDE_ENDPOINT_IDS_FIELD_NUMBER = 2;

        private boolean includeEndpointIds_ = false;

        /**
         * <code>bool include_endpoint_ids = 2;</code>
         * @return The includeEndpointIds.
         */
        @java.lang.Override
        public boolean getIncludeEndpointIds() {
            return includeEndpointIds_;
        }

        public static final int INCLUDE_CONSTRAINTS_FIELD_NUMBER = 3;

        private boolean includeConstraints_ = false;

        /**
         * <code>bool include_constraints = 3;</code>
         * @return The includeConstraints.
         */
        @java.lang.Override
        public boolean getIncludeConstraints() {
            return includeConstraints_;
        }

        public static final int INCLUDE_SERVICE_IDS_FIELD_NUMBER = 4;

        private boolean includeServiceIds_ = false;

        /**
         * <code>bool include_service_ids = 4;</code>
         * @return The includeServiceIds.
         */
        @java.lang.Override
        public boolean getIncludeServiceIds() {
            return includeServiceIds_;
        }

        public static final int INCLUDE_SUBSLICE_IDS_FIELD_NUMBER = 5;

        private boolean includeSubsliceIds_ = false;

        /**
         * <code>bool include_subslice_ids = 5;</code>
         * @return The includeSubsliceIds.
         */
        @java.lang.Override
        public boolean getIncludeSubsliceIds() {
            return includeSubsliceIds_;
        }

        public static final int INCLUDE_CONFIG_RULES_FIELD_NUMBER = 6;

        private boolean includeConfigRules_ = false;

        /**
         * <code>bool include_config_rules = 6;</code>
         * @return The includeConfigRules.
         */
        @java.lang.Override
        public boolean getIncludeConfigRules() {
            return includeConfigRules_;
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            if (sliceIds_ != null) {
                output.writeMessage(1, getSliceIds());
            }
            if (includeEndpointIds_ != false) {
                output.writeBool(2, includeEndpointIds_);
            }
            if (includeConstraints_ != false) {
                output.writeBool(3, includeConstraints_);
            }
            if (includeServiceIds_ != false) {
                output.writeBool(4, includeServiceIds_);
            }
            if (includeSubsliceIds_ != false) {
                output.writeBool(5, includeSubsliceIds_);
            }
            if (includeConfigRules_ != false) {
                output.writeBool(6, includeConfigRules_);
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            if (sliceIds_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getSliceIds());
            }
            if (includeEndpointIds_ != false) {
                size += com.google.protobuf.CodedOutputStream.computeBoolSize(2, includeEndpointIds_);
            }
            if (includeConstraints_ != false) {
                size += com.google.protobuf.CodedOutputStream.computeBoolSize(3, includeConstraints_);
            }
            if (includeServiceIds_ != false) {
                size += com.google.protobuf.CodedOutputStream.computeBoolSize(4, includeServiceIds_);
            }
            if (includeSubsliceIds_ != false) {
                size += com.google.protobuf.CodedOutputStream.computeBoolSize(5, includeSubsliceIds_);
            }
            if (includeConfigRules_ != false) {
                size += com.google.protobuf.CodedOutputStream.computeBoolSize(6, includeConfigRules_);
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.SliceFilter)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.SliceFilter other = (context.ContextOuterClass.SliceFilter) obj;
            if (hasSliceIds() != other.hasSliceIds())
                return false;
            if (hasSliceIds()) {
                if (!getSliceIds().equals(other.getSliceIds()))
                    return false;
            }
            if (getIncludeEndpointIds() != other.getIncludeEndpointIds())
                return false;
            if (getIncludeConstraints() != other.getIncludeConstraints())
                return false;
            if (getIncludeServiceIds() != other.getIncludeServiceIds())
                return false;
            if (getIncludeSubsliceIds() != other.getIncludeSubsliceIds())
                return false;
            if (getIncludeConfigRules() != other.getIncludeConfigRules())
                return false;
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            if (hasSliceIds()) {
                hash = (37 * hash) + SLICE_IDS_FIELD_NUMBER;
                hash = (53 * hash) + getSliceIds().hashCode();
            }
            hash = (37 * hash) + INCLUDE_ENDPOINT_IDS_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getIncludeEndpointIds());
            hash = (37 * hash) + INCLUDE_CONSTRAINTS_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getIncludeConstraints());
            hash = (37 * hash) + INCLUDE_SERVICE_IDS_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getIncludeServiceIds());
            hash = (37 * hash) + INCLUDE_SUBSLICE_IDS_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getIncludeSubsliceIds());
            hash = (37 * hash) + INCLUDE_CONFIG_RULES_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getIncludeConfigRules());
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.SliceFilter parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.SliceFilter parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.SliceFilter parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.SliceFilter parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.SliceFilter parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.SliceFilter parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.SliceFilter parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.SliceFilter parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.SliceFilter parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.SliceFilter parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.SliceFilter parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.SliceFilter parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.SliceFilter prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code context.SliceFilter}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.SliceFilter)
        context.ContextOuterClass.SliceFilterOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_SliceFilter_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_SliceFilter_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.SliceFilter.class, context.ContextOuterClass.SliceFilter.Builder.class);
            }

            // Construct using context.ContextOuterClass.SliceFilter.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                sliceIds_ = null;
                if (sliceIdsBuilder_ != null) {
                    sliceIdsBuilder_.dispose();
                    sliceIdsBuilder_ = null;
                }
                includeEndpointIds_ = false;
                includeConstraints_ = false;
                includeServiceIds_ = false;
                includeSubsliceIds_ = false;
                includeConfigRules_ = false;
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_SliceFilter_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.SliceFilter getDefaultInstanceForType() {
                return context.ContextOuterClass.SliceFilter.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.SliceFilter build() {
                context.ContextOuterClass.SliceFilter result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.SliceFilter buildPartial() {
                context.ContextOuterClass.SliceFilter result = new context.ContextOuterClass.SliceFilter(this);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartial0(context.ContextOuterClass.SliceFilter result) {
                int from_bitField0_ = bitField0_;
                if (((from_bitField0_ & 0x00000001) != 0)) {
                    result.sliceIds_ = sliceIdsBuilder_ == null ? sliceIds_ : sliceIdsBuilder_.build();
                }
                if (((from_bitField0_ & 0x00000002) != 0)) {
                    result.includeEndpointIds_ = includeEndpointIds_;
                }
                if (((from_bitField0_ & 0x00000004) != 0)) {
                    result.includeConstraints_ = includeConstraints_;
                }
                if (((from_bitField0_ & 0x00000008) != 0)) {
                    result.includeServiceIds_ = includeServiceIds_;
                }
                if (((from_bitField0_ & 0x00000010) != 0)) {
                    result.includeSubsliceIds_ = includeSubsliceIds_;
                }
                if (((from_bitField0_ & 0x00000020) != 0)) {
                    result.includeConfigRules_ = includeConfigRules_;
                }
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.SliceFilter) {
                    return mergeFrom((context.ContextOuterClass.SliceFilter) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.SliceFilter other) {
                if (other == context.ContextOuterClass.SliceFilter.getDefaultInstance())
                    return this;
                if (other.hasSliceIds()) {
                    mergeSliceIds(other.getSliceIds());
                }
                if (other.getIncludeEndpointIds() != false) {
                    setIncludeEndpointIds(other.getIncludeEndpointIds());
                }
                if (other.getIncludeConstraints() != false) {
                    setIncludeConstraints(other.getIncludeConstraints());
                }
                if (other.getIncludeServiceIds() != false) {
                    setIncludeServiceIds(other.getIncludeServiceIds());
                }
                if (other.getIncludeSubsliceIds() != false) {
                    setIncludeSubsliceIds(other.getIncludeSubsliceIds());
                }
                if (other.getIncludeConfigRules() != false) {
                    setIncludeConfigRules(other.getIncludeConfigRules());
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 10:
                                {
                                    input.readMessage(getSliceIdsFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000001;
                                    break;
                                }
                            // case 10
                            case 16:
                                {
                                    includeEndpointIds_ = input.readBool();
                                    bitField0_ |= 0x00000002;
                                    break;
                                }
                            // case 16
                            case 24:
                                {
                                    includeConstraints_ = input.readBool();
                                    bitField0_ |= 0x00000004;
                                    break;
                                }
                            // case 24
                            case 32:
                                {
                                    includeServiceIds_ = input.readBool();
                                    bitField0_ |= 0x00000008;
                                    break;
                                }
                            // case 32
                            case 40:
                                {
                                    includeSubsliceIds_ = input.readBool();
                                    bitField0_ |= 0x00000010;
                                    break;
                                }
                            // case 40
                            case 48:
                                {
                                    includeConfigRules_ = input.readBool();
                                    bitField0_ |= 0x00000020;
                                    break;
                                }
                            // case 48
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private context.ContextOuterClass.SliceIdList sliceIds_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.SliceIdList, context.ContextOuterClass.SliceIdList.Builder, context.ContextOuterClass.SliceIdListOrBuilder> sliceIdsBuilder_;

            /**
             * <code>.context.SliceIdList slice_ids = 1;</code>
             * @return Whether the sliceIds field is set.
             */
            public boolean hasSliceIds() {
                return ((bitField0_ & 0x00000001) != 0);
            }

            /**
             * <code>.context.SliceIdList slice_ids = 1;</code>
             * @return The sliceIds.
             */
            public context.ContextOuterClass.SliceIdList getSliceIds() {
                if (sliceIdsBuilder_ == null) {
                    return sliceIds_ == null ? context.ContextOuterClass.SliceIdList.getDefaultInstance() : sliceIds_;
                } else {
                    return sliceIdsBuilder_.getMessage();
                }
            }

            /**
             * <code>.context.SliceIdList slice_ids = 1;</code>
             */
            public Builder setSliceIds(context.ContextOuterClass.SliceIdList value) {
                if (sliceIdsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    sliceIds_ = value;
                } else {
                    sliceIdsBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.SliceIdList slice_ids = 1;</code>
             */
            public Builder setSliceIds(context.ContextOuterClass.SliceIdList.Builder builderForValue) {
                if (sliceIdsBuilder_ == null) {
                    sliceIds_ = builderForValue.build();
                } else {
                    sliceIdsBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.SliceIdList slice_ids = 1;</code>
             */
            public Builder mergeSliceIds(context.ContextOuterClass.SliceIdList value) {
                if (sliceIdsBuilder_ == null) {
                    if (((bitField0_ & 0x00000001) != 0) && sliceIds_ != null && sliceIds_ != context.ContextOuterClass.SliceIdList.getDefaultInstance()) {
                        getSliceIdsBuilder().mergeFrom(value);
                    } else {
                        sliceIds_ = value;
                    }
                } else {
                    sliceIdsBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.SliceIdList slice_ids = 1;</code>
             */
            public Builder clearSliceIds() {
                bitField0_ = (bitField0_ & ~0x00000001);
                sliceIds_ = null;
                if (sliceIdsBuilder_ != null) {
                    sliceIdsBuilder_.dispose();
                    sliceIdsBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.SliceIdList slice_ids = 1;</code>
             */
            public context.ContextOuterClass.SliceIdList.Builder getSliceIdsBuilder() {
                bitField0_ |= 0x00000001;
                onChanged();
                return getSliceIdsFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.SliceIdList slice_ids = 1;</code>
             */
            public context.ContextOuterClass.SliceIdListOrBuilder getSliceIdsOrBuilder() {
                if (sliceIdsBuilder_ != null) {
                    return sliceIdsBuilder_.getMessageOrBuilder();
                } else {
                    return sliceIds_ == null ? context.ContextOuterClass.SliceIdList.getDefaultInstance() : sliceIds_;
                }
            }

            /**
             * <code>.context.SliceIdList slice_ids = 1;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.SliceIdList, context.ContextOuterClass.SliceIdList.Builder, context.ContextOuterClass.SliceIdListOrBuilder> getSliceIdsFieldBuilder() {
                if (sliceIdsBuilder_ == null) {
                    sliceIdsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.SliceIdList, context.ContextOuterClass.SliceIdList.Builder, context.ContextOuterClass.SliceIdListOrBuilder>(getSliceIds(), getParentForChildren(), isClean());
                    sliceIds_ = null;
                }
                return sliceIdsBuilder_;
            }

            private boolean includeEndpointIds_;

            /**
             * <code>bool include_endpoint_ids = 2;</code>
             * @return The includeEndpointIds.
             */
            @java.lang.Override
            public boolean getIncludeEndpointIds() {
                return includeEndpointIds_;
            }

            /**
             * <code>bool include_endpoint_ids = 2;</code>
             * @param value The includeEndpointIds to set.
             * @return This builder for chaining.
             */
            public Builder setIncludeEndpointIds(boolean value) {
                includeEndpointIds_ = value;
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>bool include_endpoint_ids = 2;</code>
             * @return This builder for chaining.
             */
            public Builder clearIncludeEndpointIds() {
                bitField0_ = (bitField0_ & ~0x00000002);
                includeEndpointIds_ = false;
                onChanged();
                return this;
            }

            private boolean includeConstraints_;

            /**
             * <code>bool include_constraints = 3;</code>
             * @return The includeConstraints.
             */
            @java.lang.Override
            public boolean getIncludeConstraints() {
                return includeConstraints_;
            }

            /**
             * <code>bool include_constraints = 3;</code>
             * @param value The includeConstraints to set.
             * @return This builder for chaining.
             */
            public Builder setIncludeConstraints(boolean value) {
                includeConstraints_ = value;
                bitField0_ |= 0x00000004;
                onChanged();
                return this;
            }

            /**
             * <code>bool include_constraints = 3;</code>
             * @return This builder for chaining.
             */
            public Builder clearIncludeConstraints() {
                bitField0_ = (bitField0_ & ~0x00000004);
                includeConstraints_ = false;
                onChanged();
                return this;
            }

            private boolean includeServiceIds_;

            /**
             * <code>bool include_service_ids = 4;</code>
             * @return The includeServiceIds.
             */
            @java.lang.Override
            public boolean getIncludeServiceIds() {
                return includeServiceIds_;
            }

            /**
             * <code>bool include_service_ids = 4;</code>
             * @param value The includeServiceIds to set.
             * @return This builder for chaining.
             */
            public Builder setIncludeServiceIds(boolean value) {
                includeServiceIds_ = value;
                bitField0_ |= 0x00000008;
                onChanged();
                return this;
            }

            /**
             * <code>bool include_service_ids = 4;</code>
             * @return This builder for chaining.
             */
            public Builder clearIncludeServiceIds() {
                bitField0_ = (bitField0_ & ~0x00000008);
                includeServiceIds_ = false;
                onChanged();
                return this;
            }

            private boolean includeSubsliceIds_;

            /**
             * <code>bool include_subslice_ids = 5;</code>
             * @return The includeSubsliceIds.
             */
            @java.lang.Override
            public boolean getIncludeSubsliceIds() {
                return includeSubsliceIds_;
            }

            /**
             * <code>bool include_subslice_ids = 5;</code>
             * @param value The includeSubsliceIds to set.
             * @return This builder for chaining.
             */
            public Builder setIncludeSubsliceIds(boolean value) {
                includeSubsliceIds_ = value;
                bitField0_ |= 0x00000010;
                onChanged();
                return this;
            }

            /**
             * <code>bool include_subslice_ids = 5;</code>
             * @return This builder for chaining.
             */
            public Builder clearIncludeSubsliceIds() {
                bitField0_ = (bitField0_ & ~0x00000010);
                includeSubsliceIds_ = false;
                onChanged();
                return this;
            }

            private boolean includeConfigRules_;

            /**
             * <code>bool include_config_rules = 6;</code>
             * @return The includeConfigRules.
             */
            @java.lang.Override
            public boolean getIncludeConfigRules() {
                return includeConfigRules_;
            }

            /**
             * <code>bool include_config_rules = 6;</code>
             * @param value The includeConfigRules to set.
             * @return This builder for chaining.
             */
            public Builder setIncludeConfigRules(boolean value) {
                includeConfigRules_ = value;
                bitField0_ |= 0x00000020;
                onChanged();
                return this;
            }

            /**
             * <code>bool include_config_rules = 6;</code>
             * @return This builder for chaining.
             */
            public Builder clearIncludeConfigRules() {
                bitField0_ = (bitField0_ & ~0x00000020);
                includeConfigRules_ = false;
                onChanged();
                return this;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.SliceFilter)
        }

        // @@protoc_insertion_point(class_scope:context.SliceFilter)
        private static final context.ContextOuterClass.SliceFilter DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.SliceFilter();
        }

        public static context.ContextOuterClass.SliceFilter getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<SliceFilter> PARSER = new com.google.protobuf.AbstractParser<SliceFilter>() {

            @java.lang.Override
            public SliceFilter parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<SliceFilter> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<SliceFilter> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.SliceFilter getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface SliceEventOrBuilder extends // @@protoc_insertion_point(interface_extends:context.SliceEvent)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>.context.Event event = 1;</code>
         * @return Whether the event field is set.
         */
        boolean hasEvent();

        /**
         * <code>.context.Event event = 1;</code>
         * @return The event.
         */
        context.ContextOuterClass.Event getEvent();

        /**
         * <code>.context.Event event = 1;</code>
         */
        context.ContextOuterClass.EventOrBuilder getEventOrBuilder();

        /**
         * <code>.context.SliceId slice_id = 2;</code>
         * @return Whether the sliceId field is set.
         */
        boolean hasSliceId();

        /**
         * <code>.context.SliceId slice_id = 2;</code>
         * @return The sliceId.
         */
        context.ContextOuterClass.SliceId getSliceId();

        /**
         * <code>.context.SliceId slice_id = 2;</code>
         */
        context.ContextOuterClass.SliceIdOrBuilder getSliceIdOrBuilder();
    }

    /**
     * Protobuf type {@code context.SliceEvent}
     */
    public static final class SliceEvent extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.SliceEvent)
    SliceEventOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use SliceEvent.newBuilder() to construct.
        private SliceEvent(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private SliceEvent() {
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new SliceEvent();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_SliceEvent_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_SliceEvent_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.SliceEvent.class, context.ContextOuterClass.SliceEvent.Builder.class);
        }

        public static final int EVENT_FIELD_NUMBER = 1;

        private context.ContextOuterClass.Event event_;

        /**
         * <code>.context.Event event = 1;</code>
         * @return Whether the event field is set.
         */
        @java.lang.Override
        public boolean hasEvent() {
            return event_ != null;
        }

        /**
         * <code>.context.Event event = 1;</code>
         * @return The event.
         */
        @java.lang.Override
        public context.ContextOuterClass.Event getEvent() {
            return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
        }

        /**
         * <code>.context.Event event = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
            return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
        }

        public static final int SLICE_ID_FIELD_NUMBER = 2;

        private context.ContextOuterClass.SliceId sliceId_;

        /**
         * <code>.context.SliceId slice_id = 2;</code>
         * @return Whether the sliceId field is set.
         */
        @java.lang.Override
        public boolean hasSliceId() {
            return sliceId_ != null;
        }

        /**
         * <code>.context.SliceId slice_id = 2;</code>
         * @return The sliceId.
         */
        @java.lang.Override
        public context.ContextOuterClass.SliceId getSliceId() {
            return sliceId_ == null ? context.ContextOuterClass.SliceId.getDefaultInstance() : sliceId_;
        }

        /**
         * <code>.context.SliceId slice_id = 2;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.SliceIdOrBuilder getSliceIdOrBuilder() {
            return sliceId_ == null ? context.ContextOuterClass.SliceId.getDefaultInstance() : sliceId_;
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            if (event_ != null) {
                output.writeMessage(1, getEvent());
            }
            if (sliceId_ != null) {
                output.writeMessage(2, getSliceId());
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            if (event_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getEvent());
            }
            if (sliceId_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getSliceId());
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.SliceEvent)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.SliceEvent other = (context.ContextOuterClass.SliceEvent) obj;
            if (hasEvent() != other.hasEvent())
                return false;
            if (hasEvent()) {
                if (!getEvent().equals(other.getEvent()))
                    return false;
            }
            if (hasSliceId() != other.hasSliceId())
                return false;
            if (hasSliceId()) {
                if (!getSliceId().equals(other.getSliceId()))
                    return false;
            }
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            if (hasEvent()) {
                hash = (37 * hash) + EVENT_FIELD_NUMBER;
                hash = (53 * hash) + getEvent().hashCode();
            }
            if (hasSliceId()) {
                hash = (37 * hash) + SLICE_ID_FIELD_NUMBER;
                hash = (53 * hash) + getSliceId().hashCode();
            }
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.SliceEvent parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.SliceEvent parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.SliceEvent parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.SliceEvent parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.SliceEvent parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.SliceEvent parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.SliceEvent parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.SliceEvent parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.SliceEvent parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.SliceEvent parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.SliceEvent parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.SliceEvent parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.SliceEvent prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code context.SliceEvent}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.SliceEvent)
        context.ContextOuterClass.SliceEventOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_SliceEvent_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_SliceEvent_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.SliceEvent.class, context.ContextOuterClass.SliceEvent.Builder.class);
            }

            // Construct using context.ContextOuterClass.SliceEvent.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                event_ = null;
                if (eventBuilder_ != null) {
                    eventBuilder_.dispose();
                    eventBuilder_ = null;
                }
                sliceId_ = null;
                if (sliceIdBuilder_ != null) {
                    sliceIdBuilder_.dispose();
                    sliceIdBuilder_ = null;
                }
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_SliceEvent_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.SliceEvent getDefaultInstanceForType() {
                return context.ContextOuterClass.SliceEvent.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.SliceEvent build() {
                context.ContextOuterClass.SliceEvent result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.SliceEvent buildPartial() {
                context.ContextOuterClass.SliceEvent result = new context.ContextOuterClass.SliceEvent(this);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartial0(context.ContextOuterClass.SliceEvent result) {
                int from_bitField0_ = bitField0_;
                if (((from_bitField0_ & 0x00000001) != 0)) {
                    result.event_ = eventBuilder_ == null ? event_ : eventBuilder_.build();
                }
                if (((from_bitField0_ & 0x00000002) != 0)) {
                    result.sliceId_ = sliceIdBuilder_ == null ? sliceId_ : sliceIdBuilder_.build();
                }
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.SliceEvent) {
                    return mergeFrom((context.ContextOuterClass.SliceEvent) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.SliceEvent other) {
                if (other == context.ContextOuterClass.SliceEvent.getDefaultInstance())
                    return this;
                if (other.hasEvent()) {
                    mergeEvent(other.getEvent());
                }
                if (other.hasSliceId()) {
                    mergeSliceId(other.getSliceId());
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 10:
                                {
                                    input.readMessage(getEventFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000001;
                                    break;
                                }
                            // case 10
                            case 18:
                                {
                                    input.readMessage(getSliceIdFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000002;
                                    break;
                                }
                            // case 18
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private context.ContextOuterClass.Event event_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> eventBuilder_;

            /**
             * <code>.context.Event event = 1;</code>
             * @return Whether the event field is set.
             */
            public boolean hasEvent() {
                return ((bitField0_ & 0x00000001) != 0);
            }

            /**
             * <code>.context.Event event = 1;</code>
             * @return The event.
             */
            public context.ContextOuterClass.Event getEvent() {
                if (eventBuilder_ == null) {
                    return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
                } else {
                    return eventBuilder_.getMessage();
                }
            }

            /**
             * <code>.context.Event event = 1;</code>
             */
            public Builder setEvent(context.ContextOuterClass.Event value) {
                if (eventBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    event_ = value;
                } else {
                    eventBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.Event event = 1;</code>
             */
            public Builder setEvent(context.ContextOuterClass.Event.Builder builderForValue) {
                if (eventBuilder_ == null) {
                    event_ = builderForValue.build();
                } else {
                    eventBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.Event event = 1;</code>
             */
            public Builder mergeEvent(context.ContextOuterClass.Event value) {
                if (eventBuilder_ == null) {
                    if (((bitField0_ & 0x00000001) != 0) && event_ != null && event_ != context.ContextOuterClass.Event.getDefaultInstance()) {
                        getEventBuilder().mergeFrom(value);
                    } else {
                        event_ = value;
                    }
                } else {
                    eventBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.Event event = 1;</code>
             */
            public Builder clearEvent() {
                bitField0_ = (bitField0_ & ~0x00000001);
                event_ = null;
                if (eventBuilder_ != null) {
                    eventBuilder_.dispose();
                    eventBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.Event event = 1;</code>
             */
            public context.ContextOuterClass.Event.Builder getEventBuilder() {
                bitField0_ |= 0x00000001;
                onChanged();
                return getEventFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.Event event = 1;</code>
             */
            public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
                if (eventBuilder_ != null) {
                    return eventBuilder_.getMessageOrBuilder();
                } else {
                    return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
                }
            }

            /**
             * <code>.context.Event event = 1;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> getEventFieldBuilder() {
                if (eventBuilder_ == null) {
                    eventBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder>(getEvent(), getParentForChildren(), isClean());
                    event_ = null;
                }
                return eventBuilder_;
            }

            private context.ContextOuterClass.SliceId sliceId_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder> sliceIdBuilder_;

            /**
             * <code>.context.SliceId slice_id = 2;</code>
             * @return Whether the sliceId field is set.
             */
            public boolean hasSliceId() {
                return ((bitField0_ & 0x00000002) != 0);
            }

            /**
             * <code>.context.SliceId slice_id = 2;</code>
             * @return The sliceId.
             */
            public context.ContextOuterClass.SliceId getSliceId() {
                if (sliceIdBuilder_ == null) {
                    return sliceId_ == null ? context.ContextOuterClass.SliceId.getDefaultInstance() : sliceId_;
                } else {
                    return sliceIdBuilder_.getMessage();
                }
            }

            /**
             * <code>.context.SliceId slice_id = 2;</code>
             */
            public Builder setSliceId(context.ContextOuterClass.SliceId value) {
                if (sliceIdBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    sliceId_ = value;
                } else {
                    sliceIdBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>.context.SliceId slice_id = 2;</code>
             */
            public Builder setSliceId(context.ContextOuterClass.SliceId.Builder builderForValue) {
                if (sliceIdBuilder_ == null) {
                    sliceId_ = builderForValue.build();
                } else {
                    sliceIdBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>.context.SliceId slice_id = 2;</code>
             */
            public Builder mergeSliceId(context.ContextOuterClass.SliceId value) {
                if (sliceIdBuilder_ == null) {
                    if (((bitField0_ & 0x00000002) != 0) && sliceId_ != null && sliceId_ != context.ContextOuterClass.SliceId.getDefaultInstance()) {
                        getSliceIdBuilder().mergeFrom(value);
                    } else {
                        sliceId_ = value;
                    }
                } else {
                    sliceIdBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>.context.SliceId slice_id = 2;</code>
             */
            public Builder clearSliceId() {
                bitField0_ = (bitField0_ & ~0x00000002);
                sliceId_ = null;
                if (sliceIdBuilder_ != null) {
                    sliceIdBuilder_.dispose();
                    sliceIdBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.SliceId slice_id = 2;</code>
             */
            public context.ContextOuterClass.SliceId.Builder getSliceIdBuilder() {
                bitField0_ |= 0x00000002;
                onChanged();
                return getSliceIdFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.SliceId slice_id = 2;</code>
             */
            public context.ContextOuterClass.SliceIdOrBuilder getSliceIdOrBuilder() {
                if (sliceIdBuilder_ != null) {
                    return sliceIdBuilder_.getMessageOrBuilder();
                } else {
                    return sliceId_ == null ? context.ContextOuterClass.SliceId.getDefaultInstance() : sliceId_;
                }
            }

            /**
             * <code>.context.SliceId slice_id = 2;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder> getSliceIdFieldBuilder() {
                if (sliceIdBuilder_ == null) {
                    sliceIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder>(getSliceId(), getParentForChildren(), isClean());
                    sliceId_ = null;
                }
                return sliceIdBuilder_;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.SliceEvent)
        }

        // @@protoc_insertion_point(class_scope:context.SliceEvent)
        private static final context.ContextOuterClass.SliceEvent DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.SliceEvent();
        }

        public static context.ContextOuterClass.SliceEvent getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<SliceEvent> PARSER = new com.google.protobuf.AbstractParser<SliceEvent>() {

            @java.lang.Override
            public SliceEvent parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<SliceEvent> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<SliceEvent> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.SliceEvent getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface ConnectionIdOrBuilder extends // @@protoc_insertion_point(interface_extends:context.ConnectionId)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>.context.Uuid connection_uuid = 1;</code>
         * @return Whether the connectionUuid field is set.
         */
        boolean hasConnectionUuid();

        /**
         * <code>.context.Uuid connection_uuid = 1;</code>
         * @return The connectionUuid.
         */
        context.ContextOuterClass.Uuid getConnectionUuid();

        /**
         * <code>.context.Uuid connection_uuid = 1;</code>
         */
        context.ContextOuterClass.UuidOrBuilder getConnectionUuidOrBuilder();
    }

    /**
     * <pre>
     * ----- Connection ----------------------------------------------------------------------------------------------------
     * </pre>
     *
     * Protobuf type {@code context.ConnectionId}
     */
    public static final class ConnectionId extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.ConnectionId)
    ConnectionIdOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use ConnectionId.newBuilder() to construct.
        private ConnectionId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private ConnectionId() {
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new ConnectionId();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_ConnectionId_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_ConnectionId_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ConnectionId.class, context.ContextOuterClass.ConnectionId.Builder.class);
        }

        public static final int CONNECTION_UUID_FIELD_NUMBER = 1;

        private context.ContextOuterClass.Uuid connectionUuid_;

        /**
         * <code>.context.Uuid connection_uuid = 1;</code>
         * @return Whether the connectionUuid field is set.
         */
        @java.lang.Override
        public boolean hasConnectionUuid() {
            return connectionUuid_ != null;
        }

        /**
         * <code>.context.Uuid connection_uuid = 1;</code>
         * @return The connectionUuid.
         */
        @java.lang.Override
        public context.ContextOuterClass.Uuid getConnectionUuid() {
            return connectionUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : connectionUuid_;
        }

        /**
         * <code>.context.Uuid connection_uuid = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.UuidOrBuilder getConnectionUuidOrBuilder() {
            return connectionUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : connectionUuid_;
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            if (connectionUuid_ != null) {
                output.writeMessage(1, getConnectionUuid());
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            if (connectionUuid_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getConnectionUuid());
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.ConnectionId)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.ConnectionId other = (context.ContextOuterClass.ConnectionId) obj;
            if (hasConnectionUuid() != other.hasConnectionUuid())
                return false;
            if (hasConnectionUuid()) {
                if (!getConnectionUuid().equals(other.getConnectionUuid()))
                    return false;
            }
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            if (hasConnectionUuid()) {
                hash = (37 * hash) + CONNECTION_UUID_FIELD_NUMBER;
                hash = (53 * hash) + getConnectionUuid().hashCode();
            }
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.ConnectionId parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.ConnectionId parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.ConnectionId parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.ConnectionId parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.ConnectionId parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.ConnectionId parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.ConnectionId parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.ConnectionId parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.ConnectionId parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.ConnectionId parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.ConnectionId parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.ConnectionId parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.ConnectionId prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * <pre>
         * ----- Connection ----------------------------------------------------------------------------------------------------
         * </pre>
         *
         * Protobuf type {@code context.ConnectionId}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.ConnectionId)
        context.ContextOuterClass.ConnectionIdOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_ConnectionId_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_ConnectionId_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ConnectionId.class, context.ContextOuterClass.ConnectionId.Builder.class);
            }

            // Construct using context.ContextOuterClass.ConnectionId.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                connectionUuid_ = null;
                if (connectionUuidBuilder_ != null) {
                    connectionUuidBuilder_.dispose();
                    connectionUuidBuilder_ = null;
                }
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_ConnectionId_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.ConnectionId getDefaultInstanceForType() {
                return context.ContextOuterClass.ConnectionId.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.ConnectionId build() {
                context.ContextOuterClass.ConnectionId result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.ConnectionId buildPartial() {
                context.ContextOuterClass.ConnectionId result = new context.ContextOuterClass.ConnectionId(this);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartial0(context.ContextOuterClass.ConnectionId result) {
                int from_bitField0_ = bitField0_;
                if (((from_bitField0_ & 0x00000001) != 0)) {
                    result.connectionUuid_ = connectionUuidBuilder_ == null ? connectionUuid_ : connectionUuidBuilder_.build();
                }
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.ConnectionId) {
                    return mergeFrom((context.ContextOuterClass.ConnectionId) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.ConnectionId other) {
                if (other == context.ContextOuterClass.ConnectionId.getDefaultInstance())
                    return this;
                if (other.hasConnectionUuid()) {
                    mergeConnectionUuid(other.getConnectionUuid());
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 10:
                                {
                                    input.readMessage(getConnectionUuidFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000001;
                                    break;
                                }
                            // case 10
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private context.ContextOuterClass.Uuid connectionUuid_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> connectionUuidBuilder_;

            /**
             * <code>.context.Uuid connection_uuid = 1;</code>
             * @return Whether the connectionUuid field is set.
             */
            public boolean hasConnectionUuid() {
                return ((bitField0_ & 0x00000001) != 0);
            }

            /**
             * <code>.context.Uuid connection_uuid = 1;</code>
             * @return The connectionUuid.
             */
            public context.ContextOuterClass.Uuid getConnectionUuid() {
                if (connectionUuidBuilder_ == null) {
                    return connectionUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : connectionUuid_;
                } else {
                    return connectionUuidBuilder_.getMessage();
                }
            }

            /**
             * <code>.context.Uuid connection_uuid = 1;</code>
             */
            public Builder setConnectionUuid(context.ContextOuterClass.Uuid value) {
                if (connectionUuidBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    connectionUuid_ = value;
                } else {
                    connectionUuidBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.Uuid connection_uuid = 1;</code>
             */
            public Builder setConnectionUuid(context.ContextOuterClass.Uuid.Builder builderForValue) {
                if (connectionUuidBuilder_ == null) {
                    connectionUuid_ = builderForValue.build();
                } else {
                    connectionUuidBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.Uuid connection_uuid = 1;</code>
             */
            public Builder mergeConnectionUuid(context.ContextOuterClass.Uuid value) {
                if (connectionUuidBuilder_ == null) {
                    if (((bitField0_ & 0x00000001) != 0) && connectionUuid_ != null && connectionUuid_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
                        getConnectionUuidBuilder().mergeFrom(value);
                    } else {
                        connectionUuid_ = value;
                    }
                } else {
                    connectionUuidBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.Uuid connection_uuid = 1;</code>
             */
            public Builder clearConnectionUuid() {
                bitField0_ = (bitField0_ & ~0x00000001);
                connectionUuid_ = null;
                if (connectionUuidBuilder_ != null) {
                    connectionUuidBuilder_.dispose();
                    connectionUuidBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.Uuid connection_uuid = 1;</code>
             */
            public context.ContextOuterClass.Uuid.Builder getConnectionUuidBuilder() {
                bitField0_ |= 0x00000001;
                onChanged();
                return getConnectionUuidFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.Uuid connection_uuid = 1;</code>
             */
            public context.ContextOuterClass.UuidOrBuilder getConnectionUuidOrBuilder() {
                if (connectionUuidBuilder_ != null) {
                    return connectionUuidBuilder_.getMessageOrBuilder();
                } else {
                    return connectionUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : connectionUuid_;
                }
            }

            /**
             * <code>.context.Uuid connection_uuid = 1;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> getConnectionUuidFieldBuilder() {
                if (connectionUuidBuilder_ == null) {
                    connectionUuidBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder>(getConnectionUuid(), getParentForChildren(), isClean());
                    connectionUuid_ = null;
                }
                return connectionUuidBuilder_;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.ConnectionId)
        }

        // @@protoc_insertion_point(class_scope:context.ConnectionId)
        private static final context.ContextOuterClass.ConnectionId DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.ConnectionId();
        }

        public static context.ContextOuterClass.ConnectionId getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<ConnectionId> PARSER = new com.google.protobuf.AbstractParser<ConnectionId>() {

            @java.lang.Override
            public ConnectionId parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<ConnectionId> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<ConnectionId> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.ConnectionId getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface ConnectionSettings_L0OrBuilder extends // @@protoc_insertion_point(interface_extends:context.ConnectionSettings_L0)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>string lsp_symbolic_name = 1;</code>
         * @return The lspSymbolicName.
         */
        java.lang.String getLspSymbolicName();

        /**
         * <code>string lsp_symbolic_name = 1;</code>
         * @return The bytes for lspSymbolicName.
         */
        com.google.protobuf.ByteString getLspSymbolicNameBytes();
    }

    /**
     * Protobuf type {@code context.ConnectionSettings_L0}
     */
    public static final class ConnectionSettings_L0 extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.ConnectionSettings_L0)
    ConnectionSettings_L0OrBuilder {

        private static final long serialVersionUID = 0L;

        // Use ConnectionSettings_L0.newBuilder() to construct.
        private ConnectionSettings_L0(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private ConnectionSettings_L0() {
            lspSymbolicName_ = "";
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new ConnectionSettings_L0();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_ConnectionSettings_L0_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_ConnectionSettings_L0_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ConnectionSettings_L0.class, context.ContextOuterClass.ConnectionSettings_L0.Builder.class);
        }

        public static final int LSP_SYMBOLIC_NAME_FIELD_NUMBER = 1;

        @SuppressWarnings("serial")
        private volatile java.lang.Object lspSymbolicName_ = "";

        /**
         * <code>string lsp_symbolic_name = 1;</code>
         * @return The lspSymbolicName.
         */
        @java.lang.Override
        public java.lang.String getLspSymbolicName() {
            java.lang.Object ref = lspSymbolicName_;
            if (ref instanceof java.lang.String) {
                return (java.lang.String) ref;
            } else {
                com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                java.lang.String s = bs.toStringUtf8();
                lspSymbolicName_ = s;
                return s;
            }
        }

        /**
         * <code>string lsp_symbolic_name = 1;</code>
         * @return The bytes for lspSymbolicName.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString getLspSymbolicNameBytes() {
            java.lang.Object ref = lspSymbolicName_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                lspSymbolicName_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(lspSymbolicName_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 1, lspSymbolicName_);
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(lspSymbolicName_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, lspSymbolicName_);
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.ConnectionSettings_L0)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.ConnectionSettings_L0 other = (context.ContextOuterClass.ConnectionSettings_L0) obj;
            if (!getLspSymbolicName().equals(other.getLspSymbolicName()))
                return false;
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            hash = (37 * hash) + LSP_SYMBOLIC_NAME_FIELD_NUMBER;
            hash = (53 * hash) + getLspSymbolicName().hashCode();
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.ConnectionSettings_L0 parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.ConnectionSettings_L0 parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.ConnectionSettings_L0 parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.ConnectionSettings_L0 parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.ConnectionSettings_L0 parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.ConnectionSettings_L0 parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.ConnectionSettings_L0 parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.ConnectionSettings_L0 parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.ConnectionSettings_L0 parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.ConnectionSettings_L0 parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.ConnectionSettings_L0 parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.ConnectionSettings_L0 parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.ConnectionSettings_L0 prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code context.ConnectionSettings_L0}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.ConnectionSettings_L0)
        context.ContextOuterClass.ConnectionSettings_L0OrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_ConnectionSettings_L0_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_ConnectionSettings_L0_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ConnectionSettings_L0.class, context.ContextOuterClass.ConnectionSettings_L0.Builder.class);
            }

            // Construct using context.ContextOuterClass.ConnectionSettings_L0.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                lspSymbolicName_ = "";
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_ConnectionSettings_L0_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.ConnectionSettings_L0 getDefaultInstanceForType() {
                return context.ContextOuterClass.ConnectionSettings_L0.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.ConnectionSettings_L0 build() {
                context.ContextOuterClass.ConnectionSettings_L0 result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.ConnectionSettings_L0 buildPartial() {
                context.ContextOuterClass.ConnectionSettings_L0 result = new context.ContextOuterClass.ConnectionSettings_L0(this);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartial0(context.ContextOuterClass.ConnectionSettings_L0 result) {
                int from_bitField0_ = bitField0_;
                if (((from_bitField0_ & 0x00000001) != 0)) {
                    result.lspSymbolicName_ = lspSymbolicName_;
                }
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.ConnectionSettings_L0) {
                    return mergeFrom((context.ContextOuterClass.ConnectionSettings_L0) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.ConnectionSettings_L0 other) {
                if (other == context.ContextOuterClass.ConnectionSettings_L0.getDefaultInstance())
                    return this;
                if (!other.getLspSymbolicName().isEmpty()) {
                    lspSymbolicName_ = other.lspSymbolicName_;
                    bitField0_ |= 0x00000001;
                    onChanged();
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 10:
                                {
                                    lspSymbolicName_ = input.readStringRequireUtf8();
                                    bitField0_ |= 0x00000001;
                                    break;
                                }
                            // case 10
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private java.lang.Object lspSymbolicName_ = "";

            /**
             * <code>string lsp_symbolic_name = 1;</code>
             * @return The lspSymbolicName.
             */
            public java.lang.String getLspSymbolicName() {
                java.lang.Object ref = lspSymbolicName_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    lspSymbolicName_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }

            /**
             * <code>string lsp_symbolic_name = 1;</code>
             * @return The bytes for lspSymbolicName.
             */
            public com.google.protobuf.ByteString getLspSymbolicNameBytes() {
                java.lang.Object ref = lspSymbolicName_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                    lspSymbolicName_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }

            /**
             * <code>string lsp_symbolic_name = 1;</code>
             * @param value The lspSymbolicName to set.
             * @return This builder for chaining.
             */
            public Builder setLspSymbolicName(java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                lspSymbolicName_ = value;
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>string lsp_symbolic_name = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearLspSymbolicName() {
                lspSymbolicName_ = getDefaultInstance().getLspSymbolicName();
                bitField0_ = (bitField0_ & ~0x00000001);
                onChanged();
                return this;
            }

            /**
             * <code>string lsp_symbolic_name = 1;</code>
             * @param value The bytes for lspSymbolicName to set.
             * @return This builder for chaining.
             */
            public Builder setLspSymbolicNameBytes(com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);
                lspSymbolicName_ = value;
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.ConnectionSettings_L0)
        }

        // @@protoc_insertion_point(class_scope:context.ConnectionSettings_L0)
        private static final context.ContextOuterClass.ConnectionSettings_L0 DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.ConnectionSettings_L0();
        }

        public static context.ContextOuterClass.ConnectionSettings_L0 getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<ConnectionSettings_L0> PARSER = new com.google.protobuf.AbstractParser<ConnectionSettings_L0>() {

            @java.lang.Override
            public ConnectionSettings_L0 parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<ConnectionSettings_L0> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<ConnectionSettings_L0> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.ConnectionSettings_L0 getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface ConnectionSettings_L2OrBuilder extends // @@protoc_insertion_point(interface_extends:context.ConnectionSettings_L2)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>string src_mac_address = 1;</code>
         * @return The srcMacAddress.
         */
        java.lang.String getSrcMacAddress();

        /**
         * <code>string src_mac_address = 1;</code>
         * @return The bytes for srcMacAddress.
         */
        com.google.protobuf.ByteString getSrcMacAddressBytes();

        /**
         * <code>string dst_mac_address = 2;</code>
         * @return The dstMacAddress.
         */
        java.lang.String getDstMacAddress();

        /**
         * <code>string dst_mac_address = 2;</code>
         * @return The bytes for dstMacAddress.
         */
        com.google.protobuf.ByteString getDstMacAddressBytes();

        /**
         * <code>uint32 ether_type = 3;</code>
         * @return The etherType.
         */
        int getEtherType();

        /**
         * <code>uint32 vlan_id = 4;</code>
         * @return The vlanId.
         */
        int getVlanId();

        /**
         * <code>uint32 mpls_label = 5;</code>
         * @return The mplsLabel.
         */
        int getMplsLabel();

        /**
         * <code>uint32 mpls_traffic_class = 6;</code>
         * @return The mplsTrafficClass.
         */
        int getMplsTrafficClass();
    }

    /**
     * Protobuf type {@code context.ConnectionSettings_L2}
     */
    public static final class ConnectionSettings_L2 extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.ConnectionSettings_L2)
    ConnectionSettings_L2OrBuilder {

        private static final long serialVersionUID = 0L;

        // Use ConnectionSettings_L2.newBuilder() to construct.
        private ConnectionSettings_L2(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private ConnectionSettings_L2() {
            srcMacAddress_ = "";
            dstMacAddress_ = "";
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new ConnectionSettings_L2();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_ConnectionSettings_L2_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_ConnectionSettings_L2_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ConnectionSettings_L2.class, context.ContextOuterClass.ConnectionSettings_L2.Builder.class);
        }

        public static final int SRC_MAC_ADDRESS_FIELD_NUMBER = 1;

        @SuppressWarnings("serial")
        private volatile java.lang.Object srcMacAddress_ = "";

        /**
         * <code>string src_mac_address = 1;</code>
         * @return The srcMacAddress.
         */
        @java.lang.Override
        public java.lang.String getSrcMacAddress() {
            java.lang.Object ref = srcMacAddress_;
            if (ref instanceof java.lang.String) {
                return (java.lang.String) ref;
            } else {
                com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                java.lang.String s = bs.toStringUtf8();
                srcMacAddress_ = s;
                return s;
            }
        }

        /**
         * <code>string src_mac_address = 1;</code>
         * @return The bytes for srcMacAddress.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString getSrcMacAddressBytes() {
            java.lang.Object ref = srcMacAddress_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                srcMacAddress_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int DST_MAC_ADDRESS_FIELD_NUMBER = 2;

        @SuppressWarnings("serial")
        private volatile java.lang.Object dstMacAddress_ = "";

        /**
         * <code>string dst_mac_address = 2;</code>
         * @return The dstMacAddress.
         */
        @java.lang.Override
        public java.lang.String getDstMacAddress() {
            java.lang.Object ref = dstMacAddress_;
            if (ref instanceof java.lang.String) {
                return (java.lang.String) ref;
            } else {
                com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                java.lang.String s = bs.toStringUtf8();
                dstMacAddress_ = s;
                return s;
            }
        }

        /**
         * <code>string dst_mac_address = 2;</code>
         * @return The bytes for dstMacAddress.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString getDstMacAddressBytes() {
            java.lang.Object ref = dstMacAddress_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                dstMacAddress_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int ETHER_TYPE_FIELD_NUMBER = 3;

        private int etherType_ = 0;

        /**
         * <code>uint32 ether_type = 3;</code>
         * @return The etherType.
         */
        @java.lang.Override
        public int getEtherType() {
            return etherType_;
        }

        public static final int VLAN_ID_FIELD_NUMBER = 4;

        private int vlanId_ = 0;

        /**
         * <code>uint32 vlan_id = 4;</code>
         * @return The vlanId.
         */
        @java.lang.Override
        public int getVlanId() {
            return vlanId_;
        }

        public static final int MPLS_LABEL_FIELD_NUMBER = 5;

        private int mplsLabel_ = 0;

        /**
         * <code>uint32 mpls_label = 5;</code>
         * @return The mplsLabel.
         */
        @java.lang.Override
        public int getMplsLabel() {
            return mplsLabel_;
        }

        public static final int MPLS_TRAFFIC_CLASS_FIELD_NUMBER = 6;

        private int mplsTrafficClass_ = 0;

        /**
         * <code>uint32 mpls_traffic_class = 6;</code>
         * @return The mplsTrafficClass.
         */
        @java.lang.Override
        public int getMplsTrafficClass() {
            return mplsTrafficClass_;
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(srcMacAddress_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 1, srcMacAddress_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(dstMacAddress_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 2, dstMacAddress_);
            }
            if (etherType_ != 0) {
                output.writeUInt32(3, etherType_);
            }
            if (vlanId_ != 0) {
                output.writeUInt32(4, vlanId_);
            }
            if (mplsLabel_ != 0) {
                output.writeUInt32(5, mplsLabel_);
            }
            if (mplsTrafficClass_ != 0) {
                output.writeUInt32(6, mplsTrafficClass_);
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(srcMacAddress_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, srcMacAddress_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(dstMacAddress_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, dstMacAddress_);
            }
            if (etherType_ != 0) {
                size += com.google.protobuf.CodedOutputStream.computeUInt32Size(3, etherType_);
            }
            if (vlanId_ != 0) {
                size += com.google.protobuf.CodedOutputStream.computeUInt32Size(4, vlanId_);
            }
            if (mplsLabel_ != 0) {
                size += com.google.protobuf.CodedOutputStream.computeUInt32Size(5, mplsLabel_);
            }
            if (mplsTrafficClass_ != 0) {
                size += com.google.protobuf.CodedOutputStream.computeUInt32Size(6, mplsTrafficClass_);
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.ConnectionSettings_L2)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.ConnectionSettings_L2 other = (context.ContextOuterClass.ConnectionSettings_L2) obj;
            if (!getSrcMacAddress().equals(other.getSrcMacAddress()))
                return false;
            if (!getDstMacAddress().equals(other.getDstMacAddress()))
                return false;
            if (getEtherType() != other.getEtherType())
                return false;
            if (getVlanId() != other.getVlanId())
                return false;
            if (getMplsLabel() != other.getMplsLabel())
                return false;
            if (getMplsTrafficClass() != other.getMplsTrafficClass())
                return false;
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            hash = (37 * hash) + SRC_MAC_ADDRESS_FIELD_NUMBER;
            hash = (53 * hash) + getSrcMacAddress().hashCode();
            hash = (37 * hash) + DST_MAC_ADDRESS_FIELD_NUMBER;
            hash = (53 * hash) + getDstMacAddress().hashCode();
            hash = (37 * hash) + ETHER_TYPE_FIELD_NUMBER;
            hash = (53 * hash) + getEtherType();
            hash = (37 * hash) + VLAN_ID_FIELD_NUMBER;
            hash = (53 * hash) + getVlanId();
            hash = (37 * hash) + MPLS_LABEL_FIELD_NUMBER;
            hash = (53 * hash) + getMplsLabel();
            hash = (37 * hash) + MPLS_TRAFFIC_CLASS_FIELD_NUMBER;
            hash = (53 * hash) + getMplsTrafficClass();
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.ConnectionSettings_L2 parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.ConnectionSettings_L2 parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.ConnectionSettings_L2 parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.ConnectionSettings_L2 parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.ConnectionSettings_L2 parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.ConnectionSettings_L2 parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.ConnectionSettings_L2 parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.ConnectionSettings_L2 parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.ConnectionSettings_L2 parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.ConnectionSettings_L2 parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.ConnectionSettings_L2 parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.ConnectionSettings_L2 parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.ConnectionSettings_L2 prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code context.ConnectionSettings_L2}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.ConnectionSettings_L2)
        context.ContextOuterClass.ConnectionSettings_L2OrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_ConnectionSettings_L2_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_ConnectionSettings_L2_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ConnectionSettings_L2.class, context.ContextOuterClass.ConnectionSettings_L2.Builder.class);
            }

            // Construct using context.ContextOuterClass.ConnectionSettings_L2.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                srcMacAddress_ = "";
                dstMacAddress_ = "";
                etherType_ = 0;
                vlanId_ = 0;
                mplsLabel_ = 0;
                mplsTrafficClass_ = 0;
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_ConnectionSettings_L2_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.ConnectionSettings_L2 getDefaultInstanceForType() {
                return context.ContextOuterClass.ConnectionSettings_L2.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.ConnectionSettings_L2 build() {
                context.ContextOuterClass.ConnectionSettings_L2 result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.ConnectionSettings_L2 buildPartial() {
                context.ContextOuterClass.ConnectionSettings_L2 result = new context.ContextOuterClass.ConnectionSettings_L2(this);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartial0(context.ContextOuterClass.ConnectionSettings_L2 result) {
                int from_bitField0_ = bitField0_;
                if (((from_bitField0_ & 0x00000001) != 0)) {
                    result.srcMacAddress_ = srcMacAddress_;
                }
                if (((from_bitField0_ & 0x00000002) != 0)) {
                    result.dstMacAddress_ = dstMacAddress_;
                }
                if (((from_bitField0_ & 0x00000004) != 0)) {
                    result.etherType_ = etherType_;
                }
                if (((from_bitField0_ & 0x00000008) != 0)) {
                    result.vlanId_ = vlanId_;
                }
                if (((from_bitField0_ & 0x00000010) != 0)) {
                    result.mplsLabel_ = mplsLabel_;
                }
                if (((from_bitField0_ & 0x00000020) != 0)) {
                    result.mplsTrafficClass_ = mplsTrafficClass_;
                }
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.ConnectionSettings_L2) {
                    return mergeFrom((context.ContextOuterClass.ConnectionSettings_L2) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.ConnectionSettings_L2 other) {
                if (other == context.ContextOuterClass.ConnectionSettings_L2.getDefaultInstance())
                    return this;
                if (!other.getSrcMacAddress().isEmpty()) {
                    srcMacAddress_ = other.srcMacAddress_;
                    bitField0_ |= 0x00000001;
                    onChanged();
                }
                if (!other.getDstMacAddress().isEmpty()) {
                    dstMacAddress_ = other.dstMacAddress_;
                    bitField0_ |= 0x00000002;
                    onChanged();
                }
                if (other.getEtherType() != 0) {
                    setEtherType(other.getEtherType());
                }
                if (other.getVlanId() != 0) {
                    setVlanId(other.getVlanId());
                }
                if (other.getMplsLabel() != 0) {
                    setMplsLabel(other.getMplsLabel());
                }
                if (other.getMplsTrafficClass() != 0) {
                    setMplsTrafficClass(other.getMplsTrafficClass());
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 10:
                                {
                                    srcMacAddress_ = input.readStringRequireUtf8();
                                    bitField0_ |= 0x00000001;
                                    break;
                                }
                            // case 10
                            case 18:
                                {
                                    dstMacAddress_ = input.readStringRequireUtf8();
                                    bitField0_ |= 0x00000002;
                                    break;
                                }
                            // case 18
                            case 24:
                                {
                                    etherType_ = input.readUInt32();
                                    bitField0_ |= 0x00000004;
                                    break;
                                }
                            // case 24
                            case 32:
                                {
                                    vlanId_ = input.readUInt32();
                                    bitField0_ |= 0x00000008;
                                    break;
                                }
                            // case 32
                            case 40:
                                {
                                    mplsLabel_ = input.readUInt32();
                                    bitField0_ |= 0x00000010;
                                    break;
                                }
                            // case 40
                            case 48:
                                {
                                    mplsTrafficClass_ = input.readUInt32();
                                    bitField0_ |= 0x00000020;
                                    break;
                                }
                            // case 48
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private java.lang.Object srcMacAddress_ = "";

            /**
             * <code>string src_mac_address = 1;</code>
             * @return The srcMacAddress.
             */
            public java.lang.String getSrcMacAddress() {
                java.lang.Object ref = srcMacAddress_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    srcMacAddress_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }

            /**
             * <code>string src_mac_address = 1;</code>
             * @return The bytes for srcMacAddress.
             */
            public com.google.protobuf.ByteString getSrcMacAddressBytes() {
                java.lang.Object ref = srcMacAddress_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                    srcMacAddress_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }

            /**
             * <code>string src_mac_address = 1;</code>
             * @param value The srcMacAddress to set.
             * @return This builder for chaining.
             */
            public Builder setSrcMacAddress(java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                srcMacAddress_ = value;
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>string src_mac_address = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearSrcMacAddress() {
                srcMacAddress_ = getDefaultInstance().getSrcMacAddress();
                bitField0_ = (bitField0_ & ~0x00000001);
                onChanged();
                return this;
            }

            /**
             * <code>string src_mac_address = 1;</code>
             * @param value The bytes for srcMacAddress to set.
             * @return This builder for chaining.
             */
            public Builder setSrcMacAddressBytes(com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);
                srcMacAddress_ = value;
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            private java.lang.Object dstMacAddress_ = "";

            /**
             * <code>string dst_mac_address = 2;</code>
             * @return The dstMacAddress.
             */
            public java.lang.String getDstMacAddress() {
                java.lang.Object ref = dstMacAddress_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    dstMacAddress_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }

            /**
             * <code>string dst_mac_address = 2;</code>
             * @return The bytes for dstMacAddress.
             */
            public com.google.protobuf.ByteString getDstMacAddressBytes() {
                java.lang.Object ref = dstMacAddress_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                    dstMacAddress_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }

            /**
             * <code>string dst_mac_address = 2;</code>
             * @param value The dstMacAddress to set.
             * @return This builder for chaining.
             */
            public Builder setDstMacAddress(java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                dstMacAddress_ = value;
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>string dst_mac_address = 2;</code>
             * @return This builder for chaining.
             */
            public Builder clearDstMacAddress() {
                dstMacAddress_ = getDefaultInstance().getDstMacAddress();
                bitField0_ = (bitField0_ & ~0x00000002);
                onChanged();
                return this;
            }

            /**
             * <code>string dst_mac_address = 2;</code>
             * @param value The bytes for dstMacAddress to set.
             * @return This builder for chaining.
             */
            public Builder setDstMacAddressBytes(com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);
                dstMacAddress_ = value;
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            private int etherType_;

            /**
             * <code>uint32 ether_type = 3;</code>
             * @return The etherType.
             */
            @java.lang.Override
            public int getEtherType() {
                return etherType_;
            }

            /**
             * <code>uint32 ether_type = 3;</code>
             * @param value The etherType to set.
             * @return This builder for chaining.
             */
            public Builder setEtherType(int value) {
                etherType_ = value;
                bitField0_ |= 0x00000004;
                onChanged();
                return this;
            }

            /**
             * <code>uint32 ether_type = 3;</code>
             * @return This builder for chaining.
             */
            public Builder clearEtherType() {
                bitField0_ = (bitField0_ & ~0x00000004);
                etherType_ = 0;
                onChanged();
                return this;
            }

            private int vlanId_;

            /**
             * <code>uint32 vlan_id = 4;</code>
             * @return The vlanId.
             */
            @java.lang.Override
            public int getVlanId() {
                return vlanId_;
            }

            /**
             * <code>uint32 vlan_id = 4;</code>
             * @param value The vlanId to set.
             * @return This builder for chaining.
             */
            public Builder setVlanId(int value) {
                vlanId_ = value;
                bitField0_ |= 0x00000008;
                onChanged();
                return this;
            }

            /**
             * <code>uint32 vlan_id = 4;</code>
             * @return This builder for chaining.
             */
            public Builder clearVlanId() {
                bitField0_ = (bitField0_ & ~0x00000008);
                vlanId_ = 0;
                onChanged();
                return this;
            }

            private int mplsLabel_;

            /**
             * <code>uint32 mpls_label = 5;</code>
             * @return The mplsLabel.
             */
            @java.lang.Override
            public int getMplsLabel() {
                return mplsLabel_;
            }

            /**
             * <code>uint32 mpls_label = 5;</code>
             * @param value The mplsLabel to set.
             * @return This builder for chaining.
             */
            public Builder setMplsLabel(int value) {
                mplsLabel_ = value;
                bitField0_ |= 0x00000010;
                onChanged();
                return this;
            }

            /**
             * <code>uint32 mpls_label = 5;</code>
             * @return This builder for chaining.
             */
            public Builder clearMplsLabel() {
                bitField0_ = (bitField0_ & ~0x00000010);
                mplsLabel_ = 0;
                onChanged();
                return this;
            }

            private int mplsTrafficClass_;

            /**
             * <code>uint32 mpls_traffic_class = 6;</code>
             * @return The mplsTrafficClass.
             */
            @java.lang.Override
            public int getMplsTrafficClass() {
                return mplsTrafficClass_;
            }

            /**
             * <code>uint32 mpls_traffic_class = 6;</code>
             * @param value The mplsTrafficClass to set.
             * @return This builder for chaining.
             */
            public Builder setMplsTrafficClass(int value) {
                mplsTrafficClass_ = value;
                bitField0_ |= 0x00000020;
                onChanged();
                return this;
            }

            /**
             * <code>uint32 mpls_traffic_class = 6;</code>
             * @return This builder for chaining.
             */
            public Builder clearMplsTrafficClass() {
                bitField0_ = (bitField0_ & ~0x00000020);
                mplsTrafficClass_ = 0;
                onChanged();
                return this;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.ConnectionSettings_L2)
        }

        // @@protoc_insertion_point(class_scope:context.ConnectionSettings_L2)
        private static final context.ContextOuterClass.ConnectionSettings_L2 DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.ConnectionSettings_L2();
        }

        public static context.ContextOuterClass.ConnectionSettings_L2 getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<ConnectionSettings_L2> PARSER = new com.google.protobuf.AbstractParser<ConnectionSettings_L2>() {

            @java.lang.Override
            public ConnectionSettings_L2 parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<ConnectionSettings_L2> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<ConnectionSettings_L2> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.ConnectionSettings_L2 getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface ConnectionSettings_L3OrBuilder extends // @@protoc_insertion_point(interface_extends:context.ConnectionSettings_L3)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>string src_ip_address = 1;</code>
         * @return The srcIpAddress.
         */
        java.lang.String getSrcIpAddress();

        /**
         * <code>string src_ip_address = 1;</code>
         * @return The bytes for srcIpAddress.
         */
        com.google.protobuf.ByteString getSrcIpAddressBytes();

        /**
         * <code>string dst_ip_address = 2;</code>
         * @return The dstIpAddress.
         */
        java.lang.String getDstIpAddress();

        /**
         * <code>string dst_ip_address = 2;</code>
         * @return The bytes for dstIpAddress.
         */
        com.google.protobuf.ByteString getDstIpAddressBytes();

        /**
         * <code>uint32 dscp = 3;</code>
         * @return The dscp.
         */
        int getDscp();

        /**
         * <code>uint32 protocol = 4;</code>
         * @return The protocol.
         */
        int getProtocol();

        /**
         * <code>uint32 ttl = 5;</code>
         * @return The ttl.
         */
        int getTtl();
    }

    /**
     * Protobuf type {@code context.ConnectionSettings_L3}
     */
    public static final class ConnectionSettings_L3 extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.ConnectionSettings_L3)
    ConnectionSettings_L3OrBuilder {

        private static final long serialVersionUID = 0L;

        // Use ConnectionSettings_L3.newBuilder() to construct.
        private ConnectionSettings_L3(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private ConnectionSettings_L3() {
            srcIpAddress_ = "";
            dstIpAddress_ = "";
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new ConnectionSettings_L3();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_ConnectionSettings_L3_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_ConnectionSettings_L3_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ConnectionSettings_L3.class, context.ContextOuterClass.ConnectionSettings_L3.Builder.class);
        }

        public static final int SRC_IP_ADDRESS_FIELD_NUMBER = 1;

        @SuppressWarnings("serial")
        private volatile java.lang.Object srcIpAddress_ = "";

        /**
         * <code>string src_ip_address = 1;</code>
         * @return The srcIpAddress.
         */
        @java.lang.Override
        public java.lang.String getSrcIpAddress() {
            java.lang.Object ref = srcIpAddress_;
            if (ref instanceof java.lang.String) {
                return (java.lang.String) ref;
            } else {
                com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                java.lang.String s = bs.toStringUtf8();
                srcIpAddress_ = s;
                return s;
            }
        }

        /**
         * <code>string src_ip_address = 1;</code>
         * @return The bytes for srcIpAddress.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString getSrcIpAddressBytes() {
            java.lang.Object ref = srcIpAddress_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                srcIpAddress_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int DST_IP_ADDRESS_FIELD_NUMBER = 2;

        @SuppressWarnings("serial")
        private volatile java.lang.Object dstIpAddress_ = "";

        /**
         * <code>string dst_ip_address = 2;</code>
         * @return The dstIpAddress.
         */
        @java.lang.Override
        public java.lang.String getDstIpAddress() {
            java.lang.Object ref = dstIpAddress_;
            if (ref instanceof java.lang.String) {
                return (java.lang.String) ref;
            } else {
                com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                java.lang.String s = bs.toStringUtf8();
                dstIpAddress_ = s;
                return s;
            }
        }

        /**
         * <code>string dst_ip_address = 2;</code>
         * @return The bytes for dstIpAddress.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString getDstIpAddressBytes() {
            java.lang.Object ref = dstIpAddress_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                dstIpAddress_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int DSCP_FIELD_NUMBER = 3;

        private int dscp_ = 0;

        /**
         * <code>uint32 dscp = 3;</code>
         * @return The dscp.
         */
        @java.lang.Override
        public int getDscp() {
            return dscp_;
        }

        public static final int PROTOCOL_FIELD_NUMBER = 4;

        private int protocol_ = 0;

        /**
         * <code>uint32 protocol = 4;</code>
         * @return The protocol.
         */
        @java.lang.Override
        public int getProtocol() {
            return protocol_;
        }

        public static final int TTL_FIELD_NUMBER = 5;

        private int ttl_ = 0;

        /**
         * <code>uint32 ttl = 5;</code>
         * @return The ttl.
         */
        @java.lang.Override
        public int getTtl() {
            return ttl_;
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(srcIpAddress_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 1, srcIpAddress_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(dstIpAddress_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 2, dstIpAddress_);
            }
            if (dscp_ != 0) {
                output.writeUInt32(3, dscp_);
            }
            if (protocol_ != 0) {
                output.writeUInt32(4, protocol_);
            }
            if (ttl_ != 0) {
                output.writeUInt32(5, ttl_);
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(srcIpAddress_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, srcIpAddress_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(dstIpAddress_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, dstIpAddress_);
            }
            if (dscp_ != 0) {
                size += com.google.protobuf.CodedOutputStream.computeUInt32Size(3, dscp_);
            }
            if (protocol_ != 0) {
                size += com.google.protobuf.CodedOutputStream.computeUInt32Size(4, protocol_);
            }
            if (ttl_ != 0) {
                size += com.google.protobuf.CodedOutputStream.computeUInt32Size(5, ttl_);
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.ConnectionSettings_L3)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.ConnectionSettings_L3 other = (context.ContextOuterClass.ConnectionSettings_L3) obj;
            if (!getSrcIpAddress().equals(other.getSrcIpAddress()))
                return false;
            if (!getDstIpAddress().equals(other.getDstIpAddress()))
                return false;
            if (getDscp() != other.getDscp())
                return false;
            if (getProtocol() != other.getProtocol())
                return false;
            if (getTtl() != other.getTtl())
                return false;
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            hash = (37 * hash) + SRC_IP_ADDRESS_FIELD_NUMBER;
            hash = (53 * hash) + getSrcIpAddress().hashCode();
            hash = (37 * hash) + DST_IP_ADDRESS_FIELD_NUMBER;
            hash = (53 * hash) + getDstIpAddress().hashCode();
            hash = (37 * hash) + DSCP_FIELD_NUMBER;
            hash = (53 * hash) + getDscp();
            hash = (37 * hash) + PROTOCOL_FIELD_NUMBER;
            hash = (53 * hash) + getProtocol();
            hash = (37 * hash) + TTL_FIELD_NUMBER;
            hash = (53 * hash) + getTtl();
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.ConnectionSettings_L3 parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.ConnectionSettings_L3 parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.ConnectionSettings_L3 parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.ConnectionSettings_L3 parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.ConnectionSettings_L3 parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.ConnectionSettings_L3 parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.ConnectionSettings_L3 parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.ConnectionSettings_L3 parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.ConnectionSettings_L3 parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.ConnectionSettings_L3 parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.ConnectionSettings_L3 parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.ConnectionSettings_L3 parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.ConnectionSettings_L3 prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code context.ConnectionSettings_L3}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.ConnectionSettings_L3)
        context.ContextOuterClass.ConnectionSettings_L3OrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_ConnectionSettings_L3_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_ConnectionSettings_L3_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ConnectionSettings_L3.class, context.ContextOuterClass.ConnectionSettings_L3.Builder.class);
            }

            // Construct using context.ContextOuterClass.ConnectionSettings_L3.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                srcIpAddress_ = "";
                dstIpAddress_ = "";
                dscp_ = 0;
                protocol_ = 0;
                ttl_ = 0;
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_ConnectionSettings_L3_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.ConnectionSettings_L3 getDefaultInstanceForType() {
                return context.ContextOuterClass.ConnectionSettings_L3.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.ConnectionSettings_L3 build() {
                context.ContextOuterClass.ConnectionSettings_L3 result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.ConnectionSettings_L3 buildPartial() {
                context.ContextOuterClass.ConnectionSettings_L3 result = new context.ContextOuterClass.ConnectionSettings_L3(this);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartial0(context.ContextOuterClass.ConnectionSettings_L3 result) {
                int from_bitField0_ = bitField0_;
                if (((from_bitField0_ & 0x00000001) != 0)) {
                    result.srcIpAddress_ = srcIpAddress_;
                }
                if (((from_bitField0_ & 0x00000002) != 0)) {
                    result.dstIpAddress_ = dstIpAddress_;
                }
                if (((from_bitField0_ & 0x00000004) != 0)) {
                    result.dscp_ = dscp_;
                }
                if (((from_bitField0_ & 0x00000008) != 0)) {
                    result.protocol_ = protocol_;
                }
                if (((from_bitField0_ & 0x00000010) != 0)) {
                    result.ttl_ = ttl_;
                }
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.ConnectionSettings_L3) {
                    return mergeFrom((context.ContextOuterClass.ConnectionSettings_L3) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.ConnectionSettings_L3 other) {
                if (other == context.ContextOuterClass.ConnectionSettings_L3.getDefaultInstance())
                    return this;
                if (!other.getSrcIpAddress().isEmpty()) {
                    srcIpAddress_ = other.srcIpAddress_;
                    bitField0_ |= 0x00000001;
                    onChanged();
                }
                if (!other.getDstIpAddress().isEmpty()) {
                    dstIpAddress_ = other.dstIpAddress_;
                    bitField0_ |= 0x00000002;
                    onChanged();
                }
                if (other.getDscp() != 0) {
                    setDscp(other.getDscp());
                }
                if (other.getProtocol() != 0) {
                    setProtocol(other.getProtocol());
                }
                if (other.getTtl() != 0) {
                    setTtl(other.getTtl());
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 10:
                                {
                                    srcIpAddress_ = input.readStringRequireUtf8();
                                    bitField0_ |= 0x00000001;
                                    break;
                                }
                            // case 10
                            case 18:
                                {
                                    dstIpAddress_ = input.readStringRequireUtf8();
                                    bitField0_ |= 0x00000002;
                                    break;
                                }
                            // case 18
                            case 24:
                                {
                                    dscp_ = input.readUInt32();
                                    bitField0_ |= 0x00000004;
                                    break;
                                }
                            // case 24
                            case 32:
                                {
                                    protocol_ = input.readUInt32();
                                    bitField0_ |= 0x00000008;
                                    break;
                                }
                            // case 32
                            case 40:
                                {
                                    ttl_ = input.readUInt32();
                                    bitField0_ |= 0x00000010;
                                    break;
                                }
                            // case 40
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private java.lang.Object srcIpAddress_ = "";

            /**
             * <code>string src_ip_address = 1;</code>
             * @return The srcIpAddress.
             */
            public java.lang.String getSrcIpAddress() {
                java.lang.Object ref = srcIpAddress_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    srcIpAddress_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }

            /**
             * <code>string src_ip_address = 1;</code>
             * @return The bytes for srcIpAddress.
             */
            public com.google.protobuf.ByteString getSrcIpAddressBytes() {
                java.lang.Object ref = srcIpAddress_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                    srcIpAddress_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }

            /**
             * <code>string src_ip_address = 1;</code>
             * @param value The srcIpAddress to set.
             * @return This builder for chaining.
             */
            public Builder setSrcIpAddress(java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                srcIpAddress_ = value;
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>string src_ip_address = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearSrcIpAddress() {
                srcIpAddress_ = getDefaultInstance().getSrcIpAddress();
                bitField0_ = (bitField0_ & ~0x00000001);
                onChanged();
                return this;
            }

            /**
             * <code>string src_ip_address = 1;</code>
             * @param value The bytes for srcIpAddress to set.
             * @return This builder for chaining.
             */
            public Builder setSrcIpAddressBytes(com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);
                srcIpAddress_ = value;
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            private java.lang.Object dstIpAddress_ = "";

            /**
             * <code>string dst_ip_address = 2;</code>
             * @return The dstIpAddress.
             */
            public java.lang.String getDstIpAddress() {
                java.lang.Object ref = dstIpAddress_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    dstIpAddress_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }

            /**
             * <code>string dst_ip_address = 2;</code>
             * @return The bytes for dstIpAddress.
             */
            public com.google.protobuf.ByteString getDstIpAddressBytes() {
                java.lang.Object ref = dstIpAddress_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                    dstIpAddress_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }

            /**
             * <code>string dst_ip_address = 2;</code>
             * @param value The dstIpAddress to set.
             * @return This builder for chaining.
             */
            public Builder setDstIpAddress(java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                dstIpAddress_ = value;
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>string dst_ip_address = 2;</code>
             * @return This builder for chaining.
             */
            public Builder clearDstIpAddress() {
                dstIpAddress_ = getDefaultInstance().getDstIpAddress();
                bitField0_ = (bitField0_ & ~0x00000002);
                onChanged();
                return this;
            }

            /**
             * <code>string dst_ip_address = 2;</code>
             * @param value The bytes for dstIpAddress to set.
             * @return This builder for chaining.
             */
            public Builder setDstIpAddressBytes(com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);
                dstIpAddress_ = value;
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            private int dscp_;

            /**
             * <code>uint32 dscp = 3;</code>
             * @return The dscp.
             */
            @java.lang.Override
            public int getDscp() {
                return dscp_;
            }

            /**
             * <code>uint32 dscp = 3;</code>
             * @param value The dscp to set.
             * @return This builder for chaining.
             */
            public Builder setDscp(int value) {
                dscp_ = value;
                bitField0_ |= 0x00000004;
                onChanged();
                return this;
            }

            /**
             * <code>uint32 dscp = 3;</code>
             * @return This builder for chaining.
             */
            public Builder clearDscp() {
                bitField0_ = (bitField0_ & ~0x00000004);
                dscp_ = 0;
                onChanged();
                return this;
            }

            private int protocol_;

            /**
             * <code>uint32 protocol = 4;</code>
             * @return The protocol.
             */
            @java.lang.Override
            public int getProtocol() {
                return protocol_;
            }

            /**
             * <code>uint32 protocol = 4;</code>
             * @param value The protocol to set.
             * @return This builder for chaining.
             */
            public Builder setProtocol(int value) {
                protocol_ = value;
                bitField0_ |= 0x00000008;
                onChanged();
                return this;
            }

            /**
             * <code>uint32 protocol = 4;</code>
             * @return This builder for chaining.
             */
            public Builder clearProtocol() {
                bitField0_ = (bitField0_ & ~0x00000008);
                protocol_ = 0;
                onChanged();
                return this;
            }

            private int ttl_;

            /**
             * <code>uint32 ttl = 5;</code>
             * @return The ttl.
             */
            @java.lang.Override
            public int getTtl() {
                return ttl_;
            }

            /**
             * <code>uint32 ttl = 5;</code>
             * @param value The ttl to set.
             * @return This builder for chaining.
             */
            public Builder setTtl(int value) {
                ttl_ = value;
                bitField0_ |= 0x00000010;
                onChanged();
                return this;
            }

            /**
             * <code>uint32 ttl = 5;</code>
             * @return This builder for chaining.
             */
            public Builder clearTtl() {
                bitField0_ = (bitField0_ & ~0x00000010);
                ttl_ = 0;
                onChanged();
                return this;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.ConnectionSettings_L3)
        }

        // @@protoc_insertion_point(class_scope:context.ConnectionSettings_L3)
        private static final context.ContextOuterClass.ConnectionSettings_L3 DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.ConnectionSettings_L3();
        }

        public static context.ContextOuterClass.ConnectionSettings_L3 getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<ConnectionSettings_L3> PARSER = new com.google.protobuf.AbstractParser<ConnectionSettings_L3>() {

            @java.lang.Override
            public ConnectionSettings_L3 parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<ConnectionSettings_L3> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<ConnectionSettings_L3> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.ConnectionSettings_L3 getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface ConnectionSettings_L4OrBuilder extends // @@protoc_insertion_point(interface_extends:context.ConnectionSettings_L4)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>uint32 src_port = 1;</code>
         * @return The srcPort.
         */
        int getSrcPort();

        /**
         * <code>uint32 dst_port = 2;</code>
         * @return The dstPort.
         */
        int getDstPort();

        /**
         * <code>uint32 tcp_flags = 3;</code>
         * @return The tcpFlags.
         */
        int getTcpFlags();

        /**
         * <code>uint32 ttl = 4;</code>
         * @return The ttl.
         */
        int getTtl();
    }

    /**
     * Protobuf type {@code context.ConnectionSettings_L4}
     */
    public static final class ConnectionSettings_L4 extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.ConnectionSettings_L4)
    ConnectionSettings_L4OrBuilder {

        private static final long serialVersionUID = 0L;

        // Use ConnectionSettings_L4.newBuilder() to construct.
        private ConnectionSettings_L4(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private ConnectionSettings_L4() {
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new ConnectionSettings_L4();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_ConnectionSettings_L4_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_ConnectionSettings_L4_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ConnectionSettings_L4.class, context.ContextOuterClass.ConnectionSettings_L4.Builder.class);
        }

        public static final int SRC_PORT_FIELD_NUMBER = 1;

        private int srcPort_ = 0;

        /**
         * <code>uint32 src_port = 1;</code>
         * @return The srcPort.
         */
        @java.lang.Override
        public int getSrcPort() {
            return srcPort_;
        }

        public static final int DST_PORT_FIELD_NUMBER = 2;

        private int dstPort_ = 0;

        /**
         * <code>uint32 dst_port = 2;</code>
         * @return The dstPort.
         */
        @java.lang.Override
        public int getDstPort() {
            return dstPort_;
        }

        public static final int TCP_FLAGS_FIELD_NUMBER = 3;

        private int tcpFlags_ = 0;

        /**
         * <code>uint32 tcp_flags = 3;</code>
         * @return The tcpFlags.
         */
        @java.lang.Override
        public int getTcpFlags() {
            return tcpFlags_;
        }

        public static final int TTL_FIELD_NUMBER = 4;

        private int ttl_ = 0;

        /**
         * <code>uint32 ttl = 4;</code>
         * @return The ttl.
         */
        @java.lang.Override
        public int getTtl() {
            return ttl_;
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            if (srcPort_ != 0) {
                output.writeUInt32(1, srcPort_);
            }
            if (dstPort_ != 0) {
                output.writeUInt32(2, dstPort_);
            }
            if (tcpFlags_ != 0) {
                output.writeUInt32(3, tcpFlags_);
            }
            if (ttl_ != 0) {
                output.writeUInt32(4, ttl_);
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            if (srcPort_ != 0) {
                size += com.google.protobuf.CodedOutputStream.computeUInt32Size(1, srcPort_);
            }
            if (dstPort_ != 0) {
                size += com.google.protobuf.CodedOutputStream.computeUInt32Size(2, dstPort_);
            }
            if (tcpFlags_ != 0) {
                size += com.google.protobuf.CodedOutputStream.computeUInt32Size(3, tcpFlags_);
            }
            if (ttl_ != 0) {
                size += com.google.protobuf.CodedOutputStream.computeUInt32Size(4, ttl_);
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.ConnectionSettings_L4)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.ConnectionSettings_L4 other = (context.ContextOuterClass.ConnectionSettings_L4) obj;
            if (getSrcPort() != other.getSrcPort())
                return false;
            if (getDstPort() != other.getDstPort())
                return false;
            if (getTcpFlags() != other.getTcpFlags())
                return false;
            if (getTtl() != other.getTtl())
                return false;
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            hash = (37 * hash) + SRC_PORT_FIELD_NUMBER;
            hash = (53 * hash) + getSrcPort();
            hash = (37 * hash) + DST_PORT_FIELD_NUMBER;
            hash = (53 * hash) + getDstPort();
            hash = (37 * hash) + TCP_FLAGS_FIELD_NUMBER;
            hash = (53 * hash) + getTcpFlags();
            hash = (37 * hash) + TTL_FIELD_NUMBER;
            hash = (53 * hash) + getTtl();
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.ConnectionSettings_L4 parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.ConnectionSettings_L4 parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.ConnectionSettings_L4 parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.ConnectionSettings_L4 parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.ConnectionSettings_L4 parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.ConnectionSettings_L4 parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.ConnectionSettings_L4 parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.ConnectionSettings_L4 parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.ConnectionSettings_L4 parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.ConnectionSettings_L4 parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.ConnectionSettings_L4 parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.ConnectionSettings_L4 parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.ConnectionSettings_L4 prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code context.ConnectionSettings_L4}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.ConnectionSettings_L4)
        context.ContextOuterClass.ConnectionSettings_L4OrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_ConnectionSettings_L4_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_ConnectionSettings_L4_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ConnectionSettings_L4.class, context.ContextOuterClass.ConnectionSettings_L4.Builder.class);
            }

            // Construct using context.ContextOuterClass.ConnectionSettings_L4.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                srcPort_ = 0;
                dstPort_ = 0;
                tcpFlags_ = 0;
                ttl_ = 0;
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_ConnectionSettings_L4_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.ConnectionSettings_L4 getDefaultInstanceForType() {
                return context.ContextOuterClass.ConnectionSettings_L4.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.ConnectionSettings_L4 build() {
                context.ContextOuterClass.ConnectionSettings_L4 result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.ConnectionSettings_L4 buildPartial() {
                context.ContextOuterClass.ConnectionSettings_L4 result = new context.ContextOuterClass.ConnectionSettings_L4(this);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartial0(context.ContextOuterClass.ConnectionSettings_L4 result) {
                int from_bitField0_ = bitField0_;
                if (((from_bitField0_ & 0x00000001) != 0)) {
                    result.srcPort_ = srcPort_;
                }
                if (((from_bitField0_ & 0x00000002) != 0)) {
                    result.dstPort_ = dstPort_;
                }
                if (((from_bitField0_ & 0x00000004) != 0)) {
                    result.tcpFlags_ = tcpFlags_;
                }
                if (((from_bitField0_ & 0x00000008) != 0)) {
                    result.ttl_ = ttl_;
                }
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.ConnectionSettings_L4) {
                    return mergeFrom((context.ContextOuterClass.ConnectionSettings_L4) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.ConnectionSettings_L4 other) {
                if (other == context.ContextOuterClass.ConnectionSettings_L4.getDefaultInstance())
                    return this;
                if (other.getSrcPort() != 0) {
                    setSrcPort(other.getSrcPort());
                }
                if (other.getDstPort() != 0) {
                    setDstPort(other.getDstPort());
                }
                if (other.getTcpFlags() != 0) {
                    setTcpFlags(other.getTcpFlags());
                }
                if (other.getTtl() != 0) {
                    setTtl(other.getTtl());
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 8:
                                {
                                    srcPort_ = input.readUInt32();
                                    bitField0_ |= 0x00000001;
                                    break;
                                }
                            // case 8
                            case 16:
                                {
                                    dstPort_ = input.readUInt32();
                                    bitField0_ |= 0x00000002;
                                    break;
                                }
                            // case 16
                            case 24:
                                {
                                    tcpFlags_ = input.readUInt32();
                                    bitField0_ |= 0x00000004;
                                    break;
                                }
                            // case 24
                            case 32:
                                {
                                    ttl_ = input.readUInt32();
                                    bitField0_ |= 0x00000008;
                                    break;
                                }
                            // case 32
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private int srcPort_;

            /**
             * <code>uint32 src_port = 1;</code>
             * @return The srcPort.
             */
            @java.lang.Override
            public int getSrcPort() {
                return srcPort_;
            }

            /**
             * <code>uint32 src_port = 1;</code>
             * @param value The srcPort to set.
             * @return This builder for chaining.
             */
            public Builder setSrcPort(int value) {
                srcPort_ = value;
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>uint32 src_port = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearSrcPort() {
                bitField0_ = (bitField0_ & ~0x00000001);
                srcPort_ = 0;
                onChanged();
                return this;
            }

            private int dstPort_;

            /**
             * <code>uint32 dst_port = 2;</code>
             * @return The dstPort.
             */
            @java.lang.Override
            public int getDstPort() {
                return dstPort_;
            }

            /**
             * <code>uint32 dst_port = 2;</code>
             * @param value The dstPort to set.
             * @return This builder for chaining.
             */
            public Builder setDstPort(int value) {
                dstPort_ = value;
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>uint32 dst_port = 2;</code>
             * @return This builder for chaining.
             */
            public Builder clearDstPort() {
                bitField0_ = (bitField0_ & ~0x00000002);
                dstPort_ = 0;
                onChanged();
                return this;
            }

            private int tcpFlags_;

            /**
             * <code>uint32 tcp_flags = 3;</code>
             * @return The tcpFlags.
             */
            @java.lang.Override
            public int getTcpFlags() {
                return tcpFlags_;
            }

            /**
             * <code>uint32 tcp_flags = 3;</code>
             * @param value The tcpFlags to set.
             * @return This builder for chaining.
             */
            public Builder setTcpFlags(int value) {
                tcpFlags_ = value;
                bitField0_ |= 0x00000004;
                onChanged();
                return this;
            }

            /**
             * <code>uint32 tcp_flags = 3;</code>
             * @return This builder for chaining.
             */
            public Builder clearTcpFlags() {
                bitField0_ = (bitField0_ & ~0x00000004);
                tcpFlags_ = 0;
                onChanged();
                return this;
            }

            private int ttl_;

            /**
             * <code>uint32 ttl = 4;</code>
             * @return The ttl.
             */
            @java.lang.Override
            public int getTtl() {
                return ttl_;
            }

            /**
             * <code>uint32 ttl = 4;</code>
             * @param value The ttl to set.
             * @return This builder for chaining.
             */
            public Builder setTtl(int value) {
                ttl_ = value;
                bitField0_ |= 0x00000008;
                onChanged();
                return this;
            }

            /**
             * <code>uint32 ttl = 4;</code>
             * @return This builder for chaining.
             */
            public Builder clearTtl() {
                bitField0_ = (bitField0_ & ~0x00000008);
                ttl_ = 0;
                onChanged();
                return this;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.ConnectionSettings_L4)
        }

        // @@protoc_insertion_point(class_scope:context.ConnectionSettings_L4)
        private static final context.ContextOuterClass.ConnectionSettings_L4 DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.ConnectionSettings_L4();
        }

        public static context.ContextOuterClass.ConnectionSettings_L4 getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<ConnectionSettings_L4> PARSER = new com.google.protobuf.AbstractParser<ConnectionSettings_L4>() {

            @java.lang.Override
            public ConnectionSettings_L4 parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<ConnectionSettings_L4> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<ConnectionSettings_L4> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.ConnectionSettings_L4 getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface ConnectionSettingsOrBuilder extends // @@protoc_insertion_point(interface_extends:context.ConnectionSettings)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
         * @return Whether the l0 field is set.
         */
        boolean hasL0();

        /**
         * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
         * @return The l0.
         */
        context.ContextOuterClass.ConnectionSettings_L0 getL0();

        /**
         * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
         */
        context.ContextOuterClass.ConnectionSettings_L0OrBuilder getL0OrBuilder();

        /**
         * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
         * @return Whether the l2 field is set.
         */
        boolean hasL2();

        /**
         * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
         * @return The l2.
         */
        context.ContextOuterClass.ConnectionSettings_L2 getL2();

        /**
         * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
         */
        context.ContextOuterClass.ConnectionSettings_L2OrBuilder getL2OrBuilder();

        /**
         * <code>.context.ConnectionSettings_L3 l3 = 3;</code>
         * @return Whether the l3 field is set.
         */
        boolean hasL3();

        /**
         * <code>.context.ConnectionSettings_L3 l3 = 3;</code>
         * @return The l3.
         */
        context.ContextOuterClass.ConnectionSettings_L3 getL3();

        /**
         * <code>.context.ConnectionSettings_L3 l3 = 3;</code>
         */
        context.ContextOuterClass.ConnectionSettings_L3OrBuilder getL3OrBuilder();

        /**
         * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
         * @return Whether the l4 field is set.
         */
        boolean hasL4();

        /**
         * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
         * @return The l4.
         */
        context.ContextOuterClass.ConnectionSettings_L4 getL4();

        /**
         * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
         */
        context.ContextOuterClass.ConnectionSettings_L4OrBuilder getL4OrBuilder();
    }

    /**
     * Protobuf type {@code context.ConnectionSettings}
     */
    public static final class ConnectionSettings extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.ConnectionSettings)
    ConnectionSettingsOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use ConnectionSettings.newBuilder() to construct.
        private ConnectionSettings(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private ConnectionSettings() {
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new ConnectionSettings();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_ConnectionSettings_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_ConnectionSettings_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ConnectionSettings.class, context.ContextOuterClass.ConnectionSettings.Builder.class);
        }

        public static final int L0_FIELD_NUMBER = 1;

        private context.ContextOuterClass.ConnectionSettings_L0 l0_;

        /**
         * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
         * @return Whether the l0 field is set.
         */
        @java.lang.Override
        public boolean hasL0() {
            return l0_ != null;
        }

        /**
         * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
         * @return The l0.
         */
        @java.lang.Override
        public context.ContextOuterClass.ConnectionSettings_L0 getL0() {
            return l0_ == null ? context.ContextOuterClass.ConnectionSettings_L0.getDefaultInstance() : l0_;
        }

        /**
         * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.ConnectionSettings_L0OrBuilder getL0OrBuilder() {
            return l0_ == null ? context.ContextOuterClass.ConnectionSettings_L0.getDefaultInstance() : l0_;
        }

        public static final int L2_FIELD_NUMBER = 2;

        private context.ContextOuterClass.ConnectionSettings_L2 l2_;

        /**
         * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
         * @return Whether the l2 field is set.
         */
        @java.lang.Override
        public boolean hasL2() {
            return l2_ != null;
        }

        /**
         * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
         * @return The l2.
         */
        @java.lang.Override
        public context.ContextOuterClass.ConnectionSettings_L2 getL2() {
            return l2_ == null ? context.ContextOuterClass.ConnectionSettings_L2.getDefaultInstance() : l2_;
        }

        /**
         * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.ConnectionSettings_L2OrBuilder getL2OrBuilder() {
            return l2_ == null ? context.ContextOuterClass.ConnectionSettings_L2.getDefaultInstance() : l2_;
        }

        public static final int L3_FIELD_NUMBER = 3;

        private context.ContextOuterClass.ConnectionSettings_L3 l3_;

        /**
         * <code>.context.ConnectionSettings_L3 l3 = 3;</code>
         * @return Whether the l3 field is set.
         */
        @java.lang.Override
        public boolean hasL3() {
            return l3_ != null;
        }

        /**
         * <code>.context.ConnectionSettings_L3 l3 = 3;</code>
         * @return The l3.
         */
        @java.lang.Override
        public context.ContextOuterClass.ConnectionSettings_L3 getL3() {
            return l3_ == null ? context.ContextOuterClass.ConnectionSettings_L3.getDefaultInstance() : l3_;
        }

        /**
         * <code>.context.ConnectionSettings_L3 l3 = 3;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.ConnectionSettings_L3OrBuilder getL3OrBuilder() {
            return l3_ == null ? context.ContextOuterClass.ConnectionSettings_L3.getDefaultInstance() : l3_;
        }

        public static final int L4_FIELD_NUMBER = 4;

        private context.ContextOuterClass.ConnectionSettings_L4 l4_;

        /**
         * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
         * @return Whether the l4 field is set.
         */
        @java.lang.Override
        public boolean hasL4() {
            return l4_ != null;
        }

        /**
         * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
         * @return The l4.
         */
        @java.lang.Override
        public context.ContextOuterClass.ConnectionSettings_L4 getL4() {
            return l4_ == null ? context.ContextOuterClass.ConnectionSettings_L4.getDefaultInstance() : l4_;
        }

        /**
         * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.ConnectionSettings_L4OrBuilder getL4OrBuilder() {
            return l4_ == null ? context.ContextOuterClass.ConnectionSettings_L4.getDefaultInstance() : l4_;
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            if (l0_ != null) {
                output.writeMessage(1, getL0());
            }
            if (l2_ != null) {
                output.writeMessage(2, getL2());
            }
            if (l3_ != null) {
                output.writeMessage(3, getL3());
            }
            if (l4_ != null) {
                output.writeMessage(4, getL4());
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            if (l0_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getL0());
            }
            if (l2_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getL2());
            }
            if (l3_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, getL3());
            }
            if (l4_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, getL4());
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.ConnectionSettings)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.ConnectionSettings other = (context.ContextOuterClass.ConnectionSettings) obj;
            if (hasL0() != other.hasL0())
                return false;
            if (hasL0()) {
                if (!getL0().equals(other.getL0()))
                    return false;
            }
            if (hasL2() != other.hasL2())
                return false;
            if (hasL2()) {
                if (!getL2().equals(other.getL2()))
                    return false;
            }
            if (hasL3() != other.hasL3())
                return false;
            if (hasL3()) {
                if (!getL3().equals(other.getL3()))
                    return false;
            }
            if (hasL4() != other.hasL4())
                return false;
            if (hasL4()) {
                if (!getL4().equals(other.getL4()))
                    return false;
            }
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            if (hasL0()) {
                hash = (37 * hash) + L0_FIELD_NUMBER;
                hash = (53 * hash) + getL0().hashCode();
            }
            if (hasL2()) {
                hash = (37 * hash) + L2_FIELD_NUMBER;
                hash = (53 * hash) + getL2().hashCode();
            }
            if (hasL3()) {
                hash = (37 * hash) + L3_FIELD_NUMBER;
                hash = (53 * hash) + getL3().hashCode();
            }
            if (hasL4()) {
                hash = (37 * hash) + L4_FIELD_NUMBER;
                hash = (53 * hash) + getL4().hashCode();
            }
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.ConnectionSettings parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.ConnectionSettings parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.ConnectionSettings parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.ConnectionSettings parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.ConnectionSettings parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.ConnectionSettings parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.ConnectionSettings parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.ConnectionSettings parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.ConnectionSettings parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.ConnectionSettings parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.ConnectionSettings parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.ConnectionSettings parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.ConnectionSettings prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code context.ConnectionSettings}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.ConnectionSettings)
        context.ContextOuterClass.ConnectionSettingsOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_ConnectionSettings_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_ConnectionSettings_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ConnectionSettings.class, context.ContextOuterClass.ConnectionSettings.Builder.class);
            }

            // Construct using context.ContextOuterClass.ConnectionSettings.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                l0_ = null;
                if (l0Builder_ != null) {
                    l0Builder_.dispose();
                    l0Builder_ = null;
                }
                l2_ = null;
                if (l2Builder_ != null) {
                    l2Builder_.dispose();
                    l2Builder_ = null;
                }
                l3_ = null;
                if (l3Builder_ != null) {
                    l3Builder_.dispose();
                    l3Builder_ = null;
                }
                l4_ = null;
                if (l4Builder_ != null) {
                    l4Builder_.dispose();
                    l4Builder_ = null;
                }
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_ConnectionSettings_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.ConnectionSettings getDefaultInstanceForType() {
                return context.ContextOuterClass.ConnectionSettings.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.ConnectionSettings build() {
                context.ContextOuterClass.ConnectionSettings result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.ConnectionSettings buildPartial() {
                context.ContextOuterClass.ConnectionSettings result = new context.ContextOuterClass.ConnectionSettings(this);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartial0(context.ContextOuterClass.ConnectionSettings result) {
                int from_bitField0_ = bitField0_;
                if (((from_bitField0_ & 0x00000001) != 0)) {
                    result.l0_ = l0Builder_ == null ? l0_ : l0Builder_.build();
                }
                if (((from_bitField0_ & 0x00000002) != 0)) {
                    result.l2_ = l2Builder_ == null ? l2_ : l2Builder_.build();
                }
                if (((from_bitField0_ & 0x00000004) != 0)) {
                    result.l3_ = l3Builder_ == null ? l3_ : l3Builder_.build();
                }
                if (((from_bitField0_ & 0x00000008) != 0)) {
                    result.l4_ = l4Builder_ == null ? l4_ : l4Builder_.build();
                }
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.ConnectionSettings) {
                    return mergeFrom((context.ContextOuterClass.ConnectionSettings) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.ConnectionSettings other) {
                if (other == context.ContextOuterClass.ConnectionSettings.getDefaultInstance())
                    return this;
                if (other.hasL0()) {
                    mergeL0(other.getL0());
                }
                if (other.hasL2()) {
                    mergeL2(other.getL2());
                }
                if (other.hasL3()) {
                    mergeL3(other.getL3());
                }
                if (other.hasL4()) {
                    mergeL4(other.getL4());
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 10:
                                {
                                    input.readMessage(getL0FieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000001;
                                    break;
                                }
                            // case 10
                            case 18:
                                {
                                    input.readMessage(getL2FieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000002;
                                    break;
                                }
                            // case 18
                            case 26:
                                {
                                    input.readMessage(getL3FieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000004;
                                    break;
                                }
                            // case 26
                            case 34:
                                {
                                    input.readMessage(getL4FieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000008;
                                    break;
                                }
                            // case 34
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private context.ContextOuterClass.ConnectionSettings_L0 l0_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ConnectionSettings_L0, context.ContextOuterClass.ConnectionSettings_L0.Builder, context.ContextOuterClass.ConnectionSettings_L0OrBuilder> l0Builder_;

            /**
             * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
             * @return Whether the l0 field is set.
             */
            public boolean hasL0() {
                return ((bitField0_ & 0x00000001) != 0);
            }

            /**
             * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
             * @return The l0.
             */
            public context.ContextOuterClass.ConnectionSettings_L0 getL0() {
                if (l0Builder_ == null) {
                    return l0_ == null ? context.ContextOuterClass.ConnectionSettings_L0.getDefaultInstance() : l0_;
                } else {
                    return l0Builder_.getMessage();
                }
            }

            /**
             * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
             */
            public Builder setL0(context.ContextOuterClass.ConnectionSettings_L0 value) {
                if (l0Builder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    l0_ = value;
                } else {
                    l0Builder_.setMessage(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
             */
            public Builder setL0(context.ContextOuterClass.ConnectionSettings_L0.Builder builderForValue) {
                if (l0Builder_ == null) {
                    l0_ = builderForValue.build();
                } else {
                    l0Builder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
             */
            public Builder mergeL0(context.ContextOuterClass.ConnectionSettings_L0 value) {
                if (l0Builder_ == null) {
                    if (((bitField0_ & 0x00000001) != 0) && l0_ != null && l0_ != context.ContextOuterClass.ConnectionSettings_L0.getDefaultInstance()) {
                        getL0Builder().mergeFrom(value);
                    } else {
                        l0_ = value;
                    }
                } else {
                    l0Builder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
             */
            public Builder clearL0() {
                bitField0_ = (bitField0_ & ~0x00000001);
                l0_ = null;
                if (l0Builder_ != null) {
                    l0Builder_.dispose();
                    l0Builder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
             */
            public context.ContextOuterClass.ConnectionSettings_L0.Builder getL0Builder() {
                bitField0_ |= 0x00000001;
                onChanged();
                return getL0FieldBuilder().getBuilder();
            }

            /**
             * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
             */
            public context.ContextOuterClass.ConnectionSettings_L0OrBuilder getL0OrBuilder() {
                if (l0Builder_ != null) {
                    return l0Builder_.getMessageOrBuilder();
                } else {
                    return l0_ == null ? context.ContextOuterClass.ConnectionSettings_L0.getDefaultInstance() : l0_;
                }
            }

            /**
             * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ConnectionSettings_L0, context.ContextOuterClass.ConnectionSettings_L0.Builder, context.ContextOuterClass.ConnectionSettings_L0OrBuilder> getL0FieldBuilder() {
                if (l0Builder_ == null) {
                    l0Builder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ConnectionSettings_L0, context.ContextOuterClass.ConnectionSettings_L0.Builder, context.ContextOuterClass.ConnectionSettings_L0OrBuilder>(getL0(), getParentForChildren(), isClean());
                    l0_ = null;
                }
                return l0Builder_;
            }

            private context.ContextOuterClass.ConnectionSettings_L2 l2_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ConnectionSettings_L2, context.ContextOuterClass.ConnectionSettings_L2.Builder, context.ContextOuterClass.ConnectionSettings_L2OrBuilder> l2Builder_;

            /**
             * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
             * @return Whether the l2 field is set.
             */
            public boolean hasL2() {
                return ((bitField0_ & 0x00000002) != 0);
            }

            /**
             * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
             * @return The l2.
             */
            public context.ContextOuterClass.ConnectionSettings_L2 getL2() {
                if (l2Builder_ == null) {
                    return l2_ == null ? context.ContextOuterClass.ConnectionSettings_L2.getDefaultInstance() : l2_;
                } else {
                    return l2Builder_.getMessage();
                }
            }

            /**
             * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
             */
            public Builder setL2(context.ContextOuterClass.ConnectionSettings_L2 value) {
                if (l2Builder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    l2_ = value;
                } else {
                    l2Builder_.setMessage(value);
                }
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
             */
            public Builder setL2(context.ContextOuterClass.ConnectionSettings_L2.Builder builderForValue) {
                if (l2Builder_ == null) {
                    l2_ = builderForValue.build();
                } else {
                    l2Builder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
             */
            public Builder mergeL2(context.ContextOuterClass.ConnectionSettings_L2 value) {
                if (l2Builder_ == null) {
                    if (((bitField0_ & 0x00000002) != 0) && l2_ != null && l2_ != context.ContextOuterClass.ConnectionSettings_L2.getDefaultInstance()) {
                        getL2Builder().mergeFrom(value);
                    } else {
                        l2_ = value;
                    }
                } else {
                    l2Builder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
             */
            public Builder clearL2() {
                bitField0_ = (bitField0_ & ~0x00000002);
                l2_ = null;
                if (l2Builder_ != null) {
                    l2Builder_.dispose();
                    l2Builder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
             */
            public context.ContextOuterClass.ConnectionSettings_L2.Builder getL2Builder() {
                bitField0_ |= 0x00000002;
                onChanged();
                return getL2FieldBuilder().getBuilder();
            }

            /**
             * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
             */
            public context.ContextOuterClass.ConnectionSettings_L2OrBuilder getL2OrBuilder() {
                if (l2Builder_ != null) {
                    return l2Builder_.getMessageOrBuilder();
                } else {
                    return l2_ == null ? context.ContextOuterClass.ConnectionSettings_L2.getDefaultInstance() : l2_;
                }
            }

            /**
             * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ConnectionSettings_L2, context.ContextOuterClass.ConnectionSettings_L2.Builder, context.ContextOuterClass.ConnectionSettings_L2OrBuilder> getL2FieldBuilder() {
                if (l2Builder_ == null) {
                    l2Builder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ConnectionSettings_L2, context.ContextOuterClass.ConnectionSettings_L2.Builder, context.ContextOuterClass.ConnectionSettings_L2OrBuilder>(getL2(), getParentForChildren(), isClean());
                    l2_ = null;
                }
                return l2Builder_;
            }

            private context.ContextOuterClass.ConnectionSettings_L3 l3_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ConnectionSettings_L3, context.ContextOuterClass.ConnectionSettings_L3.Builder, context.ContextOuterClass.ConnectionSettings_L3OrBuilder> l3Builder_;

            /**
             * <code>.context.ConnectionSettings_L3 l3 = 3;</code>
             * @return Whether the l3 field is set.
             */
            public boolean hasL3() {
                return ((bitField0_ & 0x00000004) != 0);
            }

            /**
             * <code>.context.ConnectionSettings_L3 l3 = 3;</code>
             * @return The l3.
             */
            public context.ContextOuterClass.ConnectionSettings_L3 getL3() {
                if (l3Builder_ == null) {
                    return l3_ == null ? context.ContextOuterClass.ConnectionSettings_L3.getDefaultInstance() : l3_;
                } else {
                    return l3Builder_.getMessage();
                }
            }

            /**
             * <code>.context.ConnectionSettings_L3 l3 = 3;</code>
             */
            public Builder setL3(context.ContextOuterClass.ConnectionSettings_L3 value) {
                if (l3Builder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    l3_ = value;
                } else {
                    l3Builder_.setMessage(value);
                }
                bitField0_ |= 0x00000004;
                onChanged();
                return this;
            }

            /**
             * <code>.context.ConnectionSettings_L3 l3 = 3;</code>
             */
            public Builder setL3(context.ContextOuterClass.ConnectionSettings_L3.Builder builderForValue) {
                if (l3Builder_ == null) {
                    l3_ = builderForValue.build();
                } else {
                    l3Builder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000004;
                onChanged();
                return this;
            }

            /**
             * <code>.context.ConnectionSettings_L3 l3 = 3;</code>
             */
            public Builder mergeL3(context.ContextOuterClass.ConnectionSettings_L3 value) {
                if (l3Builder_ == null) {
                    if (((bitField0_ & 0x00000004) != 0) && l3_ != null && l3_ != context.ContextOuterClass.ConnectionSettings_L3.getDefaultInstance()) {
                        getL3Builder().mergeFrom(value);
                    } else {
                        l3_ = value;
                    }
                } else {
                    l3Builder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000004;
                onChanged();
                return this;
            }

            /**
             * <code>.context.ConnectionSettings_L3 l3 = 3;</code>
             */
            public Builder clearL3() {
                bitField0_ = (bitField0_ & ~0x00000004);
                l3_ = null;
                if (l3Builder_ != null) {
                    l3Builder_.dispose();
                    l3Builder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.ConnectionSettings_L3 l3 = 3;</code>
             */
            public context.ContextOuterClass.ConnectionSettings_L3.Builder getL3Builder() {
                bitField0_ |= 0x00000004;
                onChanged();
                return getL3FieldBuilder().getBuilder();
            }

            /**
             * <code>.context.ConnectionSettings_L3 l3 = 3;</code>
             */
            public context.ContextOuterClass.ConnectionSettings_L3OrBuilder getL3OrBuilder() {
                if (l3Builder_ != null) {
                    return l3Builder_.getMessageOrBuilder();
                } else {
                    return l3_ == null ? context.ContextOuterClass.ConnectionSettings_L3.getDefaultInstance() : l3_;
                }
            }

            /**
             * <code>.context.ConnectionSettings_L3 l3 = 3;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ConnectionSettings_L3, context.ContextOuterClass.ConnectionSettings_L3.Builder, context.ContextOuterClass.ConnectionSettings_L3OrBuilder> getL3FieldBuilder() {
                if (l3Builder_ == null) {
                    l3Builder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ConnectionSettings_L3, context.ContextOuterClass.ConnectionSettings_L3.Builder, context.ContextOuterClass.ConnectionSettings_L3OrBuilder>(getL3(), getParentForChildren(), isClean());
                    l3_ = null;
                }
                return l3Builder_;
            }

            private context.ContextOuterClass.ConnectionSettings_L4 l4_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ConnectionSettings_L4, context.ContextOuterClass.ConnectionSettings_L4.Builder, context.ContextOuterClass.ConnectionSettings_L4OrBuilder> l4Builder_;

            /**
             * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
             * @return Whether the l4 field is set.
             */
            public boolean hasL4() {
                return ((bitField0_ & 0x00000008) != 0);
            }

            /**
             * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
             * @return The l4.
             */
            public context.ContextOuterClass.ConnectionSettings_L4 getL4() {
                if (l4Builder_ == null) {
                    return l4_ == null ? context.ContextOuterClass.ConnectionSettings_L4.getDefaultInstance() : l4_;
                } else {
                    return l4Builder_.getMessage();
                }
            }

            /**
             * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
             */
            public Builder setL4(context.ContextOuterClass.ConnectionSettings_L4 value) {
                if (l4Builder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    l4_ = value;
                } else {
                    l4Builder_.setMessage(value);
                }
                bitField0_ |= 0x00000008;
                onChanged();
                return this;
            }

            /**
             * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
             */
            public Builder setL4(context.ContextOuterClass.ConnectionSettings_L4.Builder builderForValue) {
                if (l4Builder_ == null) {
                    l4_ = builderForValue.build();
                } else {
                    l4Builder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000008;
                onChanged();
                return this;
            }

            /**
             * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
             */
            public Builder mergeL4(context.ContextOuterClass.ConnectionSettings_L4 value) {
                if (l4Builder_ == null) {
                    if (((bitField0_ & 0x00000008) != 0) && l4_ != null && l4_ != context.ContextOuterClass.ConnectionSettings_L4.getDefaultInstance()) {
                        getL4Builder().mergeFrom(value);
                    } else {
                        l4_ = value;
                    }
                } else {
                    l4Builder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000008;
                onChanged();
                return this;
            }

            /**
             * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
             */
            public Builder clearL4() {
                bitField0_ = (bitField0_ & ~0x00000008);
                l4_ = null;
                if (l4Builder_ != null) {
                    l4Builder_.dispose();
                    l4Builder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
             */
            public context.ContextOuterClass.ConnectionSettings_L4.Builder getL4Builder() {
                bitField0_ |= 0x00000008;
                onChanged();
                return getL4FieldBuilder().getBuilder();
            }

            /**
             * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
             */
            public context.ContextOuterClass.ConnectionSettings_L4OrBuilder getL4OrBuilder() {
                if (l4Builder_ != null) {
                    return l4Builder_.getMessageOrBuilder();
                } else {
                    return l4_ == null ? context.ContextOuterClass.ConnectionSettings_L4.getDefaultInstance() : l4_;
                }
            }

            /**
             * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ConnectionSettings_L4, context.ContextOuterClass.ConnectionSettings_L4.Builder, context.ContextOuterClass.ConnectionSettings_L4OrBuilder> getL4FieldBuilder() {
                if (l4Builder_ == null) {
                    l4Builder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ConnectionSettings_L4, context.ContextOuterClass.ConnectionSettings_L4.Builder, context.ContextOuterClass.ConnectionSettings_L4OrBuilder>(getL4(), getParentForChildren(), isClean());
                    l4_ = null;
                }
                return l4Builder_;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.ConnectionSettings)
        }

        // @@protoc_insertion_point(class_scope:context.ConnectionSettings)
        private static final context.ContextOuterClass.ConnectionSettings DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.ConnectionSettings();
        }

        public static context.ContextOuterClass.ConnectionSettings getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<ConnectionSettings> PARSER = new com.google.protobuf.AbstractParser<ConnectionSettings>() {

            @java.lang.Override
            public ConnectionSettings parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<ConnectionSettings> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<ConnectionSettings> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.ConnectionSettings getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface ConnectionOrBuilder extends // @@protoc_insertion_point(interface_extends:context.Connection)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>.context.ConnectionId connection_id = 1;</code>
         * @return Whether the connectionId field is set.
         */
        boolean hasConnectionId();

        /**
         * <code>.context.ConnectionId connection_id = 1;</code>
         * @return The connectionId.
         */
        context.ContextOuterClass.ConnectionId getConnectionId();

        /**
         * <code>.context.ConnectionId connection_id = 1;</code>
         */
        context.ContextOuterClass.ConnectionIdOrBuilder getConnectionIdOrBuilder();

        /**
         * <code>.context.ServiceId service_id = 2;</code>
         * @return Whether the serviceId field is set.
         */
        boolean hasServiceId();

        /**
         * <code>.context.ServiceId service_id = 2;</code>
         * @return The serviceId.
         */
        context.ContextOuterClass.ServiceId getServiceId();

        /**
         * <code>.context.ServiceId service_id = 2;</code>
         */
        context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder();

        /**
         * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
         */
        java.util.List<context.ContextOuterClass.EndPointId> getPathHopsEndpointIdsList();

        /**
         * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
         */
        context.ContextOuterClass.EndPointId getPathHopsEndpointIds(int index);

        /**
         * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
         */
        int getPathHopsEndpointIdsCount();

        /**
         * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
         */
        java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> getPathHopsEndpointIdsOrBuilderList();

        /**
         * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
         */
        context.ContextOuterClass.EndPointIdOrBuilder getPathHopsEndpointIdsOrBuilder(int index);

        /**
         * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
         */
        java.util.List<context.ContextOuterClass.ServiceId> getSubServiceIdsList();

        /**
         * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
         */
        context.ContextOuterClass.ServiceId getSubServiceIds(int index);

        /**
         * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
         */
        int getSubServiceIdsCount();

        /**
         * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
         */
        java.util.List<? extends context.ContextOuterClass.ServiceIdOrBuilder> getSubServiceIdsOrBuilderList();

        /**
         * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
         */
        context.ContextOuterClass.ServiceIdOrBuilder getSubServiceIdsOrBuilder(int index);

        /**
         * <code>.context.ConnectionSettings settings = 5;</code>
         * @return Whether the settings field is set.
         */
        boolean hasSettings();

        /**
         * <code>.context.ConnectionSettings settings = 5;</code>
         * @return The settings.
         */
        context.ContextOuterClass.ConnectionSettings getSettings();

        /**
         * <code>.context.ConnectionSettings settings = 5;</code>
         */
        context.ContextOuterClass.ConnectionSettingsOrBuilder getSettingsOrBuilder();
    }

    /**
     * Protobuf type {@code context.Connection}
     */
    public static final class Connection extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.Connection)
    ConnectionOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use Connection.newBuilder() to construct.
        private Connection(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private Connection() {
            pathHopsEndpointIds_ = java.util.Collections.emptyList();
            subServiceIds_ = java.util.Collections.emptyList();
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new Connection();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_Connection_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_Connection_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Connection.class, context.ContextOuterClass.Connection.Builder.class);
        }

        public static final int CONNECTION_ID_FIELD_NUMBER = 1;

        private context.ContextOuterClass.ConnectionId connectionId_;

        /**
         * <code>.context.ConnectionId connection_id = 1;</code>
         * @return Whether the connectionId field is set.
         */
        @java.lang.Override
        public boolean hasConnectionId() {
            return connectionId_ != null;
        }

        /**
         * <code>.context.ConnectionId connection_id = 1;</code>
         * @return The connectionId.
         */
        @java.lang.Override
        public context.ContextOuterClass.ConnectionId getConnectionId() {
            return connectionId_ == null ? context.ContextOuterClass.ConnectionId.getDefaultInstance() : connectionId_;
        }

        /**
         * <code>.context.ConnectionId connection_id = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.ConnectionIdOrBuilder getConnectionIdOrBuilder() {
            return connectionId_ == null ? context.ContextOuterClass.ConnectionId.getDefaultInstance() : connectionId_;
        }

        public static final int SERVICE_ID_FIELD_NUMBER = 2;

        private context.ContextOuterClass.ServiceId serviceId_;

        /**
         * <code>.context.ServiceId service_id = 2;</code>
         * @return Whether the serviceId field is set.
         */
        @java.lang.Override
        public boolean hasServiceId() {
            return serviceId_ != null;
        }

        /**
         * <code>.context.ServiceId service_id = 2;</code>
         * @return The serviceId.
         */
        @java.lang.Override
        public context.ContextOuterClass.ServiceId getServiceId() {
            return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
        }

        /**
         * <code>.context.ServiceId service_id = 2;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder() {
            return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
        }

        public static final int PATH_HOPS_ENDPOINT_IDS_FIELD_NUMBER = 3;

        @SuppressWarnings("serial")
        private java.util.List<context.ContextOuterClass.EndPointId> pathHopsEndpointIds_;

        /**
         * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
         */
        @java.lang.Override
        public java.util.List<context.ContextOuterClass.EndPointId> getPathHopsEndpointIdsList() {
            return pathHopsEndpointIds_;
        }

        /**
         * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
         */
        @java.lang.Override
        public java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> getPathHopsEndpointIdsOrBuilderList() {
            return pathHopsEndpointIds_;
        }

        /**
         * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
         */
        @java.lang.Override
        public int getPathHopsEndpointIdsCount() {
            return pathHopsEndpointIds_.size();
        }

        /**
         * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.EndPointId getPathHopsEndpointIds(int index) {
            return pathHopsEndpointIds_.get(index);
        }

        /**
         * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.EndPointIdOrBuilder getPathHopsEndpointIdsOrBuilder(int index) {
            return pathHopsEndpointIds_.get(index);
        }

        public static final int SUB_SERVICE_IDS_FIELD_NUMBER = 4;

        @SuppressWarnings("serial")
        private java.util.List<context.ContextOuterClass.ServiceId> subServiceIds_;

        /**
         * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
         */
        @java.lang.Override
        public java.util.List<context.ContextOuterClass.ServiceId> getSubServiceIdsList() {
            return subServiceIds_;
        }

        /**
         * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
         */
        @java.lang.Override
        public java.util.List<? extends context.ContextOuterClass.ServiceIdOrBuilder> getSubServiceIdsOrBuilderList() {
            return subServiceIds_;
        }

        /**
         * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
         */
        @java.lang.Override
        public int getSubServiceIdsCount() {
            return subServiceIds_.size();
        }

        /**
         * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.ServiceId getSubServiceIds(int index) {
            return subServiceIds_.get(index);
        }

        /**
         * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.ServiceIdOrBuilder getSubServiceIdsOrBuilder(int index) {
            return subServiceIds_.get(index);
        }

        public static final int SETTINGS_FIELD_NUMBER = 5;

        private context.ContextOuterClass.ConnectionSettings settings_;

        /**
         * <code>.context.ConnectionSettings settings = 5;</code>
         * @return Whether the settings field is set.
         */
        @java.lang.Override
        public boolean hasSettings() {
            return settings_ != null;
        }

        /**
         * <code>.context.ConnectionSettings settings = 5;</code>
         * @return The settings.
         */
        @java.lang.Override
        public context.ContextOuterClass.ConnectionSettings getSettings() {
            return settings_ == null ? context.ContextOuterClass.ConnectionSettings.getDefaultInstance() : settings_;
        }

        /**
         * <code>.context.ConnectionSettings settings = 5;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.ConnectionSettingsOrBuilder getSettingsOrBuilder() {
            return settings_ == null ? context.ContextOuterClass.ConnectionSettings.getDefaultInstance() : settings_;
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            if (connectionId_ != null) {
                output.writeMessage(1, getConnectionId());
            }
            if (serviceId_ != null) {
                output.writeMessage(2, getServiceId());
            }
            for (int i = 0; i < pathHopsEndpointIds_.size(); i++) {
                output.writeMessage(3, pathHopsEndpointIds_.get(i));
            }
            for (int i = 0; i < subServiceIds_.size(); i++) {
                output.writeMessage(4, subServiceIds_.get(i));
            }
            if (settings_ != null) {
                output.writeMessage(5, getSettings());
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            if (connectionId_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getConnectionId());
            }
            if (serviceId_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getServiceId());
            }
            for (int i = 0; i < pathHopsEndpointIds_.size(); i++) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, pathHopsEndpointIds_.get(i));
            }
            for (int i = 0; i < subServiceIds_.size(); i++) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, subServiceIds_.get(i));
            }
            if (settings_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(5, getSettings());
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.Connection)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.Connection other = (context.ContextOuterClass.Connection) obj;
            if (hasConnectionId() != other.hasConnectionId())
                return false;
            if (hasConnectionId()) {
                if (!getConnectionId().equals(other.getConnectionId()))
                    return false;
            }
            if (hasServiceId() != other.hasServiceId())
                return false;
            if (hasServiceId()) {
                if (!getServiceId().equals(other.getServiceId()))
                    return false;
            }
            if (!getPathHopsEndpointIdsList().equals(other.getPathHopsEndpointIdsList()))
                return false;
            if (!getSubServiceIdsList().equals(other.getSubServiceIdsList()))
                return false;
            if (hasSettings() != other.hasSettings())
                return false;
            if (hasSettings()) {
                if (!getSettings().equals(other.getSettings()))
                    return false;
            }
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            if (hasConnectionId()) {
                hash = (37 * hash) + CONNECTION_ID_FIELD_NUMBER;
                hash = (53 * hash) + getConnectionId().hashCode();
            }
            if (hasServiceId()) {
                hash = (37 * hash) + SERVICE_ID_FIELD_NUMBER;
                hash = (53 * hash) + getServiceId().hashCode();
            }
            if (getPathHopsEndpointIdsCount() > 0) {
                hash = (37 * hash) + PATH_HOPS_ENDPOINT_IDS_FIELD_NUMBER;
                hash = (53 * hash) + getPathHopsEndpointIdsList().hashCode();
            }
            if (getSubServiceIdsCount() > 0) {
                hash = (37 * hash) + SUB_SERVICE_IDS_FIELD_NUMBER;
                hash = (53 * hash) + getSubServiceIdsList().hashCode();
            }
            if (hasSettings()) {
                hash = (37 * hash) + SETTINGS_FIELD_NUMBER;
                hash = (53 * hash) + getSettings().hashCode();
            }
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.Connection parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.Connection parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.Connection parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.Connection parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.Connection parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.Connection parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.Connection parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.Connection parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.Connection parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.Connection parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.Connection parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.Connection parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.Connection prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code context.Connection}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.Connection)
        context.ContextOuterClass.ConnectionOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_Connection_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_Connection_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Connection.class, context.ContextOuterClass.Connection.Builder.class);
            }

            // Construct using context.ContextOuterClass.Connection.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                connectionId_ = null;
                if (connectionIdBuilder_ != null) {
                    connectionIdBuilder_.dispose();
                    connectionIdBuilder_ = null;
                }
                serviceId_ = null;
                if (serviceIdBuilder_ != null) {
                    serviceIdBuilder_.dispose();
                    serviceIdBuilder_ = null;
                }
                if (pathHopsEndpointIdsBuilder_ == null) {
                    pathHopsEndpointIds_ = java.util.Collections.emptyList();
                } else {
                    pathHopsEndpointIds_ = null;
                    pathHopsEndpointIdsBuilder_.clear();
                }
                bitField0_ = (bitField0_ & ~0x00000004);
                if (subServiceIdsBuilder_ == null) {
                    subServiceIds_ = java.util.Collections.emptyList();
                } else {
                    subServiceIds_ = null;
                    subServiceIdsBuilder_.clear();
                }
                bitField0_ = (bitField0_ & ~0x00000008);
                settings_ = null;
                if (settingsBuilder_ != null) {
                    settingsBuilder_.dispose();
                    settingsBuilder_ = null;
                }
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_Connection_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.Connection getDefaultInstanceForType() {
                return context.ContextOuterClass.Connection.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.Connection build() {
                context.ContextOuterClass.Connection result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.Connection buildPartial() {
                context.ContextOuterClass.Connection result = new context.ContextOuterClass.Connection(this);
                buildPartialRepeatedFields(result);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartialRepeatedFields(context.ContextOuterClass.Connection result) {
                if (pathHopsEndpointIdsBuilder_ == null) {
                    if (((bitField0_ & 0x00000004) != 0)) {
                        pathHopsEndpointIds_ = java.util.Collections.unmodifiableList(pathHopsEndpointIds_);
                        bitField0_ = (bitField0_ & ~0x00000004);
                    }
                    result.pathHopsEndpointIds_ = pathHopsEndpointIds_;
                } else {
                    result.pathHopsEndpointIds_ = pathHopsEndpointIdsBuilder_.build();
                }
                if (subServiceIdsBuilder_ == null) {
                    if (((bitField0_ & 0x00000008) != 0)) {
                        subServiceIds_ = java.util.Collections.unmodifiableList(subServiceIds_);
                        bitField0_ = (bitField0_ & ~0x00000008);
                    }
                    result.subServiceIds_ = subServiceIds_;
                } else {
                    result.subServiceIds_ = subServiceIdsBuilder_.build();
                }
            }

            private void buildPartial0(context.ContextOuterClass.Connection result) {
                int from_bitField0_ = bitField0_;
                if (((from_bitField0_ & 0x00000001) != 0)) {
                    result.connectionId_ = connectionIdBuilder_ == null ? connectionId_ : connectionIdBuilder_.build();
                }
                if (((from_bitField0_ & 0x00000002) != 0)) {
                    result.serviceId_ = serviceIdBuilder_ == null ? serviceId_ : serviceIdBuilder_.build();
                }
                if (((from_bitField0_ & 0x00000010) != 0)) {
                    result.settings_ = settingsBuilder_ == null ? settings_ : settingsBuilder_.build();
                }
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.Connection) {
                    return mergeFrom((context.ContextOuterClass.Connection) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.Connection other) {
                if (other == context.ContextOuterClass.Connection.getDefaultInstance())
                    return this;
                if (other.hasConnectionId()) {
                    mergeConnectionId(other.getConnectionId());
                }
                if (other.hasServiceId()) {
                    mergeServiceId(other.getServiceId());
                }
                if (pathHopsEndpointIdsBuilder_ == null) {
                    if (!other.pathHopsEndpointIds_.isEmpty()) {
                        if (pathHopsEndpointIds_.isEmpty()) {
                            pathHopsEndpointIds_ = other.pathHopsEndpointIds_;
                            bitField0_ = (bitField0_ & ~0x00000004);
                        } else {
                            ensurePathHopsEndpointIdsIsMutable();
                            pathHopsEndpointIds_.addAll(other.pathHopsEndpointIds_);
                        }
                        onChanged();
                    }
                } else {
                    if (!other.pathHopsEndpointIds_.isEmpty()) {
                        if (pathHopsEndpointIdsBuilder_.isEmpty()) {
                            pathHopsEndpointIdsBuilder_.dispose();
                            pathHopsEndpointIdsBuilder_ = null;
                            pathHopsEndpointIds_ = other.pathHopsEndpointIds_;
                            bitField0_ = (bitField0_ & ~0x00000004);
                            pathHopsEndpointIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getPathHopsEndpointIdsFieldBuilder() : null;
                        } else {
                            pathHopsEndpointIdsBuilder_.addAllMessages(other.pathHopsEndpointIds_);
                        }
                    }
                }
                if (subServiceIdsBuilder_ == null) {
                    if (!other.subServiceIds_.isEmpty()) {
                        if (subServiceIds_.isEmpty()) {
                            subServiceIds_ = other.subServiceIds_;
                            bitField0_ = (bitField0_ & ~0x00000008);
                        } else {
                            ensureSubServiceIdsIsMutable();
                            subServiceIds_.addAll(other.subServiceIds_);
                        }
                        onChanged();
                    }
                } else {
                    if (!other.subServiceIds_.isEmpty()) {
                        if (subServiceIdsBuilder_.isEmpty()) {
                            subServiceIdsBuilder_.dispose();
                            subServiceIdsBuilder_ = null;
                            subServiceIds_ = other.subServiceIds_;
                            bitField0_ = (bitField0_ & ~0x00000008);
                            subServiceIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getSubServiceIdsFieldBuilder() : null;
                        } else {
                            subServiceIdsBuilder_.addAllMessages(other.subServiceIds_);
                        }
                    }
                }
                if (other.hasSettings()) {
                    mergeSettings(other.getSettings());
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 10:
                                {
                                    input.readMessage(getConnectionIdFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000001;
                                    break;
                                }
                            // case 10
                            case 18:
                                {
                                    input.readMessage(getServiceIdFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000002;
                                    break;
                                }
                            // case 18
                            case 26:
                                {
                                    context.ContextOuterClass.EndPointId m = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry);
                                    if (pathHopsEndpointIdsBuilder_ == null) {
                                        ensurePathHopsEndpointIdsIsMutable();
                                        pathHopsEndpointIds_.add(m);
                                    } else {
                                        pathHopsEndpointIdsBuilder_.addMessage(m);
                                    }
                                    break;
                                }
                            // case 26
                            case 34:
                                {
                                    context.ContextOuterClass.ServiceId m = input.readMessage(context.ContextOuterClass.ServiceId.parser(), extensionRegistry);
                                    if (subServiceIdsBuilder_ == null) {
                                        ensureSubServiceIdsIsMutable();
                                        subServiceIds_.add(m);
                                    } else {
                                        subServiceIdsBuilder_.addMessage(m);
                                    }
                                    break;
                                }
                            // case 34
                            case 42:
                                {
                                    input.readMessage(getSettingsFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000010;
                                    break;
                                }
                            // case 42
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private context.ContextOuterClass.ConnectionId connectionId_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ConnectionId, context.ContextOuterClass.ConnectionId.Builder, context.ContextOuterClass.ConnectionIdOrBuilder> connectionIdBuilder_;

            /**
             * <code>.context.ConnectionId connection_id = 1;</code>
             * @return Whether the connectionId field is set.
             */
            public boolean hasConnectionId() {
                return ((bitField0_ & 0x00000001) != 0);
            }

            /**
             * <code>.context.ConnectionId connection_id = 1;</code>
             * @return The connectionId.
             */
            public context.ContextOuterClass.ConnectionId getConnectionId() {
                if (connectionIdBuilder_ == null) {
                    return connectionId_ == null ? context.ContextOuterClass.ConnectionId.getDefaultInstance() : connectionId_;
                } else {
                    return connectionIdBuilder_.getMessage();
                }
            }

            /**
             * <code>.context.ConnectionId connection_id = 1;</code>
             */
            public Builder setConnectionId(context.ContextOuterClass.ConnectionId value) {
                if (connectionIdBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    connectionId_ = value;
                } else {
                    connectionIdBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.ConnectionId connection_id = 1;</code>
             */
            public Builder setConnectionId(context.ContextOuterClass.ConnectionId.Builder builderForValue) {
                if (connectionIdBuilder_ == null) {
                    connectionId_ = builderForValue.build();
                } else {
                    connectionIdBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.ConnectionId connection_id = 1;</code>
             */
            public Builder mergeConnectionId(context.ContextOuterClass.ConnectionId value) {
                if (connectionIdBuilder_ == null) {
                    if (((bitField0_ & 0x00000001) != 0) && connectionId_ != null && connectionId_ != context.ContextOuterClass.ConnectionId.getDefaultInstance()) {
                        getConnectionIdBuilder().mergeFrom(value);
                    } else {
                        connectionId_ = value;
                    }
                } else {
                    connectionIdBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.ConnectionId connection_id = 1;</code>
             */
            public Builder clearConnectionId() {
                bitField0_ = (bitField0_ & ~0x00000001);
                connectionId_ = null;
                if (connectionIdBuilder_ != null) {
                    connectionIdBuilder_.dispose();
                    connectionIdBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.ConnectionId connection_id = 1;</code>
             */
            public context.ContextOuterClass.ConnectionId.Builder getConnectionIdBuilder() {
                bitField0_ |= 0x00000001;
                onChanged();
                return getConnectionIdFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.ConnectionId connection_id = 1;</code>
             */
            public context.ContextOuterClass.ConnectionIdOrBuilder getConnectionIdOrBuilder() {
                if (connectionIdBuilder_ != null) {
                    return connectionIdBuilder_.getMessageOrBuilder();
                } else {
                    return connectionId_ == null ? context.ContextOuterClass.ConnectionId.getDefaultInstance() : connectionId_;
                }
            }

            /**
             * <code>.context.ConnectionId connection_id = 1;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ConnectionId, context.ContextOuterClass.ConnectionId.Builder, context.ContextOuterClass.ConnectionIdOrBuilder> getConnectionIdFieldBuilder() {
                if (connectionIdBuilder_ == null) {
                    connectionIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ConnectionId, context.ContextOuterClass.ConnectionId.Builder, context.ContextOuterClass.ConnectionIdOrBuilder>(getConnectionId(), getParentForChildren(), isClean());
                    connectionId_ = null;
                }
                return connectionIdBuilder_;
            }

            private context.ContextOuterClass.ServiceId serviceId_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> serviceIdBuilder_;

            /**
             * <code>.context.ServiceId service_id = 2;</code>
             * @return Whether the serviceId field is set.
             */
            public boolean hasServiceId() {
                return ((bitField0_ & 0x00000002) != 0);
            }

            /**
             * <code>.context.ServiceId service_id = 2;</code>
             * @return The serviceId.
             */
            public context.ContextOuterClass.ServiceId getServiceId() {
                if (serviceIdBuilder_ == null) {
                    return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
                } else {
                    return serviceIdBuilder_.getMessage();
                }
            }

            /**
             * <code>.context.ServiceId service_id = 2;</code>
             */
            public Builder setServiceId(context.ContextOuterClass.ServiceId value) {
                if (serviceIdBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    serviceId_ = value;
                } else {
                    serviceIdBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>.context.ServiceId service_id = 2;</code>
             */
            public Builder setServiceId(context.ContextOuterClass.ServiceId.Builder builderForValue) {
                if (serviceIdBuilder_ == null) {
                    serviceId_ = builderForValue.build();
                } else {
                    serviceIdBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>.context.ServiceId service_id = 2;</code>
             */
            public Builder mergeServiceId(context.ContextOuterClass.ServiceId value) {
                if (serviceIdBuilder_ == null) {
                    if (((bitField0_ & 0x00000002) != 0) && serviceId_ != null && serviceId_ != context.ContextOuterClass.ServiceId.getDefaultInstance()) {
                        getServiceIdBuilder().mergeFrom(value);
                    } else {
                        serviceId_ = value;
                    }
                } else {
                    serviceIdBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>.context.ServiceId service_id = 2;</code>
             */
            public Builder clearServiceId() {
                bitField0_ = (bitField0_ & ~0x00000002);
                serviceId_ = null;
                if (serviceIdBuilder_ != null) {
                    serviceIdBuilder_.dispose();
                    serviceIdBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.ServiceId service_id = 2;</code>
             */
            public context.ContextOuterClass.ServiceId.Builder getServiceIdBuilder() {
                bitField0_ |= 0x00000002;
                onChanged();
                return getServiceIdFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.ServiceId service_id = 2;</code>
             */
            public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder() {
                if (serviceIdBuilder_ != null) {
                    return serviceIdBuilder_.getMessageOrBuilder();
                } else {
                    return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
                }
            }

            /**
             * <code>.context.ServiceId service_id = 2;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> getServiceIdFieldBuilder() {
                if (serviceIdBuilder_ == null) {
                    serviceIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder>(getServiceId(), getParentForChildren(), isClean());
                    serviceId_ = null;
                }
                return serviceIdBuilder_;
            }

            private java.util.List<context.ContextOuterClass.EndPointId> pathHopsEndpointIds_ = java.util.Collections.emptyList();

            private void ensurePathHopsEndpointIdsIsMutable() {
                if (!((bitField0_ & 0x00000004) != 0)) {
                    pathHopsEndpointIds_ = new java.util.ArrayList<context.ContextOuterClass.EndPointId>(pathHopsEndpointIds_);
                    bitField0_ |= 0x00000004;
                }
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> pathHopsEndpointIdsBuilder_;

            /**
             * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
             */
            public java.util.List<context.ContextOuterClass.EndPointId> getPathHopsEndpointIdsList() {
                if (pathHopsEndpointIdsBuilder_ == null) {
                    return java.util.Collections.unmodifiableList(pathHopsEndpointIds_);
                } else {
                    return pathHopsEndpointIdsBuilder_.getMessageList();
                }
            }

            /**
             * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
             */
            public int getPathHopsEndpointIdsCount() {
                if (pathHopsEndpointIdsBuilder_ == null) {
                    return pathHopsEndpointIds_.size();
                } else {
                    return pathHopsEndpointIdsBuilder_.getCount();
                }
            }

            /**
             * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
             */
            public context.ContextOuterClass.EndPointId getPathHopsEndpointIds(int index) {
                if (pathHopsEndpointIdsBuilder_ == null) {
                    return pathHopsEndpointIds_.get(index);
                } else {
                    return pathHopsEndpointIdsBuilder_.getMessage(index);
                }
            }

            /**
             * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
             */
            public Builder setPathHopsEndpointIds(int index, context.ContextOuterClass.EndPointId value) {
                if (pathHopsEndpointIdsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensurePathHopsEndpointIdsIsMutable();
                    pathHopsEndpointIds_.set(index, value);
                    onChanged();
                } else {
                    pathHopsEndpointIdsBuilder_.setMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
             */
            public Builder setPathHopsEndpointIds(int index, context.ContextOuterClass.EndPointId.Builder builderForValue) {
                if (pathHopsEndpointIdsBuilder_ == null) {
                    ensurePathHopsEndpointIdsIsMutable();
                    pathHopsEndpointIds_.set(index, builderForValue.build());
                    onChanged();
                } else {
                    pathHopsEndpointIdsBuilder_.setMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
             */
            public Builder addPathHopsEndpointIds(context.ContextOuterClass.EndPointId value) {
                if (pathHopsEndpointIdsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensurePathHopsEndpointIdsIsMutable();
                    pathHopsEndpointIds_.add(value);
                    onChanged();
                } else {
                    pathHopsEndpointIdsBuilder_.addMessage(value);
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
             */
            public Builder addPathHopsEndpointIds(int index, context.ContextOuterClass.EndPointId value) {
                if (pathHopsEndpointIdsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensurePathHopsEndpointIdsIsMutable();
                    pathHopsEndpointIds_.add(index, value);
                    onChanged();
                } else {
                    pathHopsEndpointIdsBuilder_.addMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
             */
            public Builder addPathHopsEndpointIds(context.ContextOuterClass.EndPointId.Builder builderForValue) {
                if (pathHopsEndpointIdsBuilder_ == null) {
                    ensurePathHopsEndpointIdsIsMutable();
                    pathHopsEndpointIds_.add(builderForValue.build());
                    onChanged();
                } else {
                    pathHopsEndpointIdsBuilder_.addMessage(builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
             */
            public Builder addPathHopsEndpointIds(int index, context.ContextOuterClass.EndPointId.Builder builderForValue) {
                if (pathHopsEndpointIdsBuilder_ == null) {
                    ensurePathHopsEndpointIdsIsMutable();
                    pathHopsEndpointIds_.add(index, builderForValue.build());
                    onChanged();
                } else {
                    pathHopsEndpointIdsBuilder_.addMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
             */
            public Builder addAllPathHopsEndpointIds(java.lang.Iterable<? extends context.ContextOuterClass.EndPointId> values) {
                if (pathHopsEndpointIdsBuilder_ == null) {
                    ensurePathHopsEndpointIdsIsMutable();
                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, pathHopsEndpointIds_);
                    onChanged();
                } else {
                    pathHopsEndpointIdsBuilder_.addAllMessages(values);
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
             */
            public Builder clearPathHopsEndpointIds() {
                if (pathHopsEndpointIdsBuilder_ == null) {
                    pathHopsEndpointIds_ = java.util.Collections.emptyList();
                    bitField0_ = (bitField0_ & ~0x00000004);
                    onChanged();
                } else {
                    pathHopsEndpointIdsBuilder_.clear();
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
             */
            public Builder removePathHopsEndpointIds(int index) {
                if (pathHopsEndpointIdsBuilder_ == null) {
                    ensurePathHopsEndpointIdsIsMutable();
                    pathHopsEndpointIds_.remove(index);
                    onChanged();
                } else {
                    pathHopsEndpointIdsBuilder_.remove(index);
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
             */
            public context.ContextOuterClass.EndPointId.Builder getPathHopsEndpointIdsBuilder(int index) {
                return getPathHopsEndpointIdsFieldBuilder().getBuilder(index);
            }

            /**
             * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
             */
            public context.ContextOuterClass.EndPointIdOrBuilder getPathHopsEndpointIdsOrBuilder(int index) {
                if (pathHopsEndpointIdsBuilder_ == null) {
                    return pathHopsEndpointIds_.get(index);
                } else {
                    return pathHopsEndpointIdsBuilder_.getMessageOrBuilder(index);
                }
            }

            /**
             * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
             */
            public java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> getPathHopsEndpointIdsOrBuilderList() {
                if (pathHopsEndpointIdsBuilder_ != null) {
                    return pathHopsEndpointIdsBuilder_.getMessageOrBuilderList();
                } else {
                    return java.util.Collections.unmodifiableList(pathHopsEndpointIds_);
                }
            }

            /**
             * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
             */
            public context.ContextOuterClass.EndPointId.Builder addPathHopsEndpointIdsBuilder() {
                return getPathHopsEndpointIdsFieldBuilder().addBuilder(context.ContextOuterClass.EndPointId.getDefaultInstance());
            }

            /**
             * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
             */
            public context.ContextOuterClass.EndPointId.Builder addPathHopsEndpointIdsBuilder(int index) {
                return getPathHopsEndpointIdsFieldBuilder().addBuilder(index, context.ContextOuterClass.EndPointId.getDefaultInstance());
            }

            /**
             * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
             */
            public java.util.List<context.ContextOuterClass.EndPointId.Builder> getPathHopsEndpointIdsBuilderList() {
                return getPathHopsEndpointIdsFieldBuilder().getBuilderList();
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> getPathHopsEndpointIdsFieldBuilder() {
                if (pathHopsEndpointIdsBuilder_ == null) {
                    pathHopsEndpointIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder>(pathHopsEndpointIds_, ((bitField0_ & 0x00000004) != 0), getParentForChildren(), isClean());
                    pathHopsEndpointIds_ = null;
                }
                return pathHopsEndpointIdsBuilder_;
            }

            private java.util.List<context.ContextOuterClass.ServiceId> subServiceIds_ = java.util.Collections.emptyList();

            private void ensureSubServiceIdsIsMutable() {
                if (!((bitField0_ & 0x00000008) != 0)) {
                    subServiceIds_ = new java.util.ArrayList<context.ContextOuterClass.ServiceId>(subServiceIds_);
                    bitField0_ |= 0x00000008;
                }
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> subServiceIdsBuilder_;

            /**
             * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
             */
            public java.util.List<context.ContextOuterClass.ServiceId> getSubServiceIdsList() {
                if (subServiceIdsBuilder_ == null) {
                    return java.util.Collections.unmodifiableList(subServiceIds_);
                } else {
                    return subServiceIdsBuilder_.getMessageList();
                }
            }

            /**
             * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
             */
            public int getSubServiceIdsCount() {
                if (subServiceIdsBuilder_ == null) {
                    return subServiceIds_.size();
                } else {
                    return subServiceIdsBuilder_.getCount();
                }
            }

            /**
             * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
             */
            public context.ContextOuterClass.ServiceId getSubServiceIds(int index) {
                if (subServiceIdsBuilder_ == null) {
                    return subServiceIds_.get(index);
                } else {
                    return subServiceIdsBuilder_.getMessage(index);
                }
            }

            /**
             * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
             */
            public Builder setSubServiceIds(int index, context.ContextOuterClass.ServiceId value) {
                if (subServiceIdsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureSubServiceIdsIsMutable();
                    subServiceIds_.set(index, value);
                    onChanged();
                } else {
                    subServiceIdsBuilder_.setMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
             */
            public Builder setSubServiceIds(int index, context.ContextOuterClass.ServiceId.Builder builderForValue) {
                if (subServiceIdsBuilder_ == null) {
                    ensureSubServiceIdsIsMutable();
                    subServiceIds_.set(index, builderForValue.build());
                    onChanged();
                } else {
                    subServiceIdsBuilder_.setMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
             */
            public Builder addSubServiceIds(context.ContextOuterClass.ServiceId value) {
                if (subServiceIdsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureSubServiceIdsIsMutable();
                    subServiceIds_.add(value);
                    onChanged();
                } else {
                    subServiceIdsBuilder_.addMessage(value);
                }
                return this;
            }

            /**
             * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
             */
            public Builder addSubServiceIds(int index, context.ContextOuterClass.ServiceId value) {
                if (subServiceIdsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureSubServiceIdsIsMutable();
                    subServiceIds_.add(index, value);
                    onChanged();
                } else {
                    subServiceIdsBuilder_.addMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
             */
            public Builder addSubServiceIds(context.ContextOuterClass.ServiceId.Builder builderForValue) {
                if (subServiceIdsBuilder_ == null) {
                    ensureSubServiceIdsIsMutable();
                    subServiceIds_.add(builderForValue.build());
                    onChanged();
                } else {
                    subServiceIdsBuilder_.addMessage(builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
             */
            public Builder addSubServiceIds(int index, context.ContextOuterClass.ServiceId.Builder builderForValue) {
                if (subServiceIdsBuilder_ == null) {
                    ensureSubServiceIdsIsMutable();
                    subServiceIds_.add(index, builderForValue.build());
                    onChanged();
                } else {
                    subServiceIdsBuilder_.addMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
             */
            public Builder addAllSubServiceIds(java.lang.Iterable<? extends context.ContextOuterClass.ServiceId> values) {
                if (subServiceIdsBuilder_ == null) {
                    ensureSubServiceIdsIsMutable();
                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, subServiceIds_);
                    onChanged();
                } else {
                    subServiceIdsBuilder_.addAllMessages(values);
                }
                return this;
            }

            /**
             * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
             */
            public Builder clearSubServiceIds() {
                if (subServiceIdsBuilder_ == null) {
                    subServiceIds_ = java.util.Collections.emptyList();
                    bitField0_ = (bitField0_ & ~0x00000008);
                    onChanged();
                } else {
                    subServiceIdsBuilder_.clear();
                }
                return this;
            }

            /**
             * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
             */
            public Builder removeSubServiceIds(int index) {
                if (subServiceIdsBuilder_ == null) {
                    ensureSubServiceIdsIsMutable();
                    subServiceIds_.remove(index);
                    onChanged();
                } else {
                    subServiceIdsBuilder_.remove(index);
                }
                return this;
            }

            /**
             * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
             */
            public context.ContextOuterClass.ServiceId.Builder getSubServiceIdsBuilder(int index) {
                return getSubServiceIdsFieldBuilder().getBuilder(index);
            }

            /**
             * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
             */
            public context.ContextOuterClass.ServiceIdOrBuilder getSubServiceIdsOrBuilder(int index) {
                if (subServiceIdsBuilder_ == null) {
                    return subServiceIds_.get(index);
                } else {
                    return subServiceIdsBuilder_.getMessageOrBuilder(index);
                }
            }

            /**
             * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
             */
            public java.util.List<? extends context.ContextOuterClass.ServiceIdOrBuilder> getSubServiceIdsOrBuilderList() {
                if (subServiceIdsBuilder_ != null) {
                    return subServiceIdsBuilder_.getMessageOrBuilderList();
                } else {
                    return java.util.Collections.unmodifiableList(subServiceIds_);
                }
            }

            /**
             * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
             */
            public context.ContextOuterClass.ServiceId.Builder addSubServiceIdsBuilder() {
                return getSubServiceIdsFieldBuilder().addBuilder(context.ContextOuterClass.ServiceId.getDefaultInstance());
            }

            /**
             * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
             */
            public context.ContextOuterClass.ServiceId.Builder addSubServiceIdsBuilder(int index) {
                return getSubServiceIdsFieldBuilder().addBuilder(index, context.ContextOuterClass.ServiceId.getDefaultInstance());
            }

            /**
             * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
             */
            public java.util.List<context.ContextOuterClass.ServiceId.Builder> getSubServiceIdsBuilderList() {
                return getSubServiceIdsFieldBuilder().getBuilderList();
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> getSubServiceIdsFieldBuilder() {
                if (subServiceIdsBuilder_ == null) {
                    subServiceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder>(subServiceIds_, ((bitField0_ & 0x00000008) != 0), getParentForChildren(), isClean());
                    subServiceIds_ = null;
                }
                return subServiceIdsBuilder_;
            }

            private context.ContextOuterClass.ConnectionSettings settings_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ConnectionSettings, context.ContextOuterClass.ConnectionSettings.Builder, context.ContextOuterClass.ConnectionSettingsOrBuilder> settingsBuilder_;

            /**
             * <code>.context.ConnectionSettings settings = 5;</code>
             * @return Whether the settings field is set.
             */
            public boolean hasSettings() {
                return ((bitField0_ & 0x00000010) != 0);
            }

            /**
             * <code>.context.ConnectionSettings settings = 5;</code>
             * @return The settings.
             */
            public context.ContextOuterClass.ConnectionSettings getSettings() {
                if (settingsBuilder_ == null) {
                    return settings_ == null ? context.ContextOuterClass.ConnectionSettings.getDefaultInstance() : settings_;
                } else {
                    return settingsBuilder_.getMessage();
                }
            }

            /**
             * <code>.context.ConnectionSettings settings = 5;</code>
             */
            public Builder setSettings(context.ContextOuterClass.ConnectionSettings value) {
                if (settingsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    settings_ = value;
                } else {
                    settingsBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000010;
                onChanged();
                return this;
            }

            /**
             * <code>.context.ConnectionSettings settings = 5;</code>
             */
            public Builder setSettings(context.ContextOuterClass.ConnectionSettings.Builder builderForValue) {
                if (settingsBuilder_ == null) {
                    settings_ = builderForValue.build();
                } else {
                    settingsBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000010;
                onChanged();
                return this;
            }

            /**
             * <code>.context.ConnectionSettings settings = 5;</code>
             */
            public Builder mergeSettings(context.ContextOuterClass.ConnectionSettings value) {
                if (settingsBuilder_ == null) {
                    if (((bitField0_ & 0x00000010) != 0) && settings_ != null && settings_ != context.ContextOuterClass.ConnectionSettings.getDefaultInstance()) {
                        getSettingsBuilder().mergeFrom(value);
                    } else {
                        settings_ = value;
                    }
                } else {
                    settingsBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000010;
                onChanged();
                return this;
            }

            /**
             * <code>.context.ConnectionSettings settings = 5;</code>
             */
            public Builder clearSettings() {
                bitField0_ = (bitField0_ & ~0x00000010);
                settings_ = null;
                if (settingsBuilder_ != null) {
                    settingsBuilder_.dispose();
                    settingsBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.ConnectionSettings settings = 5;</code>
             */
            public context.ContextOuterClass.ConnectionSettings.Builder getSettingsBuilder() {
                bitField0_ |= 0x00000010;
                onChanged();
                return getSettingsFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.ConnectionSettings settings = 5;</code>
             */
            public context.ContextOuterClass.ConnectionSettingsOrBuilder getSettingsOrBuilder() {
                if (settingsBuilder_ != null) {
                    return settingsBuilder_.getMessageOrBuilder();
                } else {
                    return settings_ == null ? context.ContextOuterClass.ConnectionSettings.getDefaultInstance() : settings_;
                }
            }

            /**
             * <code>.context.ConnectionSettings settings = 5;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ConnectionSettings, context.ContextOuterClass.ConnectionSettings.Builder, context.ContextOuterClass.ConnectionSettingsOrBuilder> getSettingsFieldBuilder() {
                if (settingsBuilder_ == null) {
                    settingsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ConnectionSettings, context.ContextOuterClass.ConnectionSettings.Builder, context.ContextOuterClass.ConnectionSettingsOrBuilder>(getSettings(), getParentForChildren(), isClean());
                    settings_ = null;
                }
                return settingsBuilder_;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.Connection)
        }

        // @@protoc_insertion_point(class_scope:context.Connection)
        private static final context.ContextOuterClass.Connection DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.Connection();
        }

        public static context.ContextOuterClass.Connection getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<Connection> PARSER = new com.google.protobuf.AbstractParser<Connection>() {

            @java.lang.Override
            public Connection parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<Connection> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<Connection> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.Connection getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface ConnectionIdListOrBuilder extends // @@protoc_insertion_point(interface_extends:context.ConnectionIdList)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>repeated .context.ConnectionId connection_ids = 1;</code>
         */
        java.util.List<context.ContextOuterClass.ConnectionId> getConnectionIdsList();

        /**
         * <code>repeated .context.ConnectionId connection_ids = 1;</code>
         */
        context.ContextOuterClass.ConnectionId getConnectionIds(int index);

        /**
         * <code>repeated .context.ConnectionId connection_ids = 1;</code>
         */
        int getConnectionIdsCount();

        /**
         * <code>repeated .context.ConnectionId connection_ids = 1;</code>
         */
        java.util.List<? extends context.ContextOuterClass.ConnectionIdOrBuilder> getConnectionIdsOrBuilderList();

        /**
         * <code>repeated .context.ConnectionId connection_ids = 1;</code>
         */
        context.ContextOuterClass.ConnectionIdOrBuilder getConnectionIdsOrBuilder(int index);
    }

    /**
     * Protobuf type {@code context.ConnectionIdList}
     */
    public static final class ConnectionIdList extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.ConnectionIdList)
    ConnectionIdListOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use ConnectionIdList.newBuilder() to construct.
        private ConnectionIdList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private ConnectionIdList() {
            connectionIds_ = java.util.Collections.emptyList();
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new ConnectionIdList();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_ConnectionIdList_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_ConnectionIdList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ConnectionIdList.class, context.ContextOuterClass.ConnectionIdList.Builder.class);
        }

        public static final int CONNECTION_IDS_FIELD_NUMBER = 1;

        @SuppressWarnings("serial")
        private java.util.List<context.ContextOuterClass.ConnectionId> connectionIds_;

        /**
         * <code>repeated .context.ConnectionId connection_ids = 1;</code>
         */
        @java.lang.Override
        public java.util.List<context.ContextOuterClass.ConnectionId> getConnectionIdsList() {
            return connectionIds_;
        }

        /**
         * <code>repeated .context.ConnectionId connection_ids = 1;</code>
         */
        @java.lang.Override
        public java.util.List<? extends context.ContextOuterClass.ConnectionIdOrBuilder> getConnectionIdsOrBuilderList() {
            return connectionIds_;
        }

        /**
         * <code>repeated .context.ConnectionId connection_ids = 1;</code>
         */
        @java.lang.Override
        public int getConnectionIdsCount() {
            return connectionIds_.size();
        }

        /**
         * <code>repeated .context.ConnectionId connection_ids = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.ConnectionId getConnectionIds(int index) {
            return connectionIds_.get(index);
        }

        /**
         * <code>repeated .context.ConnectionId connection_ids = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.ConnectionIdOrBuilder getConnectionIdsOrBuilder(int index) {
            return connectionIds_.get(index);
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            for (int i = 0; i < connectionIds_.size(); i++) {
                output.writeMessage(1, connectionIds_.get(i));
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            for (int i = 0; i < connectionIds_.size(); i++) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, connectionIds_.get(i));
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.ConnectionIdList)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.ConnectionIdList other = (context.ContextOuterClass.ConnectionIdList) obj;
            if (!getConnectionIdsList().equals(other.getConnectionIdsList()))
                return false;
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            if (getConnectionIdsCount() > 0) {
                hash = (37 * hash) + CONNECTION_IDS_FIELD_NUMBER;
                hash = (53 * hash) + getConnectionIdsList().hashCode();
            }
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.ConnectionIdList parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.ConnectionIdList parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.ConnectionIdList parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.ConnectionIdList parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.ConnectionIdList parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.ConnectionIdList parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.ConnectionIdList parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.ConnectionIdList parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.ConnectionIdList parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.ConnectionIdList parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.ConnectionIdList parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.ConnectionIdList parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.ConnectionIdList prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code context.ConnectionIdList}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.ConnectionIdList)
        context.ContextOuterClass.ConnectionIdListOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_ConnectionIdList_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_ConnectionIdList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ConnectionIdList.class, context.ContextOuterClass.ConnectionIdList.Builder.class);
            }

            // Construct using context.ContextOuterClass.ConnectionIdList.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                if (connectionIdsBuilder_ == null) {
                    connectionIds_ = java.util.Collections.emptyList();
                } else {
                    connectionIds_ = null;
                    connectionIdsBuilder_.clear();
                }
                bitField0_ = (bitField0_ & ~0x00000001);
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_ConnectionIdList_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.ConnectionIdList getDefaultInstanceForType() {
                return context.ContextOuterClass.ConnectionIdList.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.ConnectionIdList build() {
                context.ContextOuterClass.ConnectionIdList result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.ConnectionIdList buildPartial() {
                context.ContextOuterClass.ConnectionIdList result = new context.ContextOuterClass.ConnectionIdList(this);
                buildPartialRepeatedFields(result);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartialRepeatedFields(context.ContextOuterClass.ConnectionIdList result) {
                if (connectionIdsBuilder_ == null) {
                    if (((bitField0_ & 0x00000001) != 0)) {
                        connectionIds_ = java.util.Collections.unmodifiableList(connectionIds_);
                        bitField0_ = (bitField0_ & ~0x00000001);
                    }
                    result.connectionIds_ = connectionIds_;
                } else {
                    result.connectionIds_ = connectionIdsBuilder_.build();
                }
            }

            private void buildPartial0(context.ContextOuterClass.ConnectionIdList result) {
                int from_bitField0_ = bitField0_;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.ConnectionIdList) {
                    return mergeFrom((context.ContextOuterClass.ConnectionIdList) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.ConnectionIdList other) {
                if (other == context.ContextOuterClass.ConnectionIdList.getDefaultInstance())
                    return this;
                if (connectionIdsBuilder_ == null) {
                    if (!other.connectionIds_.isEmpty()) {
                        if (connectionIds_.isEmpty()) {
                            connectionIds_ = other.connectionIds_;
                            bitField0_ = (bitField0_ & ~0x00000001);
                        } else {
                            ensureConnectionIdsIsMutable();
                            connectionIds_.addAll(other.connectionIds_);
                        }
                        onChanged();
                    }
                } else {
                    if (!other.connectionIds_.isEmpty()) {
                        if (connectionIdsBuilder_.isEmpty()) {
                            connectionIdsBuilder_.dispose();
                            connectionIdsBuilder_ = null;
                            connectionIds_ = other.connectionIds_;
                            bitField0_ = (bitField0_ & ~0x00000001);
                            connectionIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getConnectionIdsFieldBuilder() : null;
                        } else {
                            connectionIdsBuilder_.addAllMessages(other.connectionIds_);
                        }
                    }
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 10:
                                {
                                    context.ContextOuterClass.ConnectionId m = input.readMessage(context.ContextOuterClass.ConnectionId.parser(), extensionRegistry);
                                    if (connectionIdsBuilder_ == null) {
                                        ensureConnectionIdsIsMutable();
                                        connectionIds_.add(m);
                                    } else {
                                        connectionIdsBuilder_.addMessage(m);
                                    }
                                    break;
                                }
                            // case 10
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private java.util.List<context.ContextOuterClass.ConnectionId> connectionIds_ = java.util.Collections.emptyList();

            private void ensureConnectionIdsIsMutable() {
                if (!((bitField0_ & 0x00000001) != 0)) {
                    connectionIds_ = new java.util.ArrayList<context.ContextOuterClass.ConnectionId>(connectionIds_);
                    bitField0_ |= 0x00000001;
                }
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.ConnectionId, context.ContextOuterClass.ConnectionId.Builder, context.ContextOuterClass.ConnectionIdOrBuilder> connectionIdsBuilder_;

            /**
             * <code>repeated .context.ConnectionId connection_ids = 1;</code>
             */
            public java.util.List<context.ContextOuterClass.ConnectionId> getConnectionIdsList() {
                if (connectionIdsBuilder_ == null) {
                    return java.util.Collections.unmodifiableList(connectionIds_);
                } else {
                    return connectionIdsBuilder_.getMessageList();
                }
            }

            /**
             * <code>repeated .context.ConnectionId connection_ids = 1;</code>
             */
            public int getConnectionIdsCount() {
                if (connectionIdsBuilder_ == null) {
                    return connectionIds_.size();
                } else {
                    return connectionIdsBuilder_.getCount();
                }
            }

            /**
             * <code>repeated .context.ConnectionId connection_ids = 1;</code>
             */
            public context.ContextOuterClass.ConnectionId getConnectionIds(int index) {
                if (connectionIdsBuilder_ == null) {
                    return connectionIds_.get(index);
                } else {
                    return connectionIdsBuilder_.getMessage(index);
                }
            }

            /**
             * <code>repeated .context.ConnectionId connection_ids = 1;</code>
             */
            public Builder setConnectionIds(int index, context.ContextOuterClass.ConnectionId value) {
                if (connectionIdsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureConnectionIdsIsMutable();
                    connectionIds_.set(index, value);
                    onChanged();
                } else {
                    connectionIdsBuilder_.setMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.ConnectionId connection_ids = 1;</code>
             */
            public Builder setConnectionIds(int index, context.ContextOuterClass.ConnectionId.Builder builderForValue) {
                if (connectionIdsBuilder_ == null) {
                    ensureConnectionIdsIsMutable();
                    connectionIds_.set(index, builderForValue.build());
                    onChanged();
                } else {
                    connectionIdsBuilder_.setMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.ConnectionId connection_ids = 1;</code>
             */
            public Builder addConnectionIds(context.ContextOuterClass.ConnectionId value) {
                if (connectionIdsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureConnectionIdsIsMutable();
                    connectionIds_.add(value);
                    onChanged();
                } else {
                    connectionIdsBuilder_.addMessage(value);
                }
                return this;
            }

            /**
             * <code>repeated .context.ConnectionId connection_ids = 1;</code>
             */
            public Builder addConnectionIds(int index, context.ContextOuterClass.ConnectionId value) {
                if (connectionIdsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureConnectionIdsIsMutable();
                    connectionIds_.add(index, value);
                    onChanged();
                } else {
                    connectionIdsBuilder_.addMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.ConnectionId connection_ids = 1;</code>
             */
            public Builder addConnectionIds(context.ContextOuterClass.ConnectionId.Builder builderForValue) {
                if (connectionIdsBuilder_ == null) {
                    ensureConnectionIdsIsMutable();
                    connectionIds_.add(builderForValue.build());
                    onChanged();
                } else {
                    connectionIdsBuilder_.addMessage(builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.ConnectionId connection_ids = 1;</code>
             */
            public Builder addConnectionIds(int index, context.ContextOuterClass.ConnectionId.Builder builderForValue) {
                if (connectionIdsBuilder_ == null) {
                    ensureConnectionIdsIsMutable();
                    connectionIds_.add(index, builderForValue.build());
                    onChanged();
                } else {
                    connectionIdsBuilder_.addMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.ConnectionId connection_ids = 1;</code>
             */
            public Builder addAllConnectionIds(java.lang.Iterable<? extends context.ContextOuterClass.ConnectionId> values) {
                if (connectionIdsBuilder_ == null) {
                    ensureConnectionIdsIsMutable();
                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, connectionIds_);
                    onChanged();
                } else {
                    connectionIdsBuilder_.addAllMessages(values);
                }
                return this;
            }

            /**
             * <code>repeated .context.ConnectionId connection_ids = 1;</code>
             */
            public Builder clearConnectionIds() {
                if (connectionIdsBuilder_ == null) {
                    connectionIds_ = java.util.Collections.emptyList();
                    bitField0_ = (bitField0_ & ~0x00000001);
                    onChanged();
                } else {
                    connectionIdsBuilder_.clear();
                }
                return this;
            }

            /**
             * <code>repeated .context.ConnectionId connection_ids = 1;</code>
             */
            public Builder removeConnectionIds(int index) {
                if (connectionIdsBuilder_ == null) {
                    ensureConnectionIdsIsMutable();
                    connectionIds_.remove(index);
                    onChanged();
                } else {
                    connectionIdsBuilder_.remove(index);
                }
                return this;
            }

            /**
             * <code>repeated .context.ConnectionId connection_ids = 1;</code>
             */
            public context.ContextOuterClass.ConnectionId.Builder getConnectionIdsBuilder(int index) {
                return getConnectionIdsFieldBuilder().getBuilder(index);
            }

            /**
             * <code>repeated .context.ConnectionId connection_ids = 1;</code>
             */
            public context.ContextOuterClass.ConnectionIdOrBuilder getConnectionIdsOrBuilder(int index) {
                if (connectionIdsBuilder_ == null) {
                    return connectionIds_.get(index);
                } else {
                    return connectionIdsBuilder_.getMessageOrBuilder(index);
                }
            }

            /**
             * <code>repeated .context.ConnectionId connection_ids = 1;</code>
             */
            public java.util.List<? extends context.ContextOuterClass.ConnectionIdOrBuilder> getConnectionIdsOrBuilderList() {
                if (connectionIdsBuilder_ != null) {
                    return connectionIdsBuilder_.getMessageOrBuilderList();
                } else {
                    return java.util.Collections.unmodifiableList(connectionIds_);
                }
            }

            /**
             * <code>repeated .context.ConnectionId connection_ids = 1;</code>
             */
            public context.ContextOuterClass.ConnectionId.Builder addConnectionIdsBuilder() {
                return getConnectionIdsFieldBuilder().addBuilder(context.ContextOuterClass.ConnectionId.getDefaultInstance());
            }

            /**
             * <code>repeated .context.ConnectionId connection_ids = 1;</code>
             */
            public context.ContextOuterClass.ConnectionId.Builder addConnectionIdsBuilder(int index) {
                return getConnectionIdsFieldBuilder().addBuilder(index, context.ContextOuterClass.ConnectionId.getDefaultInstance());
            }

            /**
             * <code>repeated .context.ConnectionId connection_ids = 1;</code>
             */
            public java.util.List<context.ContextOuterClass.ConnectionId.Builder> getConnectionIdsBuilderList() {
                return getConnectionIdsFieldBuilder().getBuilderList();
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.ConnectionId, context.ContextOuterClass.ConnectionId.Builder, context.ContextOuterClass.ConnectionIdOrBuilder> getConnectionIdsFieldBuilder() {
                if (connectionIdsBuilder_ == null) {
                    connectionIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.ConnectionId, context.ContextOuterClass.ConnectionId.Builder, context.ContextOuterClass.ConnectionIdOrBuilder>(connectionIds_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
                    connectionIds_ = null;
                }
                return connectionIdsBuilder_;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.ConnectionIdList)
        }

        // @@protoc_insertion_point(class_scope:context.ConnectionIdList)
        private static final context.ContextOuterClass.ConnectionIdList DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.ConnectionIdList();
        }

        public static context.ContextOuterClass.ConnectionIdList getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<ConnectionIdList> PARSER = new com.google.protobuf.AbstractParser<ConnectionIdList>() {

            @java.lang.Override
            public ConnectionIdList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<ConnectionIdList> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<ConnectionIdList> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.ConnectionIdList getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface ConnectionListOrBuilder extends // @@protoc_insertion_point(interface_extends:context.ConnectionList)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>repeated .context.Connection connections = 1;</code>
         */
        java.util.List<context.ContextOuterClass.Connection> getConnectionsList();

        /**
         * <code>repeated .context.Connection connections = 1;</code>
         */
        context.ContextOuterClass.Connection getConnections(int index);

        /**
         * <code>repeated .context.Connection connections = 1;</code>
         */
        int getConnectionsCount();

        /**
         * <code>repeated .context.Connection connections = 1;</code>
         */
        java.util.List<? extends context.ContextOuterClass.ConnectionOrBuilder> getConnectionsOrBuilderList();

        /**
         * <code>repeated .context.Connection connections = 1;</code>
         */
        context.ContextOuterClass.ConnectionOrBuilder getConnectionsOrBuilder(int index);
    }

    /**
     * Protobuf type {@code context.ConnectionList}
     */
    public static final class ConnectionList extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.ConnectionList)
    ConnectionListOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use ConnectionList.newBuilder() to construct.
        private ConnectionList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private ConnectionList() {
            connections_ = java.util.Collections.emptyList();
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new ConnectionList();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_ConnectionList_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_ConnectionList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ConnectionList.class, context.ContextOuterClass.ConnectionList.Builder.class);
        }

        public static final int CONNECTIONS_FIELD_NUMBER = 1;

        @SuppressWarnings("serial")
        private java.util.List<context.ContextOuterClass.Connection> connections_;

        /**
         * <code>repeated .context.Connection connections = 1;</code>
         */
        @java.lang.Override
        public java.util.List<context.ContextOuterClass.Connection> getConnectionsList() {
            return connections_;
        }

        /**
         * <code>repeated .context.Connection connections = 1;</code>
         */
        @java.lang.Override
        public java.util.List<? extends context.ContextOuterClass.ConnectionOrBuilder> getConnectionsOrBuilderList() {
            return connections_;
        }

        /**
         * <code>repeated .context.Connection connections = 1;</code>
         */
        @java.lang.Override
        public int getConnectionsCount() {
            return connections_.size();
        }

        /**
         * <code>repeated .context.Connection connections = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.Connection getConnections(int index) {
            return connections_.get(index);
        }

        /**
         * <code>repeated .context.Connection connections = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.ConnectionOrBuilder getConnectionsOrBuilder(int index) {
            return connections_.get(index);
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            for (int i = 0; i < connections_.size(); i++) {
                output.writeMessage(1, connections_.get(i));
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            for (int i = 0; i < connections_.size(); i++) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, connections_.get(i));
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.ConnectionList)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.ConnectionList other = (context.ContextOuterClass.ConnectionList) obj;
            if (!getConnectionsList().equals(other.getConnectionsList()))
                return false;
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            if (getConnectionsCount() > 0) {
                hash = (37 * hash) + CONNECTIONS_FIELD_NUMBER;
                hash = (53 * hash) + getConnectionsList().hashCode();
            }
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.ConnectionList parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.ConnectionList parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.ConnectionList parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.ConnectionList parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.ConnectionList parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.ConnectionList parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.ConnectionList parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.ConnectionList parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.ConnectionList parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.ConnectionList parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.ConnectionList parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.ConnectionList parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.ConnectionList prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code context.ConnectionList}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.ConnectionList)
        context.ContextOuterClass.ConnectionListOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_ConnectionList_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_ConnectionList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ConnectionList.class, context.ContextOuterClass.ConnectionList.Builder.class);
            }

            // Construct using context.ContextOuterClass.ConnectionList.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                if (connectionsBuilder_ == null) {
                    connections_ = java.util.Collections.emptyList();
                } else {
                    connections_ = null;
                    connectionsBuilder_.clear();
                }
                bitField0_ = (bitField0_ & ~0x00000001);
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_ConnectionList_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.ConnectionList getDefaultInstanceForType() {
                return context.ContextOuterClass.ConnectionList.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.ConnectionList build() {
                context.ContextOuterClass.ConnectionList result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.ConnectionList buildPartial() {
                context.ContextOuterClass.ConnectionList result = new context.ContextOuterClass.ConnectionList(this);
                buildPartialRepeatedFields(result);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartialRepeatedFields(context.ContextOuterClass.ConnectionList result) {
                if (connectionsBuilder_ == null) {
                    if (((bitField0_ & 0x00000001) != 0)) {
                        connections_ = java.util.Collections.unmodifiableList(connections_);
                        bitField0_ = (bitField0_ & ~0x00000001);
                    }
                    result.connections_ = connections_;
                } else {
                    result.connections_ = connectionsBuilder_.build();
                }
            }

            private void buildPartial0(context.ContextOuterClass.ConnectionList result) {
                int from_bitField0_ = bitField0_;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.ConnectionList) {
                    return mergeFrom((context.ContextOuterClass.ConnectionList) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.ConnectionList other) {
                if (other == context.ContextOuterClass.ConnectionList.getDefaultInstance())
                    return this;
                if (connectionsBuilder_ == null) {
                    if (!other.connections_.isEmpty()) {
                        if (connections_.isEmpty()) {
                            connections_ = other.connections_;
                            bitField0_ = (bitField0_ & ~0x00000001);
                        } else {
                            ensureConnectionsIsMutable();
                            connections_.addAll(other.connections_);
                        }
                        onChanged();
                    }
                } else {
                    if (!other.connections_.isEmpty()) {
                        if (connectionsBuilder_.isEmpty()) {
                            connectionsBuilder_.dispose();
                            connectionsBuilder_ = null;
                            connections_ = other.connections_;
                            bitField0_ = (bitField0_ & ~0x00000001);
                            connectionsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getConnectionsFieldBuilder() : null;
                        } else {
                            connectionsBuilder_.addAllMessages(other.connections_);
                        }
                    }
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 10:
                                {
                                    context.ContextOuterClass.Connection m = input.readMessage(context.ContextOuterClass.Connection.parser(), extensionRegistry);
                                    if (connectionsBuilder_ == null) {
                                        ensureConnectionsIsMutable();
                                        connections_.add(m);
                                    } else {
                                        connectionsBuilder_.addMessage(m);
                                    }
                                    break;
                                }
                            // case 10
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private java.util.List<context.ContextOuterClass.Connection> connections_ = java.util.Collections.emptyList();

            private void ensureConnectionsIsMutable() {
                if (!((bitField0_ & 0x00000001) != 0)) {
                    connections_ = new java.util.ArrayList<context.ContextOuterClass.Connection>(connections_);
                    bitField0_ |= 0x00000001;
                }
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Connection, context.ContextOuterClass.Connection.Builder, context.ContextOuterClass.ConnectionOrBuilder> connectionsBuilder_;

            /**
             * <code>repeated .context.Connection connections = 1;</code>
             */
            public java.util.List<context.ContextOuterClass.Connection> getConnectionsList() {
                if (connectionsBuilder_ == null) {
                    return java.util.Collections.unmodifiableList(connections_);
                } else {
                    return connectionsBuilder_.getMessageList();
                }
            }

            /**
             * <code>repeated .context.Connection connections = 1;</code>
             */
            public int getConnectionsCount() {
                if (connectionsBuilder_ == null) {
                    return connections_.size();
                } else {
                    return connectionsBuilder_.getCount();
                }
            }

            /**
             * <code>repeated .context.Connection connections = 1;</code>
             */
            public context.ContextOuterClass.Connection getConnections(int index) {
                if (connectionsBuilder_ == null) {
                    return connections_.get(index);
                } else {
                    return connectionsBuilder_.getMessage(index);
                }
            }

            /**
             * <code>repeated .context.Connection connections = 1;</code>
             */
            public Builder setConnections(int index, context.ContextOuterClass.Connection value) {
                if (connectionsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureConnectionsIsMutable();
                    connections_.set(index, value);
                    onChanged();
                } else {
                    connectionsBuilder_.setMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.Connection connections = 1;</code>
             */
            public Builder setConnections(int index, context.ContextOuterClass.Connection.Builder builderForValue) {
                if (connectionsBuilder_ == null) {
                    ensureConnectionsIsMutable();
                    connections_.set(index, builderForValue.build());
                    onChanged();
                } else {
                    connectionsBuilder_.setMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.Connection connections = 1;</code>
             */
            public Builder addConnections(context.ContextOuterClass.Connection value) {
                if (connectionsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureConnectionsIsMutable();
                    connections_.add(value);
                    onChanged();
                } else {
                    connectionsBuilder_.addMessage(value);
                }
                return this;
            }

            /**
             * <code>repeated .context.Connection connections = 1;</code>
             */
            public Builder addConnections(int index, context.ContextOuterClass.Connection value) {
                if (connectionsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureConnectionsIsMutable();
                    connections_.add(index, value);
                    onChanged();
                } else {
                    connectionsBuilder_.addMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.Connection connections = 1;</code>
             */
            public Builder addConnections(context.ContextOuterClass.Connection.Builder builderForValue) {
                if (connectionsBuilder_ == null) {
                    ensureConnectionsIsMutable();
                    connections_.add(builderForValue.build());
                    onChanged();
                } else {
                    connectionsBuilder_.addMessage(builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.Connection connections = 1;</code>
             */
            public Builder addConnections(int index, context.ContextOuterClass.Connection.Builder builderForValue) {
                if (connectionsBuilder_ == null) {
                    ensureConnectionsIsMutable();
                    connections_.add(index, builderForValue.build());
                    onChanged();
                } else {
                    connectionsBuilder_.addMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.Connection connections = 1;</code>
             */
            public Builder addAllConnections(java.lang.Iterable<? extends context.ContextOuterClass.Connection> values) {
                if (connectionsBuilder_ == null) {
                    ensureConnectionsIsMutable();
                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, connections_);
                    onChanged();
                } else {
                    connectionsBuilder_.addAllMessages(values);
                }
                return this;
            }

            /**
             * <code>repeated .context.Connection connections = 1;</code>
             */
            public Builder clearConnections() {
                if (connectionsBuilder_ == null) {
                    connections_ = java.util.Collections.emptyList();
                    bitField0_ = (bitField0_ & ~0x00000001);
                    onChanged();
                } else {
                    connectionsBuilder_.clear();
                }
                return this;
            }

            /**
             * <code>repeated .context.Connection connections = 1;</code>
             */
            public Builder removeConnections(int index) {
                if (connectionsBuilder_ == null) {
                    ensureConnectionsIsMutable();
                    connections_.remove(index);
                    onChanged();
                } else {
                    connectionsBuilder_.remove(index);
                }
                return this;
            }

            /**
             * <code>repeated .context.Connection connections = 1;</code>
             */
            public context.ContextOuterClass.Connection.Builder getConnectionsBuilder(int index) {
                return getConnectionsFieldBuilder().getBuilder(index);
            }

            /**
             * <code>repeated .context.Connection connections = 1;</code>
             */
            public context.ContextOuterClass.ConnectionOrBuilder getConnectionsOrBuilder(int index) {
                if (connectionsBuilder_ == null) {
                    return connections_.get(index);
                } else {
                    return connectionsBuilder_.getMessageOrBuilder(index);
                }
            }

            /**
             * <code>repeated .context.Connection connections = 1;</code>
             */
            public java.util.List<? extends context.ContextOuterClass.ConnectionOrBuilder> getConnectionsOrBuilderList() {
                if (connectionsBuilder_ != null) {
                    return connectionsBuilder_.getMessageOrBuilderList();
                } else {
                    return java.util.Collections.unmodifiableList(connections_);
                }
            }

            /**
             * <code>repeated .context.Connection connections = 1;</code>
             */
            public context.ContextOuterClass.Connection.Builder addConnectionsBuilder() {
                return getConnectionsFieldBuilder().addBuilder(context.ContextOuterClass.Connection.getDefaultInstance());
            }

            /**
             * <code>repeated .context.Connection connections = 1;</code>
             */
            public context.ContextOuterClass.Connection.Builder addConnectionsBuilder(int index) {
                return getConnectionsFieldBuilder().addBuilder(index, context.ContextOuterClass.Connection.getDefaultInstance());
            }

            /**
             * <code>repeated .context.Connection connections = 1;</code>
             */
            public java.util.List<context.ContextOuterClass.Connection.Builder> getConnectionsBuilderList() {
                return getConnectionsFieldBuilder().getBuilderList();
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Connection, context.ContextOuterClass.Connection.Builder, context.ContextOuterClass.ConnectionOrBuilder> getConnectionsFieldBuilder() {
                if (connectionsBuilder_ == null) {
                    connectionsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.Connection, context.ContextOuterClass.Connection.Builder, context.ContextOuterClass.ConnectionOrBuilder>(connections_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
                    connections_ = null;
                }
                return connectionsBuilder_;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.ConnectionList)
        }

        // @@protoc_insertion_point(class_scope:context.ConnectionList)
        private static final context.ContextOuterClass.ConnectionList DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.ConnectionList();
        }

        public static context.ContextOuterClass.ConnectionList getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<ConnectionList> PARSER = new com.google.protobuf.AbstractParser<ConnectionList>() {

            @java.lang.Override
            public ConnectionList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<ConnectionList> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<ConnectionList> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.ConnectionList getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface ConnectionEventOrBuilder extends // @@protoc_insertion_point(interface_extends:context.ConnectionEvent)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>.context.Event event = 1;</code>
         * @return Whether the event field is set.
         */
        boolean hasEvent();

        /**
         * <code>.context.Event event = 1;</code>
         * @return The event.
         */
        context.ContextOuterClass.Event getEvent();

        /**
         * <code>.context.Event event = 1;</code>
         */
        context.ContextOuterClass.EventOrBuilder getEventOrBuilder();

        /**
         * <code>.context.ConnectionId connection_id = 2;</code>
         * @return Whether the connectionId field is set.
         */
        boolean hasConnectionId();

        /**
         * <code>.context.ConnectionId connection_id = 2;</code>
         * @return The connectionId.
         */
        context.ContextOuterClass.ConnectionId getConnectionId();

        /**
         * <code>.context.ConnectionId connection_id = 2;</code>
         */
        context.ContextOuterClass.ConnectionIdOrBuilder getConnectionIdOrBuilder();
    }

    /**
     * Protobuf type {@code context.ConnectionEvent}
     */
    public static final class ConnectionEvent extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.ConnectionEvent)
    ConnectionEventOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use ConnectionEvent.newBuilder() to construct.
        private ConnectionEvent(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private ConnectionEvent() {
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new ConnectionEvent();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_ConnectionEvent_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_ConnectionEvent_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ConnectionEvent.class, context.ContextOuterClass.ConnectionEvent.Builder.class);
        }

        public static final int EVENT_FIELD_NUMBER = 1;

        private context.ContextOuterClass.Event event_;

        /**
         * <code>.context.Event event = 1;</code>
         * @return Whether the event field is set.
         */
        @java.lang.Override
        public boolean hasEvent() {
            return event_ != null;
        }

        /**
         * <code>.context.Event event = 1;</code>
         * @return The event.
         */
        @java.lang.Override
        public context.ContextOuterClass.Event getEvent() {
            return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
        }

        /**
         * <code>.context.Event event = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
            return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
        }

        public static final int CONNECTION_ID_FIELD_NUMBER = 2;

        private context.ContextOuterClass.ConnectionId connectionId_;

        /**
         * <code>.context.ConnectionId connection_id = 2;</code>
         * @return Whether the connectionId field is set.
         */
        @java.lang.Override
        public boolean hasConnectionId() {
            return connectionId_ != null;
        }

        /**
         * <code>.context.ConnectionId connection_id = 2;</code>
         * @return The connectionId.
         */
        @java.lang.Override
        public context.ContextOuterClass.ConnectionId getConnectionId() {
            return connectionId_ == null ? context.ContextOuterClass.ConnectionId.getDefaultInstance() : connectionId_;
        }

        /**
         * <code>.context.ConnectionId connection_id = 2;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.ConnectionIdOrBuilder getConnectionIdOrBuilder() {
            return connectionId_ == null ? context.ContextOuterClass.ConnectionId.getDefaultInstance() : connectionId_;
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            if (event_ != null) {
                output.writeMessage(1, getEvent());
            }
            if (connectionId_ != null) {
                output.writeMessage(2, getConnectionId());
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            if (event_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getEvent());
            }
            if (connectionId_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getConnectionId());
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.ConnectionEvent)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.ConnectionEvent other = (context.ContextOuterClass.ConnectionEvent) obj;
            if (hasEvent() != other.hasEvent())
                return false;
            if (hasEvent()) {
                if (!getEvent().equals(other.getEvent()))
                    return false;
            }
            if (hasConnectionId() != other.hasConnectionId())
                return false;
            if (hasConnectionId()) {
                if (!getConnectionId().equals(other.getConnectionId()))
                    return false;
            }
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            if (hasEvent()) {
                hash = (37 * hash) + EVENT_FIELD_NUMBER;
                hash = (53 * hash) + getEvent().hashCode();
            }
            if (hasConnectionId()) {
                hash = (37 * hash) + CONNECTION_ID_FIELD_NUMBER;
                hash = (53 * hash) + getConnectionId().hashCode();
            }
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.ConnectionEvent parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.ConnectionEvent parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.ConnectionEvent parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.ConnectionEvent parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.ConnectionEvent parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.ConnectionEvent parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.ConnectionEvent parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.ConnectionEvent parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.ConnectionEvent parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.ConnectionEvent parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.ConnectionEvent parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.ConnectionEvent parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.ConnectionEvent prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code context.ConnectionEvent}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.ConnectionEvent)
        context.ContextOuterClass.ConnectionEventOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_ConnectionEvent_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_ConnectionEvent_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ConnectionEvent.class, context.ContextOuterClass.ConnectionEvent.Builder.class);
            }

            // Construct using context.ContextOuterClass.ConnectionEvent.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                event_ = null;
                if (eventBuilder_ != null) {
                    eventBuilder_.dispose();
                    eventBuilder_ = null;
                }
                connectionId_ = null;
                if (connectionIdBuilder_ != null) {
                    connectionIdBuilder_.dispose();
                    connectionIdBuilder_ = null;
                }
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_ConnectionEvent_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.ConnectionEvent getDefaultInstanceForType() {
                return context.ContextOuterClass.ConnectionEvent.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.ConnectionEvent build() {
                context.ContextOuterClass.ConnectionEvent result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.ConnectionEvent buildPartial() {
                context.ContextOuterClass.ConnectionEvent result = new context.ContextOuterClass.ConnectionEvent(this);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartial0(context.ContextOuterClass.ConnectionEvent result) {
                int from_bitField0_ = bitField0_;
                if (((from_bitField0_ & 0x00000001) != 0)) {
                    result.event_ = eventBuilder_ == null ? event_ : eventBuilder_.build();
                }
                if (((from_bitField0_ & 0x00000002) != 0)) {
                    result.connectionId_ = connectionIdBuilder_ == null ? connectionId_ : connectionIdBuilder_.build();
                }
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.ConnectionEvent) {
                    return mergeFrom((context.ContextOuterClass.ConnectionEvent) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.ConnectionEvent other) {
                if (other == context.ContextOuterClass.ConnectionEvent.getDefaultInstance())
                    return this;
                if (other.hasEvent()) {
                    mergeEvent(other.getEvent());
                }
                if (other.hasConnectionId()) {
                    mergeConnectionId(other.getConnectionId());
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 10:
                                {
                                    input.readMessage(getEventFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000001;
                                    break;
                                }
                            // case 10
                            case 18:
                                {
                                    input.readMessage(getConnectionIdFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000002;
                                    break;
                                }
                            // case 18
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private context.ContextOuterClass.Event event_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> eventBuilder_;

            /**
             * <code>.context.Event event = 1;</code>
             * @return Whether the event field is set.
             */
            public boolean hasEvent() {
                return ((bitField0_ & 0x00000001) != 0);
            }

            /**
             * <code>.context.Event event = 1;</code>
             * @return The event.
             */
            public context.ContextOuterClass.Event getEvent() {
                if (eventBuilder_ == null) {
                    return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
                } else {
                    return eventBuilder_.getMessage();
                }
            }

            /**
             * <code>.context.Event event = 1;</code>
             */
            public Builder setEvent(context.ContextOuterClass.Event value) {
                if (eventBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    event_ = value;
                } else {
                    eventBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.Event event = 1;</code>
             */
            public Builder setEvent(context.ContextOuterClass.Event.Builder builderForValue) {
                if (eventBuilder_ == null) {
                    event_ = builderForValue.build();
                } else {
                    eventBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.Event event = 1;</code>
             */
            public Builder mergeEvent(context.ContextOuterClass.Event value) {
                if (eventBuilder_ == null) {
                    if (((bitField0_ & 0x00000001) != 0) && event_ != null && event_ != context.ContextOuterClass.Event.getDefaultInstance()) {
                        getEventBuilder().mergeFrom(value);
                    } else {
                        event_ = value;
                    }
                } else {
                    eventBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.Event event = 1;</code>
             */
            public Builder clearEvent() {
                bitField0_ = (bitField0_ & ~0x00000001);
                event_ = null;
                if (eventBuilder_ != null) {
                    eventBuilder_.dispose();
                    eventBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.Event event = 1;</code>
             */
            public context.ContextOuterClass.Event.Builder getEventBuilder() {
                bitField0_ |= 0x00000001;
                onChanged();
                return getEventFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.Event event = 1;</code>
             */
            public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
                if (eventBuilder_ != null) {
                    return eventBuilder_.getMessageOrBuilder();
                } else {
                    return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
                }
            }

            /**
             * <code>.context.Event event = 1;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> getEventFieldBuilder() {
                if (eventBuilder_ == null) {
                    eventBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder>(getEvent(), getParentForChildren(), isClean());
                    event_ = null;
                }
                return eventBuilder_;
            }

            private context.ContextOuterClass.ConnectionId connectionId_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ConnectionId, context.ContextOuterClass.ConnectionId.Builder, context.ContextOuterClass.ConnectionIdOrBuilder> connectionIdBuilder_;

            /**
             * <code>.context.ConnectionId connection_id = 2;</code>
             * @return Whether the connectionId field is set.
             */
            public boolean hasConnectionId() {
                return ((bitField0_ & 0x00000002) != 0);
            }

            /**
             * <code>.context.ConnectionId connection_id = 2;</code>
             * @return The connectionId.
             */
            public context.ContextOuterClass.ConnectionId getConnectionId() {
                if (connectionIdBuilder_ == null) {
                    return connectionId_ == null ? context.ContextOuterClass.ConnectionId.getDefaultInstance() : connectionId_;
                } else {
                    return connectionIdBuilder_.getMessage();
                }
            }

            /**
             * <code>.context.ConnectionId connection_id = 2;</code>
             */
            public Builder setConnectionId(context.ContextOuterClass.ConnectionId value) {
                if (connectionIdBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    connectionId_ = value;
                } else {
                    connectionIdBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>.context.ConnectionId connection_id = 2;</code>
             */
            public Builder setConnectionId(context.ContextOuterClass.ConnectionId.Builder builderForValue) {
                if (connectionIdBuilder_ == null) {
                    connectionId_ = builderForValue.build();
                } else {
                    connectionIdBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>.context.ConnectionId connection_id = 2;</code>
             */
            public Builder mergeConnectionId(context.ContextOuterClass.ConnectionId value) {
                if (connectionIdBuilder_ == null) {
                    if (((bitField0_ & 0x00000002) != 0) && connectionId_ != null && connectionId_ != context.ContextOuterClass.ConnectionId.getDefaultInstance()) {
                        getConnectionIdBuilder().mergeFrom(value);
                    } else {
                        connectionId_ = value;
                    }
                } else {
                    connectionIdBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>.context.ConnectionId connection_id = 2;</code>
             */
            public Builder clearConnectionId() {
                bitField0_ = (bitField0_ & ~0x00000002);
                connectionId_ = null;
                if (connectionIdBuilder_ != null) {
                    connectionIdBuilder_.dispose();
                    connectionIdBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.ConnectionId connection_id = 2;</code>
             */
            public context.ContextOuterClass.ConnectionId.Builder getConnectionIdBuilder() {
                bitField0_ |= 0x00000002;
                onChanged();
                return getConnectionIdFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.ConnectionId connection_id = 2;</code>
             */
            public context.ContextOuterClass.ConnectionIdOrBuilder getConnectionIdOrBuilder() {
                if (connectionIdBuilder_ != null) {
                    return connectionIdBuilder_.getMessageOrBuilder();
                } else {
                    return connectionId_ == null ? context.ContextOuterClass.ConnectionId.getDefaultInstance() : connectionId_;
                }
            }

            /**
             * <code>.context.ConnectionId connection_id = 2;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ConnectionId, context.ContextOuterClass.ConnectionId.Builder, context.ContextOuterClass.ConnectionIdOrBuilder> getConnectionIdFieldBuilder() {
                if (connectionIdBuilder_ == null) {
                    connectionIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ConnectionId, context.ContextOuterClass.ConnectionId.Builder, context.ContextOuterClass.ConnectionIdOrBuilder>(getConnectionId(), getParentForChildren(), isClean());
                    connectionId_ = null;
                }
                return connectionIdBuilder_;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.ConnectionEvent)
        }

        // @@protoc_insertion_point(class_scope:context.ConnectionEvent)
        private static final context.ContextOuterClass.ConnectionEvent DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.ConnectionEvent();
        }

        public static context.ContextOuterClass.ConnectionEvent getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<ConnectionEvent> PARSER = new com.google.protobuf.AbstractParser<ConnectionEvent>() {

            @java.lang.Override
            public ConnectionEvent parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<ConnectionEvent> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<ConnectionEvent> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.ConnectionEvent getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface EndPointIdOrBuilder extends // @@protoc_insertion_point(interface_extends:context.EndPointId)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>.context.TopologyId topology_id = 1;</code>
         * @return Whether the topologyId field is set.
         */
        boolean hasTopologyId();

        /**
         * <code>.context.TopologyId topology_id = 1;</code>
         * @return The topologyId.
         */
        context.ContextOuterClass.TopologyId getTopologyId();

        /**
         * <code>.context.TopologyId topology_id = 1;</code>
         */
        context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdOrBuilder();

        /**
         * <code>.context.DeviceId device_id = 2;</code>
         * @return Whether the deviceId field is set.
         */
        boolean hasDeviceId();

        /**
         * <code>.context.DeviceId device_id = 2;</code>
         * @return The deviceId.
         */
        context.ContextOuterClass.DeviceId getDeviceId();

        /**
         * <code>.context.DeviceId device_id = 2;</code>
         */
        context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder();

        /**
         * <code>.context.Uuid endpoint_uuid = 3;</code>
         * @return Whether the endpointUuid field is set.
         */
        boolean hasEndpointUuid();

        /**
         * <code>.context.Uuid endpoint_uuid = 3;</code>
         * @return The endpointUuid.
         */
        context.ContextOuterClass.Uuid getEndpointUuid();

        /**
         * <code>.context.Uuid endpoint_uuid = 3;</code>
         */
        context.ContextOuterClass.UuidOrBuilder getEndpointUuidOrBuilder();
    }

    /**
     * <pre>
     * ----- Endpoint ------------------------------------------------------------------------------------------------------
     * </pre>
     *
     * Protobuf type {@code context.EndPointId}
     */
    public static final class EndPointId extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.EndPointId)
    EndPointIdOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use EndPointId.newBuilder() to construct.
        private EndPointId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private EndPointId() {
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new EndPointId();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_EndPointId_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_EndPointId_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.EndPointId.class, context.ContextOuterClass.EndPointId.Builder.class);
        }

        public static final int TOPOLOGY_ID_FIELD_NUMBER = 1;

        private context.ContextOuterClass.TopologyId topologyId_;

        /**
         * <code>.context.TopologyId topology_id = 1;</code>
         * @return Whether the topologyId field is set.
         */
        @java.lang.Override
        public boolean hasTopologyId() {
            return topologyId_ != null;
        }

        /**
         * <code>.context.TopologyId topology_id = 1;</code>
         * @return The topologyId.
         */
        @java.lang.Override
        public context.ContextOuterClass.TopologyId getTopologyId() {
            return topologyId_ == null ? context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_;
        }

        /**
         * <code>.context.TopologyId topology_id = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdOrBuilder() {
            return topologyId_ == null ? context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_;
        }

        public static final int DEVICE_ID_FIELD_NUMBER = 2;

        private context.ContextOuterClass.DeviceId deviceId_;

        /**
         * <code>.context.DeviceId device_id = 2;</code>
         * @return Whether the deviceId field is set.
         */
        @java.lang.Override
        public boolean hasDeviceId() {
            return deviceId_ != null;
        }

        /**
         * <code>.context.DeviceId device_id = 2;</code>
         * @return The deviceId.
         */
        @java.lang.Override
        public context.ContextOuterClass.DeviceId getDeviceId() {
            return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
        }

        /**
         * <code>.context.DeviceId device_id = 2;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder() {
            return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
        }

        public static final int ENDPOINT_UUID_FIELD_NUMBER = 3;

        private context.ContextOuterClass.Uuid endpointUuid_;

        /**
         * <code>.context.Uuid endpoint_uuid = 3;</code>
         * @return Whether the endpointUuid field is set.
         */
        @java.lang.Override
        public boolean hasEndpointUuid() {
            return endpointUuid_ != null;
        }

        /**
         * <code>.context.Uuid endpoint_uuid = 3;</code>
         * @return The endpointUuid.
         */
        @java.lang.Override
        public context.ContextOuterClass.Uuid getEndpointUuid() {
            return endpointUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : endpointUuid_;
        }

        /**
         * <code>.context.Uuid endpoint_uuid = 3;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.UuidOrBuilder getEndpointUuidOrBuilder() {
            return endpointUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : endpointUuid_;
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            if (topologyId_ != null) {
                output.writeMessage(1, getTopologyId());
            }
            if (deviceId_ != null) {
                output.writeMessage(2, getDeviceId());
            }
            if (endpointUuid_ != null) {
                output.writeMessage(3, getEndpointUuid());
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            if (topologyId_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getTopologyId());
            }
            if (deviceId_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getDeviceId());
            }
            if (endpointUuid_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, getEndpointUuid());
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.EndPointId)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.EndPointId other = (context.ContextOuterClass.EndPointId) obj;
            if (hasTopologyId() != other.hasTopologyId())
                return false;
            if (hasTopologyId()) {
                if (!getTopologyId().equals(other.getTopologyId()))
                    return false;
            }
            if (hasDeviceId() != other.hasDeviceId())
                return false;
            if (hasDeviceId()) {
                if (!getDeviceId().equals(other.getDeviceId()))
                    return false;
            }
            if (hasEndpointUuid() != other.hasEndpointUuid())
                return false;
            if (hasEndpointUuid()) {
                if (!getEndpointUuid().equals(other.getEndpointUuid()))
                    return false;
            }
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            if (hasTopologyId()) {
                hash = (37 * hash) + TOPOLOGY_ID_FIELD_NUMBER;
                hash = (53 * hash) + getTopologyId().hashCode();
            }
            if (hasDeviceId()) {
                hash = (37 * hash) + DEVICE_ID_FIELD_NUMBER;
                hash = (53 * hash) + getDeviceId().hashCode();
            }
            if (hasEndpointUuid()) {
                hash = (37 * hash) + ENDPOINT_UUID_FIELD_NUMBER;
                hash = (53 * hash) + getEndpointUuid().hashCode();
            }
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.EndPointId parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.EndPointId parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.EndPointId parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.EndPointId parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.EndPointId parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.EndPointId parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.EndPointId parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.EndPointId parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.EndPointId parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.EndPointId parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.EndPointId parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.EndPointId parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.EndPointId prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * <pre>
         * ----- Endpoint ------------------------------------------------------------------------------------------------------
         * </pre>
         *
         * Protobuf type {@code context.EndPointId}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.EndPointId)
        context.ContextOuterClass.EndPointIdOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_EndPointId_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_EndPointId_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.EndPointId.class, context.ContextOuterClass.EndPointId.Builder.class);
            }

            // Construct using context.ContextOuterClass.EndPointId.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                topologyId_ = null;
                if (topologyIdBuilder_ != null) {
                    topologyIdBuilder_.dispose();
                    topologyIdBuilder_ = null;
                }
                deviceId_ = null;
                if (deviceIdBuilder_ != null) {
                    deviceIdBuilder_.dispose();
                    deviceIdBuilder_ = null;
                }
                endpointUuid_ = null;
                if (endpointUuidBuilder_ != null) {
                    endpointUuidBuilder_.dispose();
                    endpointUuidBuilder_ = null;
                }
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_EndPointId_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.EndPointId getDefaultInstanceForType() {
                return context.ContextOuterClass.EndPointId.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.EndPointId build() {
                context.ContextOuterClass.EndPointId result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.EndPointId buildPartial() {
                context.ContextOuterClass.EndPointId result = new context.ContextOuterClass.EndPointId(this);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartial0(context.ContextOuterClass.EndPointId result) {
                int from_bitField0_ = bitField0_;
                if (((from_bitField0_ & 0x00000001) != 0)) {
                    result.topologyId_ = topologyIdBuilder_ == null ? topologyId_ : topologyIdBuilder_.build();
                }
                if (((from_bitField0_ & 0x00000002) != 0)) {
                    result.deviceId_ = deviceIdBuilder_ == null ? deviceId_ : deviceIdBuilder_.build();
                }
                if (((from_bitField0_ & 0x00000004) != 0)) {
                    result.endpointUuid_ = endpointUuidBuilder_ == null ? endpointUuid_ : endpointUuidBuilder_.build();
                }
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.EndPointId) {
                    return mergeFrom((context.ContextOuterClass.EndPointId) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.EndPointId other) {
                if (other == context.ContextOuterClass.EndPointId.getDefaultInstance())
                    return this;
                if (other.hasTopologyId()) {
                    mergeTopologyId(other.getTopologyId());
                }
                if (other.hasDeviceId()) {
                    mergeDeviceId(other.getDeviceId());
                }
                if (other.hasEndpointUuid()) {
                    mergeEndpointUuid(other.getEndpointUuid());
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 10:
                                {
                                    input.readMessage(getTopologyIdFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000001;
                                    break;
                                }
                            // case 10
                            case 18:
                                {
                                    input.readMessage(getDeviceIdFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000002;
                                    break;
                                }
                            // case 18
                            case 26:
                                {
                                    input.readMessage(getEndpointUuidFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000004;
                                    break;
                                }
                            // case 26
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private context.ContextOuterClass.TopologyId topologyId_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder> topologyIdBuilder_;

            /**
             * <code>.context.TopologyId topology_id = 1;</code>
             * @return Whether the topologyId field is set.
             */
            public boolean hasTopologyId() {
                return ((bitField0_ & 0x00000001) != 0);
            }

            /**
             * <code>.context.TopologyId topology_id = 1;</code>
             * @return The topologyId.
             */
            public context.ContextOuterClass.TopologyId getTopologyId() {
                if (topologyIdBuilder_ == null) {
                    return topologyId_ == null ? context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_;
                } else {
                    return topologyIdBuilder_.getMessage();
                }
            }

            /**
             * <code>.context.TopologyId topology_id = 1;</code>
             */
            public Builder setTopologyId(context.ContextOuterClass.TopologyId value) {
                if (topologyIdBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    topologyId_ = value;
                } else {
                    topologyIdBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.TopologyId topology_id = 1;</code>
             */
            public Builder setTopologyId(context.ContextOuterClass.TopologyId.Builder builderForValue) {
                if (topologyIdBuilder_ == null) {
                    topologyId_ = builderForValue.build();
                } else {
                    topologyIdBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.TopologyId topology_id = 1;</code>
             */
            public Builder mergeTopologyId(context.ContextOuterClass.TopologyId value) {
                if (topologyIdBuilder_ == null) {
                    if (((bitField0_ & 0x00000001) != 0) && topologyId_ != null && topologyId_ != context.ContextOuterClass.TopologyId.getDefaultInstance()) {
                        getTopologyIdBuilder().mergeFrom(value);
                    } else {
                        topologyId_ = value;
                    }
                } else {
                    topologyIdBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.TopologyId topology_id = 1;</code>
             */
            public Builder clearTopologyId() {
                bitField0_ = (bitField0_ & ~0x00000001);
                topologyId_ = null;
                if (topologyIdBuilder_ != null) {
                    topologyIdBuilder_.dispose();
                    topologyIdBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.TopologyId topology_id = 1;</code>
             */
            public context.ContextOuterClass.TopologyId.Builder getTopologyIdBuilder() {
                bitField0_ |= 0x00000001;
                onChanged();
                return getTopologyIdFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.TopologyId topology_id = 1;</code>
             */
            public context.ContextOuterClass.TopologyIdOrBuilder getTopologyIdOrBuilder() {
                if (topologyIdBuilder_ != null) {
                    return topologyIdBuilder_.getMessageOrBuilder();
                } else {
                    return topologyId_ == null ? context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_;
                }
            }

            /**
             * <code>.context.TopologyId topology_id = 1;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder> getTopologyIdFieldBuilder() {
                if (topologyIdBuilder_ == null) {
                    topologyIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.TopologyId, context.ContextOuterClass.TopologyId.Builder, context.ContextOuterClass.TopologyIdOrBuilder>(getTopologyId(), getParentForChildren(), isClean());
                    topologyId_ = null;
                }
                return topologyIdBuilder_;
            }

            private context.ContextOuterClass.DeviceId deviceId_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> deviceIdBuilder_;

            /**
             * <code>.context.DeviceId device_id = 2;</code>
             * @return Whether the deviceId field is set.
             */
            public boolean hasDeviceId() {
                return ((bitField0_ & 0x00000002) != 0);
            }

            /**
             * <code>.context.DeviceId device_id = 2;</code>
             * @return The deviceId.
             */
            public context.ContextOuterClass.DeviceId getDeviceId() {
                if (deviceIdBuilder_ == null) {
                    return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
                } else {
                    return deviceIdBuilder_.getMessage();
                }
            }

            /**
             * <code>.context.DeviceId device_id = 2;</code>
             */
            public Builder setDeviceId(context.ContextOuterClass.DeviceId value) {
                if (deviceIdBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    deviceId_ = value;
                } else {
                    deviceIdBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>.context.DeviceId device_id = 2;</code>
             */
            public Builder setDeviceId(context.ContextOuterClass.DeviceId.Builder builderForValue) {
                if (deviceIdBuilder_ == null) {
                    deviceId_ = builderForValue.build();
                } else {
                    deviceIdBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>.context.DeviceId device_id = 2;</code>
             */
            public Builder mergeDeviceId(context.ContextOuterClass.DeviceId value) {
                if (deviceIdBuilder_ == null) {
                    if (((bitField0_ & 0x00000002) != 0) && deviceId_ != null && deviceId_ != context.ContextOuterClass.DeviceId.getDefaultInstance()) {
                        getDeviceIdBuilder().mergeFrom(value);
                    } else {
                        deviceId_ = value;
                    }
                } else {
                    deviceIdBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>.context.DeviceId device_id = 2;</code>
             */
            public Builder clearDeviceId() {
                bitField0_ = (bitField0_ & ~0x00000002);
                deviceId_ = null;
                if (deviceIdBuilder_ != null) {
                    deviceIdBuilder_.dispose();
                    deviceIdBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.DeviceId device_id = 2;</code>
             */
            public context.ContextOuterClass.DeviceId.Builder getDeviceIdBuilder() {
                bitField0_ |= 0x00000002;
                onChanged();
                return getDeviceIdFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.DeviceId device_id = 2;</code>
             */
            public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder() {
                if (deviceIdBuilder_ != null) {
                    return deviceIdBuilder_.getMessageOrBuilder();
                } else {
                    return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
                }
            }

            /**
             * <code>.context.DeviceId device_id = 2;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> getDeviceIdFieldBuilder() {
                if (deviceIdBuilder_ == null) {
                    deviceIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder>(getDeviceId(), getParentForChildren(), isClean());
                    deviceId_ = null;
                }
                return deviceIdBuilder_;
            }

            private context.ContextOuterClass.Uuid endpointUuid_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> endpointUuidBuilder_;

            /**
             * <code>.context.Uuid endpoint_uuid = 3;</code>
             * @return Whether the endpointUuid field is set.
             */
            public boolean hasEndpointUuid() {
                return ((bitField0_ & 0x00000004) != 0);
            }

            /**
             * <code>.context.Uuid endpoint_uuid = 3;</code>
             * @return The endpointUuid.
             */
            public context.ContextOuterClass.Uuid getEndpointUuid() {
                if (endpointUuidBuilder_ == null) {
                    return endpointUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : endpointUuid_;
                } else {
                    return endpointUuidBuilder_.getMessage();
                }
            }

            /**
             * <code>.context.Uuid endpoint_uuid = 3;</code>
             */
            public Builder setEndpointUuid(context.ContextOuterClass.Uuid value) {
                if (endpointUuidBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    endpointUuid_ = value;
                } else {
                    endpointUuidBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000004;
                onChanged();
                return this;
            }

            /**
             * <code>.context.Uuid endpoint_uuid = 3;</code>
             */
            public Builder setEndpointUuid(context.ContextOuterClass.Uuid.Builder builderForValue) {
                if (endpointUuidBuilder_ == null) {
                    endpointUuid_ = builderForValue.build();
                } else {
                    endpointUuidBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000004;
                onChanged();
                return this;
            }

            /**
             * <code>.context.Uuid endpoint_uuid = 3;</code>
             */
            public Builder mergeEndpointUuid(context.ContextOuterClass.Uuid value) {
                if (endpointUuidBuilder_ == null) {
                    if (((bitField0_ & 0x00000004) != 0) && endpointUuid_ != null && endpointUuid_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
                        getEndpointUuidBuilder().mergeFrom(value);
                    } else {
                        endpointUuid_ = value;
                    }
                } else {
                    endpointUuidBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000004;
                onChanged();
                return this;
            }

            /**
             * <code>.context.Uuid endpoint_uuid = 3;</code>
             */
            public Builder clearEndpointUuid() {
                bitField0_ = (bitField0_ & ~0x00000004);
                endpointUuid_ = null;
                if (endpointUuidBuilder_ != null) {
                    endpointUuidBuilder_.dispose();
                    endpointUuidBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.Uuid endpoint_uuid = 3;</code>
             */
            public context.ContextOuterClass.Uuid.Builder getEndpointUuidBuilder() {
                bitField0_ |= 0x00000004;
                onChanged();
                return getEndpointUuidFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.Uuid endpoint_uuid = 3;</code>
             */
            public context.ContextOuterClass.UuidOrBuilder getEndpointUuidOrBuilder() {
                if (endpointUuidBuilder_ != null) {
                    return endpointUuidBuilder_.getMessageOrBuilder();
                } else {
                    return endpointUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : endpointUuid_;
                }
            }

            /**
             * <code>.context.Uuid endpoint_uuid = 3;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> getEndpointUuidFieldBuilder() {
                if (endpointUuidBuilder_ == null) {
                    endpointUuidBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder>(getEndpointUuid(), getParentForChildren(), isClean());
                    endpointUuid_ = null;
                }
                return endpointUuidBuilder_;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.EndPointId)
        }

        // @@protoc_insertion_point(class_scope:context.EndPointId)
        private static final context.ContextOuterClass.EndPointId DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.EndPointId();
        }

        public static context.ContextOuterClass.EndPointId getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<EndPointId> PARSER = new com.google.protobuf.AbstractParser<EndPointId>() {

            @java.lang.Override
            public EndPointId parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<EndPointId> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<EndPointId> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.EndPointId getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface EndPointOrBuilder extends // @@protoc_insertion_point(interface_extends:context.EndPoint)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>.context.EndPointId endpoint_id = 1;</code>
         * @return Whether the endpointId field is set.
         */
        boolean hasEndpointId();

        /**
         * <code>.context.EndPointId endpoint_id = 1;</code>
         * @return The endpointId.
         */
        context.ContextOuterClass.EndPointId getEndpointId();

        /**
         * <code>.context.EndPointId endpoint_id = 1;</code>
         */
        context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder();

        /**
         * <code>string name = 2;</code>
         * @return The name.
         */
        java.lang.String getName();

        /**
         * <code>string name = 2;</code>
         * @return The bytes for name.
         */
        com.google.protobuf.ByteString getNameBytes();

        /**
         * <code>string endpoint_type = 3;</code>
         * @return The endpointType.
         */
        java.lang.String getEndpointType();

        /**
         * <code>string endpoint_type = 3;</code>
         * @return The bytes for endpointType.
         */
        com.google.protobuf.ByteString getEndpointTypeBytes();

        /**
         * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
         * @return A list containing the kpiSampleTypes.
         */
        java.util.List<kpi_sample_types.KpiSampleTypes.KpiSampleType> getKpiSampleTypesList();

        /**
         * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
         * @return The count of kpiSampleTypes.
         */
        int getKpiSampleTypesCount();

        /**
         * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
         * @param index The index of the element to return.
         * @return The kpiSampleTypes at the given index.
         */
        kpi_sample_types.KpiSampleTypes.KpiSampleType getKpiSampleTypes(int index);

        /**
         * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
         * @return A list containing the enum numeric values on the wire for kpiSampleTypes.
         */
        java.util.List<java.lang.Integer> getKpiSampleTypesValueList();

        /**
         * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
         * @param index The index of the value to return.
         * @return The enum numeric value on the wire of kpiSampleTypes at the given index.
         */
        int getKpiSampleTypesValue(int index);

        /**
         * <code>.context.Location endpoint_location = 5;</code>
         * @return Whether the endpointLocation field is set.
         */
        boolean hasEndpointLocation();

        /**
         * <code>.context.Location endpoint_location = 5;</code>
         * @return The endpointLocation.
         */
        context.ContextOuterClass.Location getEndpointLocation();

        /**
         * <code>.context.Location endpoint_location = 5;</code>
         */
        context.ContextOuterClass.LocationOrBuilder getEndpointLocationOrBuilder();

        /**
         * <code>map&lt;string, .google.protobuf.Any&gt; capabilities = 6;</code>
         */
        int getCapabilitiesCount();

        /**
         * <code>map&lt;string, .google.protobuf.Any&gt; capabilities = 6;</code>
         */
        boolean containsCapabilities(java.lang.String key);

        /**
         * Use {@link #getCapabilitiesMap()} instead.
         */
        @java.lang.Deprecated
        java.util.Map<java.lang.String, com.google.protobuf.Any> getCapabilities();

        /**
         * <code>map&lt;string, .google.protobuf.Any&gt; capabilities = 6;</code>
         */
        java.util.Map<java.lang.String, com.google.protobuf.Any> getCapabilitiesMap();

        /**
         * <code>map&lt;string, .google.protobuf.Any&gt; capabilities = 6;</code>
         */
        /* nullable */
        com.google.protobuf.Any getCapabilitiesOrDefault(java.lang.String key, /* nullable */
        com.google.protobuf.Any defaultValue);

        /**
         * <code>map&lt;string, .google.protobuf.Any&gt; capabilities = 6;</code>
         */
        com.google.protobuf.Any getCapabilitiesOrThrow(java.lang.String key);
    }

    /**
     * Protobuf type {@code context.EndPoint}
     */
    public static final class EndPoint extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.EndPoint)
    EndPointOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use EndPoint.newBuilder() to construct.
        private EndPoint(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private EndPoint() {
            name_ = "";
            endpointType_ = "";
            kpiSampleTypes_ = java.util.Collections.emptyList();
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new EndPoint();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_EndPoint_descriptor;
        }

        @SuppressWarnings({ "rawtypes" })
        @java.lang.Override
        protected com.google.protobuf.MapField internalGetMapField(int number) {
            switch(number) {
                case 6:
                    return internalGetCapabilities();
                default:
                    throw new RuntimeException("Invalid map field number: " + number);
            }
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_EndPoint_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.EndPoint.class, context.ContextOuterClass.EndPoint.Builder.class);
        }

        public static final int ENDPOINT_ID_FIELD_NUMBER = 1;

        private context.ContextOuterClass.EndPointId endpointId_;

        /**
         * <code>.context.EndPointId endpoint_id = 1;</code>
         * @return Whether the endpointId field is set.
         */
        @java.lang.Override
        public boolean hasEndpointId() {
            return endpointId_ != null;
        }

        /**
         * <code>.context.EndPointId endpoint_id = 1;</code>
         * @return The endpointId.
         */
        @java.lang.Override
        public context.ContextOuterClass.EndPointId getEndpointId() {
            return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
        }

        /**
         * <code>.context.EndPointId endpoint_id = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder() {
            return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
        }

        public static final int NAME_FIELD_NUMBER = 2;

        @SuppressWarnings("serial")
        private volatile java.lang.Object name_ = "";

        /**
         * <code>string name = 2;</code>
         * @return The name.
         */
        @java.lang.Override
        public java.lang.String getName() {
            java.lang.Object ref = name_;
            if (ref instanceof java.lang.String) {
                return (java.lang.String) ref;
            } else {
                com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                java.lang.String s = bs.toStringUtf8();
                name_ = s;
                return s;
            }
        }

        /**
         * <code>string name = 2;</code>
         * @return The bytes for name.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString getNameBytes() {
            java.lang.Object ref = name_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                name_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int ENDPOINT_TYPE_FIELD_NUMBER = 3;

        @SuppressWarnings("serial")
        private volatile java.lang.Object endpointType_ = "";

        /**
         * <code>string endpoint_type = 3;</code>
         * @return The endpointType.
         */
        @java.lang.Override
        public java.lang.String getEndpointType() {
            java.lang.Object ref = endpointType_;
            if (ref instanceof java.lang.String) {
                return (java.lang.String) ref;
            } else {
                com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                java.lang.String s = bs.toStringUtf8();
                endpointType_ = s;
                return s;
            }
        }

        /**
         * <code>string endpoint_type = 3;</code>
         * @return The bytes for endpointType.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString getEndpointTypeBytes() {
            java.lang.Object ref = endpointType_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                endpointType_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int KPI_SAMPLE_TYPES_FIELD_NUMBER = 4;

        @SuppressWarnings("serial")
        private java.util.List<java.lang.Integer> kpiSampleTypes_;

        private static final com.google.protobuf.Internal.ListAdapter.Converter<java.lang.Integer, kpi_sample_types.KpiSampleTypes.KpiSampleType> kpiSampleTypes_converter_ = new com.google.protobuf.Internal.ListAdapter.Converter<java.lang.Integer, kpi_sample_types.KpiSampleTypes.KpiSampleType>() {

            public kpi_sample_types.KpiSampleTypes.KpiSampleType convert(java.lang.Integer from) {
                kpi_sample_types.KpiSampleTypes.KpiSampleType result = kpi_sample_types.KpiSampleTypes.KpiSampleType.forNumber(from);
                return result == null ? kpi_sample_types.KpiSampleTypes.KpiSampleType.UNRECOGNIZED : result;
            }
        };

        /**
         * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
         * @return A list containing the kpiSampleTypes.
         */
        @java.lang.Override
        public java.util.List<kpi_sample_types.KpiSampleTypes.KpiSampleType> getKpiSampleTypesList() {
            return new com.google.protobuf.Internal.ListAdapter<java.lang.Integer, kpi_sample_types.KpiSampleTypes.KpiSampleType>(kpiSampleTypes_, kpiSampleTypes_converter_);
        }

        /**
         * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
         * @return The count of kpiSampleTypes.
         */
        @java.lang.Override
        public int getKpiSampleTypesCount() {
            return kpiSampleTypes_.size();
        }

        /**
         * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
         * @param index The index of the element to return.
         * @return The kpiSampleTypes at the given index.
         */
        @java.lang.Override
        public kpi_sample_types.KpiSampleTypes.KpiSampleType getKpiSampleTypes(int index) {
            return kpiSampleTypes_converter_.convert(kpiSampleTypes_.get(index));
        }

        /**
         * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
         * @return A list containing the enum numeric values on the wire for kpiSampleTypes.
         */
        @java.lang.Override
        public java.util.List<java.lang.Integer> getKpiSampleTypesValueList() {
            return kpiSampleTypes_;
        }

        /**
         * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
         * @param index The index of the value to return.
         * @return The enum numeric value on the wire of kpiSampleTypes at the given index.
         */
        @java.lang.Override
        public int getKpiSampleTypesValue(int index) {
            return kpiSampleTypes_.get(index);
        }

        private int kpiSampleTypesMemoizedSerializedSize;

        public static final int ENDPOINT_LOCATION_FIELD_NUMBER = 5;

        private context.ContextOuterClass.Location endpointLocation_;

        /**
         * <code>.context.Location endpoint_location = 5;</code>
         * @return Whether the endpointLocation field is set.
         */
        @java.lang.Override
        public boolean hasEndpointLocation() {
            return endpointLocation_ != null;
        }

        /**
         * <code>.context.Location endpoint_location = 5;</code>
         * @return The endpointLocation.
         */
        @java.lang.Override
        public context.ContextOuterClass.Location getEndpointLocation() {
            return endpointLocation_ == null ? context.ContextOuterClass.Location.getDefaultInstance() : endpointLocation_;
        }

        /**
         * <code>.context.Location endpoint_location = 5;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.LocationOrBuilder getEndpointLocationOrBuilder() {
            return endpointLocation_ == null ? context.ContextOuterClass.Location.getDefaultInstance() : endpointLocation_;
        }

        public static final int CAPABILITIES_FIELD_NUMBER = 6;

        private static final class CapabilitiesDefaultEntryHolder {

            static final com.google.protobuf.MapEntry<java.lang.String, com.google.protobuf.Any> defaultEntry = com.google.protobuf.MapEntry.<java.lang.String, com.google.protobuf.Any>newDefaultInstance(context.ContextOuterClass.internal_static_context_EndPoint_CapabilitiesEntry_descriptor, com.google.protobuf.WireFormat.FieldType.STRING, "", com.google.protobuf.WireFormat.FieldType.MESSAGE, com.google.protobuf.Any.getDefaultInstance());
        }

        @SuppressWarnings("serial")
        private com.google.protobuf.MapField<java.lang.String, com.google.protobuf.Any> capabilities_;

        private com.google.protobuf.MapField<java.lang.String, com.google.protobuf.Any> internalGetCapabilities() {
            if (capabilities_ == null) {
                return com.google.protobuf.MapField.emptyMapField(CapabilitiesDefaultEntryHolder.defaultEntry);
            }
            return capabilities_;
        }

        public int getCapabilitiesCount() {
            return internalGetCapabilities().getMap().size();
        }

        /**
         * <code>map&lt;string, .google.protobuf.Any&gt; capabilities = 6;</code>
         */
        @java.lang.Override
        public boolean containsCapabilities(java.lang.String key) {
            if (key == null) {
                throw new NullPointerException("map key");
            }
            return internalGetCapabilities().getMap().containsKey(key);
        }

        /**
         * Use {@link #getCapabilitiesMap()} instead.
         */
        @java.lang.Override
        @java.lang.Deprecated
        public java.util.Map<java.lang.String, com.google.protobuf.Any> getCapabilities() {
            return getCapabilitiesMap();
        }

        /**
         * <code>map&lt;string, .google.protobuf.Any&gt; capabilities = 6;</code>
         */
        @java.lang.Override
        public java.util.Map<java.lang.String, com.google.protobuf.Any> getCapabilitiesMap() {
            return internalGetCapabilities().getMap();
        }

        /**
         * <code>map&lt;string, .google.protobuf.Any&gt; capabilities = 6;</code>
         */
        @java.lang.Override
        public /* nullable */
        com.google.protobuf.Any getCapabilitiesOrDefault(java.lang.String key, /* nullable */
        com.google.protobuf.Any defaultValue) {
            if (key == null) {
                throw new NullPointerException("map key");
            }
            java.util.Map<java.lang.String, com.google.protobuf.Any> map = internalGetCapabilities().getMap();
            return map.containsKey(key) ? map.get(key) : defaultValue;
        }

        /**
         * <code>map&lt;string, .google.protobuf.Any&gt; capabilities = 6;</code>
         */
        @java.lang.Override
        public com.google.protobuf.Any getCapabilitiesOrThrow(java.lang.String key) {
            if (key == null) {
                throw new NullPointerException("map key");
            }
            java.util.Map<java.lang.String, com.google.protobuf.Any> map = internalGetCapabilities().getMap();
            if (!map.containsKey(key)) {
                throw new java.lang.IllegalArgumentException();
            }
            return map.get(key);
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            getSerializedSize();
            if (endpointId_ != null) {
                output.writeMessage(1, getEndpointId());
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(endpointType_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 3, endpointType_);
            }
            if (getKpiSampleTypesList().size() > 0) {
                output.writeUInt32NoTag(34);
                output.writeUInt32NoTag(kpiSampleTypesMemoizedSerializedSize);
            }
            for (int i = 0; i < kpiSampleTypes_.size(); i++) {
                output.writeEnumNoTag(kpiSampleTypes_.get(i));
            }
            if (endpointLocation_ != null) {
                output.writeMessage(5, getEndpointLocation());
            }
            com.google.protobuf.GeneratedMessageV3.serializeStringMapTo(output, internalGetCapabilities(), CapabilitiesDefaultEntryHolder.defaultEntry, 6);
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            if (endpointId_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getEndpointId());
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(endpointType_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, endpointType_);
            }
            {
                int dataSize = 0;
                for (int i = 0; i < kpiSampleTypes_.size(); i++) {
                    dataSize += com.google.protobuf.CodedOutputStream.computeEnumSizeNoTag(kpiSampleTypes_.get(i));
                }
                size += dataSize;
                if (!getKpiSampleTypesList().isEmpty()) {
                    size += 1;
                    size += com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(dataSize);
                }
                kpiSampleTypesMemoizedSerializedSize = dataSize;
            }
            if (endpointLocation_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(5, getEndpointLocation());
            }
            for (java.util.Map.Entry<java.lang.String, com.google.protobuf.Any> entry : internalGetCapabilities().getMap().entrySet()) {
                com.google.protobuf.MapEntry<java.lang.String, com.google.protobuf.Any> capabilities__ = CapabilitiesDefaultEntryHolder.defaultEntry.newBuilderForType().setKey(entry.getKey()).setValue(entry.getValue()).build();
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(6, capabilities__);
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.EndPoint)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.EndPoint other = (context.ContextOuterClass.EndPoint) obj;
            if (hasEndpointId() != other.hasEndpointId())
                return false;
            if (hasEndpointId()) {
                if (!getEndpointId().equals(other.getEndpointId()))
                    return false;
            }
            if (!getName().equals(other.getName()))
                return false;
            if (!getEndpointType().equals(other.getEndpointType()))
                return false;
            if (!kpiSampleTypes_.equals(other.kpiSampleTypes_))
                return false;
            if (hasEndpointLocation() != other.hasEndpointLocation())
                return false;
            if (hasEndpointLocation()) {
                if (!getEndpointLocation().equals(other.getEndpointLocation()))
                    return false;
            }
            if (!internalGetCapabilities().equals(other.internalGetCapabilities()))
                return false;
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            if (hasEndpointId()) {
                hash = (37 * hash) + ENDPOINT_ID_FIELD_NUMBER;
                hash = (53 * hash) + getEndpointId().hashCode();
            }
            hash = (37 * hash) + NAME_FIELD_NUMBER;
            hash = (53 * hash) + getName().hashCode();
            hash = (37 * hash) + ENDPOINT_TYPE_FIELD_NUMBER;
            hash = (53 * hash) + getEndpointType().hashCode();
            if (getKpiSampleTypesCount() > 0) {
                hash = (37 * hash) + KPI_SAMPLE_TYPES_FIELD_NUMBER;
                hash = (53 * hash) + kpiSampleTypes_.hashCode();
            }
            if (hasEndpointLocation()) {
                hash = (37 * hash) + ENDPOINT_LOCATION_FIELD_NUMBER;
                hash = (53 * hash) + getEndpointLocation().hashCode();
            }
            if (!internalGetCapabilities().getMap().isEmpty()) {
                hash = (37 * hash) + CAPABILITIES_FIELD_NUMBER;
                hash = (53 * hash) + internalGetCapabilities().hashCode();
            }
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.EndPoint parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.EndPoint parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.EndPoint parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.EndPoint parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.EndPoint parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.EndPoint parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.EndPoint parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.EndPoint parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.EndPoint parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.EndPoint parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.EndPoint parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.EndPoint parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.EndPoint prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code context.EndPoint}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.EndPoint)
        context.ContextOuterClass.EndPointOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_EndPoint_descriptor;
            }

            @SuppressWarnings({ "rawtypes" })
            protected com.google.protobuf.MapField internalGetMapField(int number) {
                switch(number) {
                    case 6:
                        return internalGetCapabilities();
                    default:
                        throw new RuntimeException("Invalid map field number: " + number);
                }
            }

            @SuppressWarnings({ "rawtypes" })
            protected com.google.protobuf.MapField internalGetMutableMapField(int number) {
                switch(number) {
                    case 6:
                        return internalGetMutableCapabilities();
                    default:
                        throw new RuntimeException("Invalid map field number: " + number);
                }
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_EndPoint_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.EndPoint.class, context.ContextOuterClass.EndPoint.Builder.class);
            }

            // Construct using context.ContextOuterClass.EndPoint.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                endpointId_ = null;
                if (endpointIdBuilder_ != null) {
                    endpointIdBuilder_.dispose();
                    endpointIdBuilder_ = null;
                }
                name_ = "";
                endpointType_ = "";
                kpiSampleTypes_ = java.util.Collections.emptyList();
                bitField0_ = (bitField0_ & ~0x00000008);
                endpointLocation_ = null;
                if (endpointLocationBuilder_ != null) {
                    endpointLocationBuilder_.dispose();
                    endpointLocationBuilder_ = null;
                }
                internalGetMutableCapabilities().clear();
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_EndPoint_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.EndPoint getDefaultInstanceForType() {
                return context.ContextOuterClass.EndPoint.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.EndPoint build() {
                context.ContextOuterClass.EndPoint result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.EndPoint buildPartial() {
                context.ContextOuterClass.EndPoint result = new context.ContextOuterClass.EndPoint(this);
                buildPartialRepeatedFields(result);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartialRepeatedFields(context.ContextOuterClass.EndPoint result) {
                if (((bitField0_ & 0x00000008) != 0)) {
                    kpiSampleTypes_ = java.util.Collections.unmodifiableList(kpiSampleTypes_);
                    bitField0_ = (bitField0_ & ~0x00000008);
                }
                result.kpiSampleTypes_ = kpiSampleTypes_;
            }

            private void buildPartial0(context.ContextOuterClass.EndPoint result) {
                int from_bitField0_ = bitField0_;
                if (((from_bitField0_ & 0x00000001) != 0)) {
                    result.endpointId_ = endpointIdBuilder_ == null ? endpointId_ : endpointIdBuilder_.build();
                }
                if (((from_bitField0_ & 0x00000002) != 0)) {
                    result.name_ = name_;
                }
                if (((from_bitField0_ & 0x00000004) != 0)) {
                    result.endpointType_ = endpointType_;
                }
                if (((from_bitField0_ & 0x00000010) != 0)) {
                    result.endpointLocation_ = endpointLocationBuilder_ == null ? endpointLocation_ : endpointLocationBuilder_.build();
                }
                if (((from_bitField0_ & 0x00000020) != 0)) {
                    result.capabilities_ = internalGetCapabilities();
                    result.capabilities_.makeImmutable();
                }
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.EndPoint) {
                    return mergeFrom((context.ContextOuterClass.EndPoint) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.EndPoint other) {
                if (other == context.ContextOuterClass.EndPoint.getDefaultInstance())
                    return this;
                if (other.hasEndpointId()) {
                    mergeEndpointId(other.getEndpointId());
                }
                if (!other.getName().isEmpty()) {
                    name_ = other.name_;
                    bitField0_ |= 0x00000002;
                    onChanged();
                }
                if (!other.getEndpointType().isEmpty()) {
                    endpointType_ = other.endpointType_;
                    bitField0_ |= 0x00000004;
                    onChanged();
                }
                if (!other.kpiSampleTypes_.isEmpty()) {
                    if (kpiSampleTypes_.isEmpty()) {
                        kpiSampleTypes_ = other.kpiSampleTypes_;
                        bitField0_ = (bitField0_ & ~0x00000008);
                    } else {
                        ensureKpiSampleTypesIsMutable();
                        kpiSampleTypes_.addAll(other.kpiSampleTypes_);
                    }
                    onChanged();
                }
                if (other.hasEndpointLocation()) {
                    mergeEndpointLocation(other.getEndpointLocation());
                }
                internalGetMutableCapabilities().mergeFrom(other.internalGetCapabilities());
                bitField0_ |= 0x00000020;
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 10:
                                {
                                    input.readMessage(getEndpointIdFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000001;
                                    break;
                                }
                            // case 10
                            case 18:
                                {
                                    name_ = input.readStringRequireUtf8();
                                    bitField0_ |= 0x00000002;
                                    break;
                                }
                            // case 18
                            case 26:
                                {
                                    endpointType_ = input.readStringRequireUtf8();
                                    bitField0_ |= 0x00000004;
                                    break;
                                }
                            // case 26
                            case 32:
                                {
                                    int tmpRaw = input.readEnum();
                                    ensureKpiSampleTypesIsMutable();
                                    kpiSampleTypes_.add(tmpRaw);
                                    break;
                                }
                            // case 32
                            case 34:
                                {
                                    int length = input.readRawVarint32();
                                    int oldLimit = input.pushLimit(length);
                                    while (input.getBytesUntilLimit() > 0) {
                                        int tmpRaw = input.readEnum();
                                        ensureKpiSampleTypesIsMutable();
                                        kpiSampleTypes_.add(tmpRaw);
                                    }
                                    input.popLimit(oldLimit);
                                    break;
                                }
                            // case 34
                            case 42:
                                {
                                    input.readMessage(getEndpointLocationFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000010;
                                    break;
                                }
                            // case 42
                            case 50:
                                {
                                    com.google.protobuf.MapEntry<java.lang.String, com.google.protobuf.Any> capabilities__ = input.readMessage(CapabilitiesDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                                    internalGetMutableCapabilities().getMutableMap().put(capabilities__.getKey(), capabilities__.getValue());
                                    bitField0_ |= 0x00000020;
                                    break;
                                }
                            // case 50
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private context.ContextOuterClass.EndPointId endpointId_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> endpointIdBuilder_;

            /**
             * <code>.context.EndPointId endpoint_id = 1;</code>
             * @return Whether the endpointId field is set.
             */
            public boolean hasEndpointId() {
                return ((bitField0_ & 0x00000001) != 0);
            }

            /**
             * <code>.context.EndPointId endpoint_id = 1;</code>
             * @return The endpointId.
             */
            public context.ContextOuterClass.EndPointId getEndpointId() {
                if (endpointIdBuilder_ == null) {
                    return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
                } else {
                    return endpointIdBuilder_.getMessage();
                }
            }

            /**
             * <code>.context.EndPointId endpoint_id = 1;</code>
             */
            public Builder setEndpointId(context.ContextOuterClass.EndPointId value) {
                if (endpointIdBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    endpointId_ = value;
                } else {
                    endpointIdBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.EndPointId endpoint_id = 1;</code>
             */
            public Builder setEndpointId(context.ContextOuterClass.EndPointId.Builder builderForValue) {
                if (endpointIdBuilder_ == null) {
                    endpointId_ = builderForValue.build();
                } else {
                    endpointIdBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.EndPointId endpoint_id = 1;</code>
             */
            public Builder mergeEndpointId(context.ContextOuterClass.EndPointId value) {
                if (endpointIdBuilder_ == null) {
                    if (((bitField0_ & 0x00000001) != 0) && endpointId_ != null && endpointId_ != context.ContextOuterClass.EndPointId.getDefaultInstance()) {
                        getEndpointIdBuilder().mergeFrom(value);
                    } else {
                        endpointId_ = value;
                    }
                } else {
                    endpointIdBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.EndPointId endpoint_id = 1;</code>
             */
            public Builder clearEndpointId() {
                bitField0_ = (bitField0_ & ~0x00000001);
                endpointId_ = null;
                if (endpointIdBuilder_ != null) {
                    endpointIdBuilder_.dispose();
                    endpointIdBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.EndPointId endpoint_id = 1;</code>
             */
            public context.ContextOuterClass.EndPointId.Builder getEndpointIdBuilder() {
                bitField0_ |= 0x00000001;
                onChanged();
                return getEndpointIdFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.EndPointId endpoint_id = 1;</code>
             */
            public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder() {
                if (endpointIdBuilder_ != null) {
                    return endpointIdBuilder_.getMessageOrBuilder();
                } else {
                    return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
                }
            }

            /**
             * <code>.context.EndPointId endpoint_id = 1;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> getEndpointIdFieldBuilder() {
                if (endpointIdBuilder_ == null) {
                    endpointIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder>(getEndpointId(), getParentForChildren(), isClean());
                    endpointId_ = null;
                }
                return endpointIdBuilder_;
            }

            private java.lang.Object name_ = "";

            /**
             * <code>string name = 2;</code>
             * @return The name.
             */
            public java.lang.String getName() {
                java.lang.Object ref = name_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    name_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }

            /**
             * <code>string name = 2;</code>
             * @return The bytes for name.
             */
            public com.google.protobuf.ByteString getNameBytes() {
                java.lang.Object ref = name_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                    name_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }

            /**
             * <code>string name = 2;</code>
             * @param value The name to set.
             * @return This builder for chaining.
             */
            public Builder setName(java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                name_ = value;
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>string name = 2;</code>
             * @return This builder for chaining.
             */
            public Builder clearName() {
                name_ = getDefaultInstance().getName();
                bitField0_ = (bitField0_ & ~0x00000002);
                onChanged();
                return this;
            }

            /**
             * <code>string name = 2;</code>
             * @param value The bytes for name to set.
             * @return This builder for chaining.
             */
            public Builder setNameBytes(com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);
                name_ = value;
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            private java.lang.Object endpointType_ = "";

            /**
             * <code>string endpoint_type = 3;</code>
             * @return The endpointType.
             */
            public java.lang.String getEndpointType() {
                java.lang.Object ref = endpointType_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    endpointType_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }

            /**
             * <code>string endpoint_type = 3;</code>
             * @return The bytes for endpointType.
             */
            public com.google.protobuf.ByteString getEndpointTypeBytes() {
                java.lang.Object ref = endpointType_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                    endpointType_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }

            /**
             * <code>string endpoint_type = 3;</code>
             * @param value The endpointType to set.
             * @return This builder for chaining.
             */
            public Builder setEndpointType(java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                endpointType_ = value;
                bitField0_ |= 0x00000004;
                onChanged();
                return this;
            }

            /**
             * <code>string endpoint_type = 3;</code>
             * @return This builder for chaining.
             */
            public Builder clearEndpointType() {
                endpointType_ = getDefaultInstance().getEndpointType();
                bitField0_ = (bitField0_ & ~0x00000004);
                onChanged();
                return this;
            }

            /**
             * <code>string endpoint_type = 3;</code>
             * @param value The bytes for endpointType to set.
             * @return This builder for chaining.
             */
            public Builder setEndpointTypeBytes(com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);
                endpointType_ = value;
                bitField0_ |= 0x00000004;
                onChanged();
                return this;
            }

            private java.util.List<java.lang.Integer> kpiSampleTypes_ = java.util.Collections.emptyList();

            private void ensureKpiSampleTypesIsMutable() {
                if (!((bitField0_ & 0x00000008) != 0)) {
                    kpiSampleTypes_ = new java.util.ArrayList<java.lang.Integer>(kpiSampleTypes_);
                    bitField0_ |= 0x00000008;
                }
            }

            /**
             * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
             * @return A list containing the kpiSampleTypes.
             */
            public java.util.List<kpi_sample_types.KpiSampleTypes.KpiSampleType> getKpiSampleTypesList() {
                return new com.google.protobuf.Internal.ListAdapter<java.lang.Integer, kpi_sample_types.KpiSampleTypes.KpiSampleType>(kpiSampleTypes_, kpiSampleTypes_converter_);
            }

            /**
             * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
             * @return The count of kpiSampleTypes.
             */
            public int getKpiSampleTypesCount() {
                return kpiSampleTypes_.size();
            }

            /**
             * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
             * @param index The index of the element to return.
             * @return The kpiSampleTypes at the given index.
             */
            public kpi_sample_types.KpiSampleTypes.KpiSampleType getKpiSampleTypes(int index) {
                return kpiSampleTypes_converter_.convert(kpiSampleTypes_.get(index));
            }

            /**
             * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
             * @param index The index to set the value at.
             * @param value The kpiSampleTypes to set.
             * @return This builder for chaining.
             */
            public Builder setKpiSampleTypes(int index, kpi_sample_types.KpiSampleTypes.KpiSampleType value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                ensureKpiSampleTypesIsMutable();
                kpiSampleTypes_.set(index, value.getNumber());
                onChanged();
                return this;
            }

            /**
             * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
             * @param value The kpiSampleTypes to add.
             * @return This builder for chaining.
             */
            public Builder addKpiSampleTypes(kpi_sample_types.KpiSampleTypes.KpiSampleType value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                ensureKpiSampleTypesIsMutable();
                kpiSampleTypes_.add(value.getNumber());
                onChanged();
                return this;
            }

            /**
             * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
             * @param values The kpiSampleTypes to add.
             * @return This builder for chaining.
             */
            public Builder addAllKpiSampleTypes(java.lang.Iterable<? extends kpi_sample_types.KpiSampleTypes.KpiSampleType> values) {
                ensureKpiSampleTypesIsMutable();
                for (kpi_sample_types.KpiSampleTypes.KpiSampleType value : values) {
                    kpiSampleTypes_.add(value.getNumber());
                }
                onChanged();
                return this;
            }

            /**
             * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
             * @return This builder for chaining.
             */
            public Builder clearKpiSampleTypes() {
                kpiSampleTypes_ = java.util.Collections.emptyList();
                bitField0_ = (bitField0_ & ~0x00000008);
                onChanged();
                return this;
            }

            /**
             * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
             * @return A list containing the enum numeric values on the wire for kpiSampleTypes.
             */
            public java.util.List<java.lang.Integer> getKpiSampleTypesValueList() {
                return java.util.Collections.unmodifiableList(kpiSampleTypes_);
            }

            /**
             * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
             * @param index The index of the value to return.
             * @return The enum numeric value on the wire of kpiSampleTypes at the given index.
             */
            public int getKpiSampleTypesValue(int index) {
                return kpiSampleTypes_.get(index);
            }

            /**
             * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
             * @param index The index to set the value at.
             * @param value The enum numeric value on the wire for kpiSampleTypes to set.
             * @return This builder for chaining.
             */
            public Builder setKpiSampleTypesValue(int index, int value) {
                ensureKpiSampleTypesIsMutable();
                kpiSampleTypes_.set(index, value);
                onChanged();
                return this;
            }

            /**
             * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
             * @param value The enum numeric value on the wire for kpiSampleTypes to add.
             * @return This builder for chaining.
             */
            public Builder addKpiSampleTypesValue(int value) {
                ensureKpiSampleTypesIsMutable();
                kpiSampleTypes_.add(value);
                onChanged();
                return this;
            }

            /**
             * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
             * @param values The enum numeric values on the wire for kpiSampleTypes to add.
             * @return This builder for chaining.
             */
            public Builder addAllKpiSampleTypesValue(java.lang.Iterable<java.lang.Integer> values) {
                ensureKpiSampleTypesIsMutable();
                for (int value : values) {
                    kpiSampleTypes_.add(value);
                }
                onChanged();
                return this;
            }

            private context.ContextOuterClass.Location endpointLocation_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Location, context.ContextOuterClass.Location.Builder, context.ContextOuterClass.LocationOrBuilder> endpointLocationBuilder_;

            /**
             * <code>.context.Location endpoint_location = 5;</code>
             * @return Whether the endpointLocation field is set.
             */
            public boolean hasEndpointLocation() {
                return ((bitField0_ & 0x00000010) != 0);
            }

            /**
             * <code>.context.Location endpoint_location = 5;</code>
             * @return The endpointLocation.
             */
            public context.ContextOuterClass.Location getEndpointLocation() {
                if (endpointLocationBuilder_ == null) {
                    return endpointLocation_ == null ? context.ContextOuterClass.Location.getDefaultInstance() : endpointLocation_;
                } else {
                    return endpointLocationBuilder_.getMessage();
                }
            }

            /**
             * <code>.context.Location endpoint_location = 5;</code>
             */
            public Builder setEndpointLocation(context.ContextOuterClass.Location value) {
                if (endpointLocationBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    endpointLocation_ = value;
                } else {
                    endpointLocationBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000010;
                onChanged();
                return this;
            }

            /**
             * <code>.context.Location endpoint_location = 5;</code>
             */
            public Builder setEndpointLocation(context.ContextOuterClass.Location.Builder builderForValue) {
                if (endpointLocationBuilder_ == null) {
                    endpointLocation_ = builderForValue.build();
                } else {
                    endpointLocationBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000010;
                onChanged();
                return this;
            }

            /**
             * <code>.context.Location endpoint_location = 5;</code>
             */
            public Builder mergeEndpointLocation(context.ContextOuterClass.Location value) {
                if (endpointLocationBuilder_ == null) {
                    if (((bitField0_ & 0x00000010) != 0) && endpointLocation_ != null && endpointLocation_ != context.ContextOuterClass.Location.getDefaultInstance()) {
                        getEndpointLocationBuilder().mergeFrom(value);
                    } else {
                        endpointLocation_ = value;
                    }
                } else {
                    endpointLocationBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000010;
                onChanged();
                return this;
            }

            /**
             * <code>.context.Location endpoint_location = 5;</code>
             */
            public Builder clearEndpointLocation() {
                bitField0_ = (bitField0_ & ~0x00000010);
                endpointLocation_ = null;
                if (endpointLocationBuilder_ != null) {
                    endpointLocationBuilder_.dispose();
                    endpointLocationBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.Location endpoint_location = 5;</code>
             */
            public context.ContextOuterClass.Location.Builder getEndpointLocationBuilder() {
                bitField0_ |= 0x00000010;
                onChanged();
                return getEndpointLocationFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.Location endpoint_location = 5;</code>
             */
            public context.ContextOuterClass.LocationOrBuilder getEndpointLocationOrBuilder() {
                if (endpointLocationBuilder_ != null) {
                    return endpointLocationBuilder_.getMessageOrBuilder();
                } else {
                    return endpointLocation_ == null ? context.ContextOuterClass.Location.getDefaultInstance() : endpointLocation_;
                }
            }

            /**
             * <code>.context.Location endpoint_location = 5;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Location, context.ContextOuterClass.Location.Builder, context.ContextOuterClass.LocationOrBuilder> getEndpointLocationFieldBuilder() {
                if (endpointLocationBuilder_ == null) {
                    endpointLocationBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Location, context.ContextOuterClass.Location.Builder, context.ContextOuterClass.LocationOrBuilder>(getEndpointLocation(), getParentForChildren(), isClean());
                    endpointLocation_ = null;
                }
                return endpointLocationBuilder_;
            }

            private com.google.protobuf.MapField<java.lang.String, com.google.protobuf.Any> capabilities_;

            private com.google.protobuf.MapField<java.lang.String, com.google.protobuf.Any> internalGetCapabilities() {
                if (capabilities_ == null) {
                    return com.google.protobuf.MapField.emptyMapField(CapabilitiesDefaultEntryHolder.defaultEntry);
                }
                return capabilities_;
            }

            private com.google.protobuf.MapField<java.lang.String, com.google.protobuf.Any> internalGetMutableCapabilities() {
                if (capabilities_ == null) {
                    capabilities_ = com.google.protobuf.MapField.newMapField(CapabilitiesDefaultEntryHolder.defaultEntry);
                }
                if (!capabilities_.isMutable()) {
                    capabilities_ = capabilities_.copy();
                }
                bitField0_ |= 0x00000020;
                onChanged();
                return capabilities_;
            }

            public int getCapabilitiesCount() {
                return internalGetCapabilities().getMap().size();
            }

            /**
             * <code>map&lt;string, .google.protobuf.Any&gt; capabilities = 6;</code>
             */
            @java.lang.Override
            public boolean containsCapabilities(java.lang.String key) {
                if (key == null) {
                    throw new NullPointerException("map key");
                }
                return internalGetCapabilities().getMap().containsKey(key);
            }

            /**
             * Use {@link #getCapabilitiesMap()} instead.
             */
            @java.lang.Override
            @java.lang.Deprecated
            public java.util.Map<java.lang.String, com.google.protobuf.Any> getCapabilities() {
                return getCapabilitiesMap();
            }

            /**
             * <code>map&lt;string, .google.protobuf.Any&gt; capabilities = 6;</code>
             */
            @java.lang.Override
            public java.util.Map<java.lang.String, com.google.protobuf.Any> getCapabilitiesMap() {
                return internalGetCapabilities().getMap();
            }

            /**
             * <code>map&lt;string, .google.protobuf.Any&gt; capabilities = 6;</code>
             */
            @java.lang.Override
            public /* nullable */
            com.google.protobuf.Any getCapabilitiesOrDefault(java.lang.String key, /* nullable */
            com.google.protobuf.Any defaultValue) {
                if (key == null) {
                    throw new NullPointerException("map key");
                }
                java.util.Map<java.lang.String, com.google.protobuf.Any> map = internalGetCapabilities().getMap();
                return map.containsKey(key) ? map.get(key) : defaultValue;
            }

            /**
             * <code>map&lt;string, .google.protobuf.Any&gt; capabilities = 6;</code>
             */
            @java.lang.Override
            public com.google.protobuf.Any getCapabilitiesOrThrow(java.lang.String key) {
                if (key == null) {
                    throw new NullPointerException("map key");
                }
                java.util.Map<java.lang.String, com.google.protobuf.Any> map = internalGetCapabilities().getMap();
                if (!map.containsKey(key)) {
                    throw new java.lang.IllegalArgumentException();
                }
                return map.get(key);
            }

            public Builder clearCapabilities() {
                bitField0_ = (bitField0_ & ~0x00000020);
                internalGetMutableCapabilities().getMutableMap().clear();
                return this;
            }

            /**
             * <code>map&lt;string, .google.protobuf.Any&gt; capabilities = 6;</code>
             */
            public Builder removeCapabilities(java.lang.String key) {
                if (key == null) {
                    throw new NullPointerException("map key");
                }
                internalGetMutableCapabilities().getMutableMap().remove(key);
                return this;
            }

            /**
             * Use alternate mutation accessors instead.
             */
            @java.lang.Deprecated
            public java.util.Map<java.lang.String, com.google.protobuf.Any> getMutableCapabilities() {
                bitField0_ |= 0x00000020;
                return internalGetMutableCapabilities().getMutableMap();
            }

            /**
             * <code>map&lt;string, .google.protobuf.Any&gt; capabilities = 6;</code>
             */
            public Builder putCapabilities(java.lang.String key, com.google.protobuf.Any value) {
                if (key == null) {
                    throw new NullPointerException("map key");
                }
                if (value == null) {
                    throw new NullPointerException("map value");
                }
                internalGetMutableCapabilities().getMutableMap().put(key, value);
                bitField0_ |= 0x00000020;
                return this;
            }

            /**
             * <code>map&lt;string, .google.protobuf.Any&gt; capabilities = 6;</code>
             */
            public Builder putAllCapabilities(java.util.Map<java.lang.String, com.google.protobuf.Any> values) {
                internalGetMutableCapabilities().getMutableMap().putAll(values);
                bitField0_ |= 0x00000020;
                return this;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.EndPoint)
        }

        // @@protoc_insertion_point(class_scope:context.EndPoint)
        private static final context.ContextOuterClass.EndPoint DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.EndPoint();
        }

        public static context.ContextOuterClass.EndPoint getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<EndPoint> PARSER = new com.google.protobuf.AbstractParser<EndPoint>() {

            @java.lang.Override
            public EndPoint parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<EndPoint> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<EndPoint> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.EndPoint getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface EndPointNameOrBuilder extends // @@protoc_insertion_point(interface_extends:context.EndPointName)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>.context.EndPointId endpoint_id = 1;</code>
         * @return Whether the endpointId field is set.
         */
        boolean hasEndpointId();

        /**
         * <code>.context.EndPointId endpoint_id = 1;</code>
         * @return The endpointId.
         */
        context.ContextOuterClass.EndPointId getEndpointId();

        /**
         * <code>.context.EndPointId endpoint_id = 1;</code>
         */
        context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder();

        /**
         * <code>string device_name = 2;</code>
         * @return The deviceName.
         */
        java.lang.String getDeviceName();

        /**
         * <code>string device_name = 2;</code>
         * @return The bytes for deviceName.
         */
        com.google.protobuf.ByteString getDeviceNameBytes();

        /**
         * <code>string endpoint_name = 3;</code>
         * @return The endpointName.
         */
        java.lang.String getEndpointName();

        /**
         * <code>string endpoint_name = 3;</code>
         * @return The bytes for endpointName.
         */
        com.google.protobuf.ByteString getEndpointNameBytes();

        /**
         * <code>string endpoint_type = 4;</code>
         * @return The endpointType.
         */
        java.lang.String getEndpointType();

        /**
         * <code>string endpoint_type = 4;</code>
         * @return The bytes for endpointType.
         */
        com.google.protobuf.ByteString getEndpointTypeBytes();
    }

    /**
     * Protobuf type {@code context.EndPointName}
     */
    public static final class EndPointName extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.EndPointName)
    EndPointNameOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use EndPointName.newBuilder() to construct.
        private EndPointName(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private EndPointName() {
            deviceName_ = "";
            endpointName_ = "";
            endpointType_ = "";
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new EndPointName();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_EndPointName_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_EndPointName_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.EndPointName.class, context.ContextOuterClass.EndPointName.Builder.class);
        }

        public static final int ENDPOINT_ID_FIELD_NUMBER = 1;

        private context.ContextOuterClass.EndPointId endpointId_;

        /**
         * <code>.context.EndPointId endpoint_id = 1;</code>
         * @return Whether the endpointId field is set.
         */
        @java.lang.Override
        public boolean hasEndpointId() {
            return endpointId_ != null;
        }

        /**
         * <code>.context.EndPointId endpoint_id = 1;</code>
         * @return The endpointId.
         */
        @java.lang.Override
        public context.ContextOuterClass.EndPointId getEndpointId() {
            return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
        }

        /**
         * <code>.context.EndPointId endpoint_id = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder() {
            return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
        }

        public static final int DEVICE_NAME_FIELD_NUMBER = 2;

        @SuppressWarnings("serial")
        private volatile java.lang.Object deviceName_ = "";

        /**
         * <code>string device_name = 2;</code>
         * @return The deviceName.
         */
        @java.lang.Override
        public java.lang.String getDeviceName() {
            java.lang.Object ref = deviceName_;
            if (ref instanceof java.lang.String) {
                return (java.lang.String) ref;
            } else {
                com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                java.lang.String s = bs.toStringUtf8();
                deviceName_ = s;
                return s;
            }
        }

        /**
         * <code>string device_name = 2;</code>
         * @return The bytes for deviceName.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString getDeviceNameBytes() {
            java.lang.Object ref = deviceName_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                deviceName_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int ENDPOINT_NAME_FIELD_NUMBER = 3;

        @SuppressWarnings("serial")
        private volatile java.lang.Object endpointName_ = "";

        /**
         * <code>string endpoint_name = 3;</code>
         * @return The endpointName.
         */
        @java.lang.Override
        public java.lang.String getEndpointName() {
            java.lang.Object ref = endpointName_;
            if (ref instanceof java.lang.String) {
                return (java.lang.String) ref;
            } else {
                com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                java.lang.String s = bs.toStringUtf8();
                endpointName_ = s;
                return s;
            }
        }

        /**
         * <code>string endpoint_name = 3;</code>
         * @return The bytes for endpointName.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString getEndpointNameBytes() {
            java.lang.Object ref = endpointName_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                endpointName_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int ENDPOINT_TYPE_FIELD_NUMBER = 4;

        @SuppressWarnings("serial")
        private volatile java.lang.Object endpointType_ = "";

        /**
         * <code>string endpoint_type = 4;</code>
         * @return The endpointType.
         */
        @java.lang.Override
        public java.lang.String getEndpointType() {
            java.lang.Object ref = endpointType_;
            if (ref instanceof java.lang.String) {
                return (java.lang.String) ref;
            } else {
                com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                java.lang.String s = bs.toStringUtf8();
                endpointType_ = s;
                return s;
            }
        }

        /**
         * <code>string endpoint_type = 4;</code>
         * @return The bytes for endpointType.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString getEndpointTypeBytes() {
            java.lang.Object ref = endpointType_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                endpointType_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            if (endpointId_ != null) {
                output.writeMessage(1, getEndpointId());
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(deviceName_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 2, deviceName_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(endpointName_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 3, endpointName_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(endpointType_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 4, endpointType_);
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            if (endpointId_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getEndpointId());
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(deviceName_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, deviceName_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(endpointName_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, endpointName_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(endpointType_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, endpointType_);
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.EndPointName)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.EndPointName other = (context.ContextOuterClass.EndPointName) obj;
            if (hasEndpointId() != other.hasEndpointId())
                return false;
            if (hasEndpointId()) {
                if (!getEndpointId().equals(other.getEndpointId()))
                    return false;
            }
            if (!getDeviceName().equals(other.getDeviceName()))
                return false;
            if (!getEndpointName().equals(other.getEndpointName()))
                return false;
            if (!getEndpointType().equals(other.getEndpointType()))
                return false;
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            if (hasEndpointId()) {
                hash = (37 * hash) + ENDPOINT_ID_FIELD_NUMBER;
                hash = (53 * hash) + getEndpointId().hashCode();
            }
            hash = (37 * hash) + DEVICE_NAME_FIELD_NUMBER;
            hash = (53 * hash) + getDeviceName().hashCode();
            hash = (37 * hash) + ENDPOINT_NAME_FIELD_NUMBER;
            hash = (53 * hash) + getEndpointName().hashCode();
            hash = (37 * hash) + ENDPOINT_TYPE_FIELD_NUMBER;
            hash = (53 * hash) + getEndpointType().hashCode();
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.EndPointName parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.EndPointName parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.EndPointName parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.EndPointName parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.EndPointName parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.EndPointName parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.EndPointName parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.EndPointName parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.EndPointName parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.EndPointName parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.EndPointName parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.EndPointName parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.EndPointName prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code context.EndPointName}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.EndPointName)
        context.ContextOuterClass.EndPointNameOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_EndPointName_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_EndPointName_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.EndPointName.class, context.ContextOuterClass.EndPointName.Builder.class);
            }

            // Construct using context.ContextOuterClass.EndPointName.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                endpointId_ = null;
                if (endpointIdBuilder_ != null) {
                    endpointIdBuilder_.dispose();
                    endpointIdBuilder_ = null;
                }
                deviceName_ = "";
                endpointName_ = "";
                endpointType_ = "";
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_EndPointName_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.EndPointName getDefaultInstanceForType() {
                return context.ContextOuterClass.EndPointName.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.EndPointName build() {
                context.ContextOuterClass.EndPointName result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.EndPointName buildPartial() {
                context.ContextOuterClass.EndPointName result = new context.ContextOuterClass.EndPointName(this);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartial0(context.ContextOuterClass.EndPointName result) {
                int from_bitField0_ = bitField0_;
                if (((from_bitField0_ & 0x00000001) != 0)) {
                    result.endpointId_ = endpointIdBuilder_ == null ? endpointId_ : endpointIdBuilder_.build();
                }
                if (((from_bitField0_ & 0x00000002) != 0)) {
                    result.deviceName_ = deviceName_;
                }
                if (((from_bitField0_ & 0x00000004) != 0)) {
                    result.endpointName_ = endpointName_;
                }
                if (((from_bitField0_ & 0x00000008) != 0)) {
                    result.endpointType_ = endpointType_;
                }
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.EndPointName) {
                    return mergeFrom((context.ContextOuterClass.EndPointName) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.EndPointName other) {
                if (other == context.ContextOuterClass.EndPointName.getDefaultInstance())
                    return this;
                if (other.hasEndpointId()) {
                    mergeEndpointId(other.getEndpointId());
                }
                if (!other.getDeviceName().isEmpty()) {
                    deviceName_ = other.deviceName_;
                    bitField0_ |= 0x00000002;
                    onChanged();
                }
                if (!other.getEndpointName().isEmpty()) {
                    endpointName_ = other.endpointName_;
                    bitField0_ |= 0x00000004;
                    onChanged();
                }
                if (!other.getEndpointType().isEmpty()) {
                    endpointType_ = other.endpointType_;
                    bitField0_ |= 0x00000008;
                    onChanged();
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 10:
                                {
                                    input.readMessage(getEndpointIdFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000001;
                                    break;
                                }
                            // case 10
                            case 18:
                                {
                                    deviceName_ = input.readStringRequireUtf8();
                                    bitField0_ |= 0x00000002;
                                    break;
                                }
                            // case 18
                            case 26:
                                {
                                    endpointName_ = input.readStringRequireUtf8();
                                    bitField0_ |= 0x00000004;
                                    break;
                                }
                            // case 26
                            case 34:
                                {
                                    endpointType_ = input.readStringRequireUtf8();
                                    bitField0_ |= 0x00000008;
                                    break;
                                }
                            // case 34
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private context.ContextOuterClass.EndPointId endpointId_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> endpointIdBuilder_;

            /**
             * <code>.context.EndPointId endpoint_id = 1;</code>
             * @return Whether the endpointId field is set.
             */
            public boolean hasEndpointId() {
                return ((bitField0_ & 0x00000001) != 0);
            }

            /**
             * <code>.context.EndPointId endpoint_id = 1;</code>
             * @return The endpointId.
             */
            public context.ContextOuterClass.EndPointId getEndpointId() {
                if (endpointIdBuilder_ == null) {
                    return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
                } else {
                    return endpointIdBuilder_.getMessage();
                }
            }

            /**
             * <code>.context.EndPointId endpoint_id = 1;</code>
             */
            public Builder setEndpointId(context.ContextOuterClass.EndPointId value) {
                if (endpointIdBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    endpointId_ = value;
                } else {
                    endpointIdBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.EndPointId endpoint_id = 1;</code>
             */
            public Builder setEndpointId(context.ContextOuterClass.EndPointId.Builder builderForValue) {
                if (endpointIdBuilder_ == null) {
                    endpointId_ = builderForValue.build();
                } else {
                    endpointIdBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.EndPointId endpoint_id = 1;</code>
             */
            public Builder mergeEndpointId(context.ContextOuterClass.EndPointId value) {
                if (endpointIdBuilder_ == null) {
                    if (((bitField0_ & 0x00000001) != 0) && endpointId_ != null && endpointId_ != context.ContextOuterClass.EndPointId.getDefaultInstance()) {
                        getEndpointIdBuilder().mergeFrom(value);
                    } else {
                        endpointId_ = value;
                    }
                } else {
                    endpointIdBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.EndPointId endpoint_id = 1;</code>
             */
            public Builder clearEndpointId() {
                bitField0_ = (bitField0_ & ~0x00000001);
                endpointId_ = null;
                if (endpointIdBuilder_ != null) {
                    endpointIdBuilder_.dispose();
                    endpointIdBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.EndPointId endpoint_id = 1;</code>
             */
            public context.ContextOuterClass.EndPointId.Builder getEndpointIdBuilder() {
                bitField0_ |= 0x00000001;
                onChanged();
                return getEndpointIdFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.EndPointId endpoint_id = 1;</code>
             */
            public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder() {
                if (endpointIdBuilder_ != null) {
                    return endpointIdBuilder_.getMessageOrBuilder();
                } else {
                    return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
                }
            }

            /**
             * <code>.context.EndPointId endpoint_id = 1;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> getEndpointIdFieldBuilder() {
                if (endpointIdBuilder_ == null) {
                    endpointIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder>(getEndpointId(), getParentForChildren(), isClean());
                    endpointId_ = null;
                }
                return endpointIdBuilder_;
            }

            private java.lang.Object deviceName_ = "";

            /**
             * <code>string device_name = 2;</code>
             * @return The deviceName.
             */
            public java.lang.String getDeviceName() {
                java.lang.Object ref = deviceName_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    deviceName_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }

            /**
             * <code>string device_name = 2;</code>
             * @return The bytes for deviceName.
             */
            public com.google.protobuf.ByteString getDeviceNameBytes() {
                java.lang.Object ref = deviceName_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                    deviceName_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }

            /**
             * <code>string device_name = 2;</code>
             * @param value The deviceName to set.
             * @return This builder for chaining.
             */
            public Builder setDeviceName(java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                deviceName_ = value;
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>string device_name = 2;</code>
             * @return This builder for chaining.
             */
            public Builder clearDeviceName() {
                deviceName_ = getDefaultInstance().getDeviceName();
                bitField0_ = (bitField0_ & ~0x00000002);
                onChanged();
                return this;
            }

            /**
             * <code>string device_name = 2;</code>
             * @param value The bytes for deviceName to set.
             * @return This builder for chaining.
             */
            public Builder setDeviceNameBytes(com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);
                deviceName_ = value;
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            private java.lang.Object endpointName_ = "";

            /**
             * <code>string endpoint_name = 3;</code>
             * @return The endpointName.
             */
            public java.lang.String getEndpointName() {
                java.lang.Object ref = endpointName_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    endpointName_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }

            /**
             * <code>string endpoint_name = 3;</code>
             * @return The bytes for endpointName.
             */
            public com.google.protobuf.ByteString getEndpointNameBytes() {
                java.lang.Object ref = endpointName_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                    endpointName_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }

            /**
             * <code>string endpoint_name = 3;</code>
             * @param value The endpointName to set.
             * @return This builder for chaining.
             */
            public Builder setEndpointName(java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                endpointName_ = value;
                bitField0_ |= 0x00000004;
                onChanged();
                return this;
            }

            /**
             * <code>string endpoint_name = 3;</code>
             * @return This builder for chaining.
             */
            public Builder clearEndpointName() {
                endpointName_ = getDefaultInstance().getEndpointName();
                bitField0_ = (bitField0_ & ~0x00000004);
                onChanged();
                return this;
            }

            /**
             * <code>string endpoint_name = 3;</code>
             * @param value The bytes for endpointName to set.
             * @return This builder for chaining.
             */
            public Builder setEndpointNameBytes(com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);
                endpointName_ = value;
                bitField0_ |= 0x00000004;
                onChanged();
                return this;
            }

            private java.lang.Object endpointType_ = "";

            /**
             * <code>string endpoint_type = 4;</code>
             * @return The endpointType.
             */
            public java.lang.String getEndpointType() {
                java.lang.Object ref = endpointType_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    endpointType_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }

            /**
             * <code>string endpoint_type = 4;</code>
             * @return The bytes for endpointType.
             */
            public com.google.protobuf.ByteString getEndpointTypeBytes() {
                java.lang.Object ref = endpointType_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                    endpointType_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }

            /**
             * <code>string endpoint_type = 4;</code>
             * @param value The endpointType to set.
             * @return This builder for chaining.
             */
            public Builder setEndpointType(java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                endpointType_ = value;
                bitField0_ |= 0x00000008;
                onChanged();
                return this;
            }

            /**
             * <code>string endpoint_type = 4;</code>
             * @return This builder for chaining.
             */
            public Builder clearEndpointType() {
                endpointType_ = getDefaultInstance().getEndpointType();
                bitField0_ = (bitField0_ & ~0x00000008);
                onChanged();
                return this;
            }

            /**
             * <code>string endpoint_type = 4;</code>
             * @param value The bytes for endpointType to set.
             * @return This builder for chaining.
             */
            public Builder setEndpointTypeBytes(com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);
                endpointType_ = value;
                bitField0_ |= 0x00000008;
                onChanged();
                return this;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.EndPointName)
        }

        // @@protoc_insertion_point(class_scope:context.EndPointName)
        private static final context.ContextOuterClass.EndPointName DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.EndPointName();
        }

        public static context.ContextOuterClass.EndPointName getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<EndPointName> PARSER = new com.google.protobuf.AbstractParser<EndPointName>() {

            @java.lang.Override
            public EndPointName parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<EndPointName> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<EndPointName> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.EndPointName getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface EndPointIdListOrBuilder extends // @@protoc_insertion_point(interface_extends:context.EndPointIdList)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
         */
        java.util.List<context.ContextOuterClass.EndPointId> getEndpointIdsList();

        /**
         * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
         */
        context.ContextOuterClass.EndPointId getEndpointIds(int index);

        /**
         * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
         */
        int getEndpointIdsCount();

        /**
         * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
         */
        java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> getEndpointIdsOrBuilderList();

        /**
         * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
         */
        context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdsOrBuilder(int index);
    }

    /**
     * Protobuf type {@code context.EndPointIdList}
     */
    public static final class EndPointIdList extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.EndPointIdList)
    EndPointIdListOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use EndPointIdList.newBuilder() to construct.
        private EndPointIdList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private EndPointIdList() {
            endpointIds_ = java.util.Collections.emptyList();
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new EndPointIdList();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_EndPointIdList_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_EndPointIdList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.EndPointIdList.class, context.ContextOuterClass.EndPointIdList.Builder.class);
        }

        public static final int ENDPOINT_IDS_FIELD_NUMBER = 1;

        @SuppressWarnings("serial")
        private java.util.List<context.ContextOuterClass.EndPointId> endpointIds_;

        /**
         * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
         */
        @java.lang.Override
        public java.util.List<context.ContextOuterClass.EndPointId> getEndpointIdsList() {
            return endpointIds_;
        }

        /**
         * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
         */
        @java.lang.Override
        public java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> getEndpointIdsOrBuilderList() {
            return endpointIds_;
        }

        /**
         * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
         */
        @java.lang.Override
        public int getEndpointIdsCount() {
            return endpointIds_.size();
        }

        /**
         * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.EndPointId getEndpointIds(int index) {
            return endpointIds_.get(index);
        }

        /**
         * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdsOrBuilder(int index) {
            return endpointIds_.get(index);
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            for (int i = 0; i < endpointIds_.size(); i++) {
                output.writeMessage(1, endpointIds_.get(i));
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            for (int i = 0; i < endpointIds_.size(); i++) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, endpointIds_.get(i));
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.EndPointIdList)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.EndPointIdList other = (context.ContextOuterClass.EndPointIdList) obj;
            if (!getEndpointIdsList().equals(other.getEndpointIdsList()))
                return false;
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            if (getEndpointIdsCount() > 0) {
                hash = (37 * hash) + ENDPOINT_IDS_FIELD_NUMBER;
                hash = (53 * hash) + getEndpointIdsList().hashCode();
            }
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.EndPointIdList parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.EndPointIdList parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.EndPointIdList parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.EndPointIdList parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.EndPointIdList parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.EndPointIdList parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.EndPointIdList parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.EndPointIdList parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.EndPointIdList parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.EndPointIdList parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.EndPointIdList parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.EndPointIdList parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.EndPointIdList prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code context.EndPointIdList}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.EndPointIdList)
        context.ContextOuterClass.EndPointIdListOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_EndPointIdList_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_EndPointIdList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.EndPointIdList.class, context.ContextOuterClass.EndPointIdList.Builder.class);
            }

            // Construct using context.ContextOuterClass.EndPointIdList.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                if (endpointIdsBuilder_ == null) {
                    endpointIds_ = java.util.Collections.emptyList();
                } else {
                    endpointIds_ = null;
                    endpointIdsBuilder_.clear();
                }
                bitField0_ = (bitField0_ & ~0x00000001);
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_EndPointIdList_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.EndPointIdList getDefaultInstanceForType() {
                return context.ContextOuterClass.EndPointIdList.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.EndPointIdList build() {
                context.ContextOuterClass.EndPointIdList result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.EndPointIdList buildPartial() {
                context.ContextOuterClass.EndPointIdList result = new context.ContextOuterClass.EndPointIdList(this);
                buildPartialRepeatedFields(result);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartialRepeatedFields(context.ContextOuterClass.EndPointIdList result) {
                if (endpointIdsBuilder_ == null) {
                    if (((bitField0_ & 0x00000001) != 0)) {
                        endpointIds_ = java.util.Collections.unmodifiableList(endpointIds_);
                        bitField0_ = (bitField0_ & ~0x00000001);
                    }
                    result.endpointIds_ = endpointIds_;
                } else {
                    result.endpointIds_ = endpointIdsBuilder_.build();
                }
            }

            private void buildPartial0(context.ContextOuterClass.EndPointIdList result) {
                int from_bitField0_ = bitField0_;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.EndPointIdList) {
                    return mergeFrom((context.ContextOuterClass.EndPointIdList) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.EndPointIdList other) {
                if (other == context.ContextOuterClass.EndPointIdList.getDefaultInstance())
                    return this;
                if (endpointIdsBuilder_ == null) {
                    if (!other.endpointIds_.isEmpty()) {
                        if (endpointIds_.isEmpty()) {
                            endpointIds_ = other.endpointIds_;
                            bitField0_ = (bitField0_ & ~0x00000001);
                        } else {
                            ensureEndpointIdsIsMutable();
                            endpointIds_.addAll(other.endpointIds_);
                        }
                        onChanged();
                    }
                } else {
                    if (!other.endpointIds_.isEmpty()) {
                        if (endpointIdsBuilder_.isEmpty()) {
                            endpointIdsBuilder_.dispose();
                            endpointIdsBuilder_ = null;
                            endpointIds_ = other.endpointIds_;
                            bitField0_ = (bitField0_ & ~0x00000001);
                            endpointIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getEndpointIdsFieldBuilder() : null;
                        } else {
                            endpointIdsBuilder_.addAllMessages(other.endpointIds_);
                        }
                    }
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 10:
                                {
                                    context.ContextOuterClass.EndPointId m = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry);
                                    if (endpointIdsBuilder_ == null) {
                                        ensureEndpointIdsIsMutable();
                                        endpointIds_.add(m);
                                    } else {
                                        endpointIdsBuilder_.addMessage(m);
                                    }
                                    break;
                                }
                            // case 10
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private java.util.List<context.ContextOuterClass.EndPointId> endpointIds_ = java.util.Collections.emptyList();

            private void ensureEndpointIdsIsMutable() {
                if (!((bitField0_ & 0x00000001) != 0)) {
                    endpointIds_ = new java.util.ArrayList<context.ContextOuterClass.EndPointId>(endpointIds_);
                    bitField0_ |= 0x00000001;
                }
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> endpointIdsBuilder_;

            /**
             * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
             */
            public java.util.List<context.ContextOuterClass.EndPointId> getEndpointIdsList() {
                if (endpointIdsBuilder_ == null) {
                    return java.util.Collections.unmodifiableList(endpointIds_);
                } else {
                    return endpointIdsBuilder_.getMessageList();
                }
            }

            /**
             * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
             */
            public int getEndpointIdsCount() {
                if (endpointIdsBuilder_ == null) {
                    return endpointIds_.size();
                } else {
                    return endpointIdsBuilder_.getCount();
                }
            }

            /**
             * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
             */
            public context.ContextOuterClass.EndPointId getEndpointIds(int index) {
                if (endpointIdsBuilder_ == null) {
                    return endpointIds_.get(index);
                } else {
                    return endpointIdsBuilder_.getMessage(index);
                }
            }

            /**
             * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
             */
            public Builder setEndpointIds(int index, context.ContextOuterClass.EndPointId value) {
                if (endpointIdsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureEndpointIdsIsMutable();
                    endpointIds_.set(index, value);
                    onChanged();
                } else {
                    endpointIdsBuilder_.setMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
             */
            public Builder setEndpointIds(int index, context.ContextOuterClass.EndPointId.Builder builderForValue) {
                if (endpointIdsBuilder_ == null) {
                    ensureEndpointIdsIsMutable();
                    endpointIds_.set(index, builderForValue.build());
                    onChanged();
                } else {
                    endpointIdsBuilder_.setMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
             */
            public Builder addEndpointIds(context.ContextOuterClass.EndPointId value) {
                if (endpointIdsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureEndpointIdsIsMutable();
                    endpointIds_.add(value);
                    onChanged();
                } else {
                    endpointIdsBuilder_.addMessage(value);
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
             */
            public Builder addEndpointIds(int index, context.ContextOuterClass.EndPointId value) {
                if (endpointIdsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureEndpointIdsIsMutable();
                    endpointIds_.add(index, value);
                    onChanged();
                } else {
                    endpointIdsBuilder_.addMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
             */
            public Builder addEndpointIds(context.ContextOuterClass.EndPointId.Builder builderForValue) {
                if (endpointIdsBuilder_ == null) {
                    ensureEndpointIdsIsMutable();
                    endpointIds_.add(builderForValue.build());
                    onChanged();
                } else {
                    endpointIdsBuilder_.addMessage(builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
             */
            public Builder addEndpointIds(int index, context.ContextOuterClass.EndPointId.Builder builderForValue) {
                if (endpointIdsBuilder_ == null) {
                    ensureEndpointIdsIsMutable();
                    endpointIds_.add(index, builderForValue.build());
                    onChanged();
                } else {
                    endpointIdsBuilder_.addMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
             */
            public Builder addAllEndpointIds(java.lang.Iterable<? extends context.ContextOuterClass.EndPointId> values) {
                if (endpointIdsBuilder_ == null) {
                    ensureEndpointIdsIsMutable();
                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, endpointIds_);
                    onChanged();
                } else {
                    endpointIdsBuilder_.addAllMessages(values);
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
             */
            public Builder clearEndpointIds() {
                if (endpointIdsBuilder_ == null) {
                    endpointIds_ = java.util.Collections.emptyList();
                    bitField0_ = (bitField0_ & ~0x00000001);
                    onChanged();
                } else {
                    endpointIdsBuilder_.clear();
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
             */
            public Builder removeEndpointIds(int index) {
                if (endpointIdsBuilder_ == null) {
                    ensureEndpointIdsIsMutable();
                    endpointIds_.remove(index);
                    onChanged();
                } else {
                    endpointIdsBuilder_.remove(index);
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
             */
            public context.ContextOuterClass.EndPointId.Builder getEndpointIdsBuilder(int index) {
                return getEndpointIdsFieldBuilder().getBuilder(index);
            }

            /**
             * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
             */
            public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdsOrBuilder(int index) {
                if (endpointIdsBuilder_ == null) {
                    return endpointIds_.get(index);
                } else {
                    return endpointIdsBuilder_.getMessageOrBuilder(index);
                }
            }

            /**
             * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
             */
            public java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> getEndpointIdsOrBuilderList() {
                if (endpointIdsBuilder_ != null) {
                    return endpointIdsBuilder_.getMessageOrBuilderList();
                } else {
                    return java.util.Collections.unmodifiableList(endpointIds_);
                }
            }

            /**
             * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
             */
            public context.ContextOuterClass.EndPointId.Builder addEndpointIdsBuilder() {
                return getEndpointIdsFieldBuilder().addBuilder(context.ContextOuterClass.EndPointId.getDefaultInstance());
            }

            /**
             * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
             */
            public context.ContextOuterClass.EndPointId.Builder addEndpointIdsBuilder(int index) {
                return getEndpointIdsFieldBuilder().addBuilder(index, context.ContextOuterClass.EndPointId.getDefaultInstance());
            }

            /**
             * <code>repeated .context.EndPointId endpoint_ids = 1;</code>
             */
            public java.util.List<context.ContextOuterClass.EndPointId.Builder> getEndpointIdsBuilderList() {
                return getEndpointIdsFieldBuilder().getBuilderList();
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> getEndpointIdsFieldBuilder() {
                if (endpointIdsBuilder_ == null) {
                    endpointIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder>(endpointIds_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
                    endpointIds_ = null;
                }
                return endpointIdsBuilder_;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.EndPointIdList)
        }

        // @@protoc_insertion_point(class_scope:context.EndPointIdList)
        private static final context.ContextOuterClass.EndPointIdList DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.EndPointIdList();
        }

        public static context.ContextOuterClass.EndPointIdList getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<EndPointIdList> PARSER = new com.google.protobuf.AbstractParser<EndPointIdList>() {

            @java.lang.Override
            public EndPointIdList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<EndPointIdList> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<EndPointIdList> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.EndPointIdList getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface EndPointNameListOrBuilder extends // @@protoc_insertion_point(interface_extends:context.EndPointNameList)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>repeated .context.EndPointName endpoint_names = 1;</code>
         */
        java.util.List<context.ContextOuterClass.EndPointName> getEndpointNamesList();

        /**
         * <code>repeated .context.EndPointName endpoint_names = 1;</code>
         */
        context.ContextOuterClass.EndPointName getEndpointNames(int index);

        /**
         * <code>repeated .context.EndPointName endpoint_names = 1;</code>
         */
        int getEndpointNamesCount();

        /**
         * <code>repeated .context.EndPointName endpoint_names = 1;</code>
         */
        java.util.List<? extends context.ContextOuterClass.EndPointNameOrBuilder> getEndpointNamesOrBuilderList();

        /**
         * <code>repeated .context.EndPointName endpoint_names = 1;</code>
         */
        context.ContextOuterClass.EndPointNameOrBuilder getEndpointNamesOrBuilder(int index);
    }

    /**
     * Protobuf type {@code context.EndPointNameList}
     */
    public static final class EndPointNameList extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.EndPointNameList)
    EndPointNameListOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use EndPointNameList.newBuilder() to construct.
        private EndPointNameList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private EndPointNameList() {
            endpointNames_ = java.util.Collections.emptyList();
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new EndPointNameList();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_EndPointNameList_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_EndPointNameList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.EndPointNameList.class, context.ContextOuterClass.EndPointNameList.Builder.class);
        }

        public static final int ENDPOINT_NAMES_FIELD_NUMBER = 1;

        @SuppressWarnings("serial")
        private java.util.List<context.ContextOuterClass.EndPointName> endpointNames_;

        /**
         * <code>repeated .context.EndPointName endpoint_names = 1;</code>
         */
        @java.lang.Override
        public java.util.List<context.ContextOuterClass.EndPointName> getEndpointNamesList() {
            return endpointNames_;
        }

        /**
         * <code>repeated .context.EndPointName endpoint_names = 1;</code>
         */
        @java.lang.Override
        public java.util.List<? extends context.ContextOuterClass.EndPointNameOrBuilder> getEndpointNamesOrBuilderList() {
            return endpointNames_;
        }

        /**
         * <code>repeated .context.EndPointName endpoint_names = 1;</code>
         */
        @java.lang.Override
        public int getEndpointNamesCount() {
            return endpointNames_.size();
        }

        /**
         * <code>repeated .context.EndPointName endpoint_names = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.EndPointName getEndpointNames(int index) {
            return endpointNames_.get(index);
        }

        /**
         * <code>repeated .context.EndPointName endpoint_names = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.EndPointNameOrBuilder getEndpointNamesOrBuilder(int index) {
            return endpointNames_.get(index);
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            for (int i = 0; i < endpointNames_.size(); i++) {
                output.writeMessage(1, endpointNames_.get(i));
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            for (int i = 0; i < endpointNames_.size(); i++) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, endpointNames_.get(i));
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.EndPointNameList)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.EndPointNameList other = (context.ContextOuterClass.EndPointNameList) obj;
            if (!getEndpointNamesList().equals(other.getEndpointNamesList()))
                return false;
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            if (getEndpointNamesCount() > 0) {
                hash = (37 * hash) + ENDPOINT_NAMES_FIELD_NUMBER;
                hash = (53 * hash) + getEndpointNamesList().hashCode();
            }
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.EndPointNameList parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.EndPointNameList parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.EndPointNameList parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.EndPointNameList parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.EndPointNameList parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.EndPointNameList parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.EndPointNameList parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.EndPointNameList parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.EndPointNameList parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.EndPointNameList parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.EndPointNameList parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.EndPointNameList parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.EndPointNameList prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code context.EndPointNameList}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.EndPointNameList)
        context.ContextOuterClass.EndPointNameListOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_EndPointNameList_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_EndPointNameList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.EndPointNameList.class, context.ContextOuterClass.EndPointNameList.Builder.class);
            }

            // Construct using context.ContextOuterClass.EndPointNameList.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                if (endpointNamesBuilder_ == null) {
                    endpointNames_ = java.util.Collections.emptyList();
                } else {
                    endpointNames_ = null;
                    endpointNamesBuilder_.clear();
                }
                bitField0_ = (bitField0_ & ~0x00000001);
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_EndPointNameList_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.EndPointNameList getDefaultInstanceForType() {
                return context.ContextOuterClass.EndPointNameList.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.EndPointNameList build() {
                context.ContextOuterClass.EndPointNameList result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.EndPointNameList buildPartial() {
                context.ContextOuterClass.EndPointNameList result = new context.ContextOuterClass.EndPointNameList(this);
                buildPartialRepeatedFields(result);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartialRepeatedFields(context.ContextOuterClass.EndPointNameList result) {
                if (endpointNamesBuilder_ == null) {
                    if (((bitField0_ & 0x00000001) != 0)) {
                        endpointNames_ = java.util.Collections.unmodifiableList(endpointNames_);
                        bitField0_ = (bitField0_ & ~0x00000001);
                    }
                    result.endpointNames_ = endpointNames_;
                } else {
                    result.endpointNames_ = endpointNamesBuilder_.build();
                }
            }

            private void buildPartial0(context.ContextOuterClass.EndPointNameList result) {
                int from_bitField0_ = bitField0_;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.EndPointNameList) {
                    return mergeFrom((context.ContextOuterClass.EndPointNameList) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.EndPointNameList other) {
                if (other == context.ContextOuterClass.EndPointNameList.getDefaultInstance())
                    return this;
                if (endpointNamesBuilder_ == null) {
                    if (!other.endpointNames_.isEmpty()) {
                        if (endpointNames_.isEmpty()) {
                            endpointNames_ = other.endpointNames_;
                            bitField0_ = (bitField0_ & ~0x00000001);
                        } else {
                            ensureEndpointNamesIsMutable();
                            endpointNames_.addAll(other.endpointNames_);
                        }
                        onChanged();
                    }
                } else {
                    if (!other.endpointNames_.isEmpty()) {
                        if (endpointNamesBuilder_.isEmpty()) {
                            endpointNamesBuilder_.dispose();
                            endpointNamesBuilder_ = null;
                            endpointNames_ = other.endpointNames_;
                            bitField0_ = (bitField0_ & ~0x00000001);
                            endpointNamesBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getEndpointNamesFieldBuilder() : null;
                        } else {
                            endpointNamesBuilder_.addAllMessages(other.endpointNames_);
                        }
                    }
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 10:
                                {
                                    context.ContextOuterClass.EndPointName m = input.readMessage(context.ContextOuterClass.EndPointName.parser(), extensionRegistry);
                                    if (endpointNamesBuilder_ == null) {
                                        ensureEndpointNamesIsMutable();
                                        endpointNames_.add(m);
                                    } else {
                                        endpointNamesBuilder_.addMessage(m);
                                    }
                                    break;
                                }
                            // case 10
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private java.util.List<context.ContextOuterClass.EndPointName> endpointNames_ = java.util.Collections.emptyList();

            private void ensureEndpointNamesIsMutable() {
                if (!((bitField0_ & 0x00000001) != 0)) {
                    endpointNames_ = new java.util.ArrayList<context.ContextOuterClass.EndPointName>(endpointNames_);
                    bitField0_ |= 0x00000001;
                }
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPointName, context.ContextOuterClass.EndPointName.Builder, context.ContextOuterClass.EndPointNameOrBuilder> endpointNamesBuilder_;

            /**
             * <code>repeated .context.EndPointName endpoint_names = 1;</code>
             */
            public java.util.List<context.ContextOuterClass.EndPointName> getEndpointNamesList() {
                if (endpointNamesBuilder_ == null) {
                    return java.util.Collections.unmodifiableList(endpointNames_);
                } else {
                    return endpointNamesBuilder_.getMessageList();
                }
            }

            /**
             * <code>repeated .context.EndPointName endpoint_names = 1;</code>
             */
            public int getEndpointNamesCount() {
                if (endpointNamesBuilder_ == null) {
                    return endpointNames_.size();
                } else {
                    return endpointNamesBuilder_.getCount();
                }
            }

            /**
             * <code>repeated .context.EndPointName endpoint_names = 1;</code>
             */
            public context.ContextOuterClass.EndPointName getEndpointNames(int index) {
                if (endpointNamesBuilder_ == null) {
                    return endpointNames_.get(index);
                } else {
                    return endpointNamesBuilder_.getMessage(index);
                }
            }

            /**
             * <code>repeated .context.EndPointName endpoint_names = 1;</code>
             */
            public Builder setEndpointNames(int index, context.ContextOuterClass.EndPointName value) {
                if (endpointNamesBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureEndpointNamesIsMutable();
                    endpointNames_.set(index, value);
                    onChanged();
                } else {
                    endpointNamesBuilder_.setMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPointName endpoint_names = 1;</code>
             */
            public Builder setEndpointNames(int index, context.ContextOuterClass.EndPointName.Builder builderForValue) {
                if (endpointNamesBuilder_ == null) {
                    ensureEndpointNamesIsMutable();
                    endpointNames_.set(index, builderForValue.build());
                    onChanged();
                } else {
                    endpointNamesBuilder_.setMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPointName endpoint_names = 1;</code>
             */
            public Builder addEndpointNames(context.ContextOuterClass.EndPointName value) {
                if (endpointNamesBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureEndpointNamesIsMutable();
                    endpointNames_.add(value);
                    onChanged();
                } else {
                    endpointNamesBuilder_.addMessage(value);
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPointName endpoint_names = 1;</code>
             */
            public Builder addEndpointNames(int index, context.ContextOuterClass.EndPointName value) {
                if (endpointNamesBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureEndpointNamesIsMutable();
                    endpointNames_.add(index, value);
                    onChanged();
                } else {
                    endpointNamesBuilder_.addMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPointName endpoint_names = 1;</code>
             */
            public Builder addEndpointNames(context.ContextOuterClass.EndPointName.Builder builderForValue) {
                if (endpointNamesBuilder_ == null) {
                    ensureEndpointNamesIsMutable();
                    endpointNames_.add(builderForValue.build());
                    onChanged();
                } else {
                    endpointNamesBuilder_.addMessage(builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPointName endpoint_names = 1;</code>
             */
            public Builder addEndpointNames(int index, context.ContextOuterClass.EndPointName.Builder builderForValue) {
                if (endpointNamesBuilder_ == null) {
                    ensureEndpointNamesIsMutable();
                    endpointNames_.add(index, builderForValue.build());
                    onChanged();
                } else {
                    endpointNamesBuilder_.addMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPointName endpoint_names = 1;</code>
             */
            public Builder addAllEndpointNames(java.lang.Iterable<? extends context.ContextOuterClass.EndPointName> values) {
                if (endpointNamesBuilder_ == null) {
                    ensureEndpointNamesIsMutable();
                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, endpointNames_);
                    onChanged();
                } else {
                    endpointNamesBuilder_.addAllMessages(values);
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPointName endpoint_names = 1;</code>
             */
            public Builder clearEndpointNames() {
                if (endpointNamesBuilder_ == null) {
                    endpointNames_ = java.util.Collections.emptyList();
                    bitField0_ = (bitField0_ & ~0x00000001);
                    onChanged();
                } else {
                    endpointNamesBuilder_.clear();
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPointName endpoint_names = 1;</code>
             */
            public Builder removeEndpointNames(int index) {
                if (endpointNamesBuilder_ == null) {
                    ensureEndpointNamesIsMutable();
                    endpointNames_.remove(index);
                    onChanged();
                } else {
                    endpointNamesBuilder_.remove(index);
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPointName endpoint_names = 1;</code>
             */
            public context.ContextOuterClass.EndPointName.Builder getEndpointNamesBuilder(int index) {
                return getEndpointNamesFieldBuilder().getBuilder(index);
            }

            /**
             * <code>repeated .context.EndPointName endpoint_names = 1;</code>
             */
            public context.ContextOuterClass.EndPointNameOrBuilder getEndpointNamesOrBuilder(int index) {
                if (endpointNamesBuilder_ == null) {
                    return endpointNames_.get(index);
                } else {
                    return endpointNamesBuilder_.getMessageOrBuilder(index);
                }
            }

            /**
             * <code>repeated .context.EndPointName endpoint_names = 1;</code>
             */
            public java.util.List<? extends context.ContextOuterClass.EndPointNameOrBuilder> getEndpointNamesOrBuilderList() {
                if (endpointNamesBuilder_ != null) {
                    return endpointNamesBuilder_.getMessageOrBuilderList();
                } else {
                    return java.util.Collections.unmodifiableList(endpointNames_);
                }
            }

            /**
             * <code>repeated .context.EndPointName endpoint_names = 1;</code>
             */
            public context.ContextOuterClass.EndPointName.Builder addEndpointNamesBuilder() {
                return getEndpointNamesFieldBuilder().addBuilder(context.ContextOuterClass.EndPointName.getDefaultInstance());
            }

            /**
             * <code>repeated .context.EndPointName endpoint_names = 1;</code>
             */
            public context.ContextOuterClass.EndPointName.Builder addEndpointNamesBuilder(int index) {
                return getEndpointNamesFieldBuilder().addBuilder(index, context.ContextOuterClass.EndPointName.getDefaultInstance());
            }

            /**
             * <code>repeated .context.EndPointName endpoint_names = 1;</code>
             */
            public java.util.List<context.ContextOuterClass.EndPointName.Builder> getEndpointNamesBuilderList() {
                return getEndpointNamesFieldBuilder().getBuilderList();
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPointName, context.ContextOuterClass.EndPointName.Builder, context.ContextOuterClass.EndPointNameOrBuilder> getEndpointNamesFieldBuilder() {
                if (endpointNamesBuilder_ == null) {
                    endpointNamesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPointName, context.ContextOuterClass.EndPointName.Builder, context.ContextOuterClass.EndPointNameOrBuilder>(endpointNames_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
                    endpointNames_ = null;
                }
                return endpointNamesBuilder_;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.EndPointNameList)
        }

        // @@protoc_insertion_point(class_scope:context.EndPointNameList)
        private static final context.ContextOuterClass.EndPointNameList DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.EndPointNameList();
        }

        public static context.ContextOuterClass.EndPointNameList getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<EndPointNameList> PARSER = new com.google.protobuf.AbstractParser<EndPointNameList>() {

            @java.lang.Override
            public EndPointNameList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<EndPointNameList> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<EndPointNameList> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.EndPointNameList getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface ConfigRule_CustomOrBuilder extends // @@protoc_insertion_point(interface_extends:context.ConfigRule_Custom)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>string resource_key = 1;</code>
         * @return The resourceKey.
         */
        java.lang.String getResourceKey();

        /**
         * <code>string resource_key = 1;</code>
         * @return The bytes for resourceKey.
         */
        com.google.protobuf.ByteString getResourceKeyBytes();

        /**
         * <code>string resource_value = 2;</code>
         * @return The resourceValue.
         */
        java.lang.String getResourceValue();

        /**
         * <code>string resource_value = 2;</code>
         * @return The bytes for resourceValue.
         */
        com.google.protobuf.ByteString getResourceValueBytes();
    }

    /**
     * Protobuf type {@code context.ConfigRule_Custom}
     */
    public static final class ConfigRule_Custom extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.ConfigRule_Custom)
    ConfigRule_CustomOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use ConfigRule_Custom.newBuilder() to construct.
        private ConfigRule_Custom(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private ConfigRule_Custom() {
            resourceKey_ = "";
            resourceValue_ = "";
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new ConfigRule_Custom();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_ConfigRule_Custom_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_ConfigRule_Custom_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ConfigRule_Custom.class, context.ContextOuterClass.ConfigRule_Custom.Builder.class);
        }

        public static final int RESOURCE_KEY_FIELD_NUMBER = 1;

        @SuppressWarnings("serial")
        private volatile java.lang.Object resourceKey_ = "";

        /**
         * <code>string resource_key = 1;</code>
         * @return The resourceKey.
         */
        @java.lang.Override
        public java.lang.String getResourceKey() {
            java.lang.Object ref = resourceKey_;
            if (ref instanceof java.lang.String) {
                return (java.lang.String) ref;
            } else {
                com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                java.lang.String s = bs.toStringUtf8();
                resourceKey_ = s;
                return s;
            }
        }

        /**
         * <code>string resource_key = 1;</code>
         * @return The bytes for resourceKey.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString getResourceKeyBytes() {
            java.lang.Object ref = resourceKey_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                resourceKey_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int RESOURCE_VALUE_FIELD_NUMBER = 2;

        @SuppressWarnings("serial")
        private volatile java.lang.Object resourceValue_ = "";

        /**
         * <code>string resource_value = 2;</code>
         * @return The resourceValue.
         */
        @java.lang.Override
        public java.lang.String getResourceValue() {
            java.lang.Object ref = resourceValue_;
            if (ref instanceof java.lang.String) {
                return (java.lang.String) ref;
            } else {
                com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                java.lang.String s = bs.toStringUtf8();
                resourceValue_ = s;
                return s;
            }
        }

        /**
         * <code>string resource_value = 2;</code>
         * @return The bytes for resourceValue.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString getResourceValueBytes() {
            java.lang.Object ref = resourceValue_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                resourceValue_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(resourceKey_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 1, resourceKey_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(resourceValue_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 2, resourceValue_);
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(resourceKey_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, resourceKey_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(resourceValue_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, resourceValue_);
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.ConfigRule_Custom)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.ConfigRule_Custom other = (context.ContextOuterClass.ConfigRule_Custom) obj;
            if (!getResourceKey().equals(other.getResourceKey()))
                return false;
            if (!getResourceValue().equals(other.getResourceValue()))
                return false;
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            hash = (37 * hash) + RESOURCE_KEY_FIELD_NUMBER;
            hash = (53 * hash) + getResourceKey().hashCode();
            hash = (37 * hash) + RESOURCE_VALUE_FIELD_NUMBER;
            hash = (53 * hash) + getResourceValue().hashCode();
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.ConfigRule_Custom parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.ConfigRule_Custom parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.ConfigRule_Custom parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.ConfigRule_Custom parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.ConfigRule_Custom parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.ConfigRule_Custom parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.ConfigRule_Custom parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.ConfigRule_Custom parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.ConfigRule_Custom parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.ConfigRule_Custom parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.ConfigRule_Custom parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.ConfigRule_Custom parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.ConfigRule_Custom prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code context.ConfigRule_Custom}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.ConfigRule_Custom)
        context.ContextOuterClass.ConfigRule_CustomOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_ConfigRule_Custom_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_ConfigRule_Custom_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ConfigRule_Custom.class, context.ContextOuterClass.ConfigRule_Custom.Builder.class);
            }

            // Construct using context.ContextOuterClass.ConfigRule_Custom.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                resourceKey_ = "";
                resourceValue_ = "";
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_ConfigRule_Custom_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.ConfigRule_Custom getDefaultInstanceForType() {
                return context.ContextOuterClass.ConfigRule_Custom.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.ConfigRule_Custom build() {
                context.ContextOuterClass.ConfigRule_Custom result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.ConfigRule_Custom buildPartial() {
                context.ContextOuterClass.ConfigRule_Custom result = new context.ContextOuterClass.ConfigRule_Custom(this);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartial0(context.ContextOuterClass.ConfigRule_Custom result) {
                int from_bitField0_ = bitField0_;
                if (((from_bitField0_ & 0x00000001) != 0)) {
                    result.resourceKey_ = resourceKey_;
                }
                if (((from_bitField0_ & 0x00000002) != 0)) {
                    result.resourceValue_ = resourceValue_;
                }
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.ConfigRule_Custom) {
                    return mergeFrom((context.ContextOuterClass.ConfigRule_Custom) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.ConfigRule_Custom other) {
                if (other == context.ContextOuterClass.ConfigRule_Custom.getDefaultInstance())
                    return this;
                if (!other.getResourceKey().isEmpty()) {
                    resourceKey_ = other.resourceKey_;
                    bitField0_ |= 0x00000001;
                    onChanged();
                }
                if (!other.getResourceValue().isEmpty()) {
                    resourceValue_ = other.resourceValue_;
                    bitField0_ |= 0x00000002;
                    onChanged();
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 10:
                                {
                                    resourceKey_ = input.readStringRequireUtf8();
                                    bitField0_ |= 0x00000001;
                                    break;
                                }
                            // case 10
                            case 18:
                                {
                                    resourceValue_ = input.readStringRequireUtf8();
                                    bitField0_ |= 0x00000002;
                                    break;
                                }
                            // case 18
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private java.lang.Object resourceKey_ = "";

            /**
             * <code>string resource_key = 1;</code>
             * @return The resourceKey.
             */
            public java.lang.String getResourceKey() {
                java.lang.Object ref = resourceKey_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    resourceKey_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }

            /**
             * <code>string resource_key = 1;</code>
             * @return The bytes for resourceKey.
             */
            public com.google.protobuf.ByteString getResourceKeyBytes() {
                java.lang.Object ref = resourceKey_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                    resourceKey_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }

            /**
             * <code>string resource_key = 1;</code>
             * @param value The resourceKey to set.
             * @return This builder for chaining.
             */
            public Builder setResourceKey(java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                resourceKey_ = value;
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>string resource_key = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearResourceKey() {
                resourceKey_ = getDefaultInstance().getResourceKey();
                bitField0_ = (bitField0_ & ~0x00000001);
                onChanged();
                return this;
            }

            /**
             * <code>string resource_key = 1;</code>
             * @param value The bytes for resourceKey to set.
             * @return This builder for chaining.
             */
            public Builder setResourceKeyBytes(com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);
                resourceKey_ = value;
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            private java.lang.Object resourceValue_ = "";

            /**
             * <code>string resource_value = 2;</code>
             * @return The resourceValue.
             */
            public java.lang.String getResourceValue() {
                java.lang.Object ref = resourceValue_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    resourceValue_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }

            /**
             * <code>string resource_value = 2;</code>
             * @return The bytes for resourceValue.
             */
            public com.google.protobuf.ByteString getResourceValueBytes() {
                java.lang.Object ref = resourceValue_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                    resourceValue_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }

            /**
             * <code>string resource_value = 2;</code>
             * @param value The resourceValue to set.
             * @return This builder for chaining.
             */
            public Builder setResourceValue(java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                resourceValue_ = value;
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>string resource_value = 2;</code>
             * @return This builder for chaining.
             */
            public Builder clearResourceValue() {
                resourceValue_ = getDefaultInstance().getResourceValue();
                bitField0_ = (bitField0_ & ~0x00000002);
                onChanged();
                return this;
            }

            /**
             * <code>string resource_value = 2;</code>
             * @param value The bytes for resourceValue to set.
             * @return This builder for chaining.
             */
            public Builder setResourceValueBytes(com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);
                resourceValue_ = value;
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.ConfigRule_Custom)
        }

        // @@protoc_insertion_point(class_scope:context.ConfigRule_Custom)
        private static final context.ContextOuterClass.ConfigRule_Custom DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.ConfigRule_Custom();
        }

        public static context.ContextOuterClass.ConfigRule_Custom getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<ConfigRule_Custom> PARSER = new com.google.protobuf.AbstractParser<ConfigRule_Custom>() {

            @java.lang.Override
            public ConfigRule_Custom parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<ConfigRule_Custom> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<ConfigRule_Custom> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.ConfigRule_Custom getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface ConfigRule_ACLOrBuilder extends // @@protoc_insertion_point(interface_extends:context.ConfigRule_ACL)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>.context.EndPointId endpoint_id = 1;</code>
         * @return Whether the endpointId field is set.
         */
        boolean hasEndpointId();

        /**
         * <code>.context.EndPointId endpoint_id = 1;</code>
         * @return The endpointId.
         */
        context.ContextOuterClass.EndPointId getEndpointId();

        /**
         * <code>.context.EndPointId endpoint_id = 1;</code>
         */
        context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder();

        /**
         * <code>.acl.AclRuleSet rule_set = 2;</code>
         * @return Whether the ruleSet field is set.
         */
        boolean hasRuleSet();

        /**
         * <code>.acl.AclRuleSet rule_set = 2;</code>
         * @return The ruleSet.
         */
        acl.Acl.AclRuleSet getRuleSet();

        /**
         * <code>.acl.AclRuleSet rule_set = 2;</code>
         */
        acl.Acl.AclRuleSetOrBuilder getRuleSetOrBuilder();
    }

    /**
     * Protobuf type {@code context.ConfigRule_ACL}
     */
    public static final class ConfigRule_ACL extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.ConfigRule_ACL)
    ConfigRule_ACLOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use ConfigRule_ACL.newBuilder() to construct.
        private ConfigRule_ACL(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private ConfigRule_ACL() {
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new ConfigRule_ACL();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_ConfigRule_ACL_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_ConfigRule_ACL_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ConfigRule_ACL.class, context.ContextOuterClass.ConfigRule_ACL.Builder.class);
        }

        public static final int ENDPOINT_ID_FIELD_NUMBER = 1;

        private context.ContextOuterClass.EndPointId endpointId_;

        /**
         * <code>.context.EndPointId endpoint_id = 1;</code>
         * @return Whether the endpointId field is set.
         */
        @java.lang.Override
        public boolean hasEndpointId() {
            return endpointId_ != null;
        }

        /**
         * <code>.context.EndPointId endpoint_id = 1;</code>
         * @return The endpointId.
         */
        @java.lang.Override
        public context.ContextOuterClass.EndPointId getEndpointId() {
            return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
        }

        /**
         * <code>.context.EndPointId endpoint_id = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder() {
            return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
        }

        public static final int RULE_SET_FIELD_NUMBER = 2;

        private acl.Acl.AclRuleSet ruleSet_;

        /**
         * <code>.acl.AclRuleSet rule_set = 2;</code>
         * @return Whether the ruleSet field is set.
         */
        @java.lang.Override
        public boolean hasRuleSet() {
            return ruleSet_ != null;
        }

        /**
         * <code>.acl.AclRuleSet rule_set = 2;</code>
         * @return The ruleSet.
         */
        @java.lang.Override
        public acl.Acl.AclRuleSet getRuleSet() {
            return ruleSet_ == null ? acl.Acl.AclRuleSet.getDefaultInstance() : ruleSet_;
        }

        /**
         * <code>.acl.AclRuleSet rule_set = 2;</code>
         */
        @java.lang.Override
        public acl.Acl.AclRuleSetOrBuilder getRuleSetOrBuilder() {
            return ruleSet_ == null ? acl.Acl.AclRuleSet.getDefaultInstance() : ruleSet_;
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            if (endpointId_ != null) {
                output.writeMessage(1, getEndpointId());
            }
            if (ruleSet_ != null) {
                output.writeMessage(2, getRuleSet());
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            if (endpointId_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getEndpointId());
            }
            if (ruleSet_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getRuleSet());
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.ConfigRule_ACL)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.ConfigRule_ACL other = (context.ContextOuterClass.ConfigRule_ACL) obj;
            if (hasEndpointId() != other.hasEndpointId())
                return false;
            if (hasEndpointId()) {
                if (!getEndpointId().equals(other.getEndpointId()))
                    return false;
            }
            if (hasRuleSet() != other.hasRuleSet())
                return false;
            if (hasRuleSet()) {
                if (!getRuleSet().equals(other.getRuleSet()))
                    return false;
            }
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            if (hasEndpointId()) {
                hash = (37 * hash) + ENDPOINT_ID_FIELD_NUMBER;
                hash = (53 * hash) + getEndpointId().hashCode();
            }
            if (hasRuleSet()) {
                hash = (37 * hash) + RULE_SET_FIELD_NUMBER;
                hash = (53 * hash) + getRuleSet().hashCode();
            }
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.ConfigRule_ACL parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.ConfigRule_ACL parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.ConfigRule_ACL parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.ConfigRule_ACL parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.ConfigRule_ACL parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.ConfigRule_ACL parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.ConfigRule_ACL parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.ConfigRule_ACL parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.ConfigRule_ACL parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.ConfigRule_ACL parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.ConfigRule_ACL parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.ConfigRule_ACL parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.ConfigRule_ACL prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code context.ConfigRule_ACL}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.ConfigRule_ACL)
        context.ContextOuterClass.ConfigRule_ACLOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_ConfigRule_ACL_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_ConfigRule_ACL_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ConfigRule_ACL.class, context.ContextOuterClass.ConfigRule_ACL.Builder.class);
            }

            // Construct using context.ContextOuterClass.ConfigRule_ACL.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                endpointId_ = null;
                if (endpointIdBuilder_ != null) {
                    endpointIdBuilder_.dispose();
                    endpointIdBuilder_ = null;
                }
                ruleSet_ = null;
                if (ruleSetBuilder_ != null) {
                    ruleSetBuilder_.dispose();
                    ruleSetBuilder_ = null;
                }
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_ConfigRule_ACL_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.ConfigRule_ACL getDefaultInstanceForType() {
                return context.ContextOuterClass.ConfigRule_ACL.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.ConfigRule_ACL build() {
                context.ContextOuterClass.ConfigRule_ACL result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.ConfigRule_ACL buildPartial() {
                context.ContextOuterClass.ConfigRule_ACL result = new context.ContextOuterClass.ConfigRule_ACL(this);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartial0(context.ContextOuterClass.ConfigRule_ACL result) {
                int from_bitField0_ = bitField0_;
                if (((from_bitField0_ & 0x00000001) != 0)) {
                    result.endpointId_ = endpointIdBuilder_ == null ? endpointId_ : endpointIdBuilder_.build();
                }
                if (((from_bitField0_ & 0x00000002) != 0)) {
                    result.ruleSet_ = ruleSetBuilder_ == null ? ruleSet_ : ruleSetBuilder_.build();
                }
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.ConfigRule_ACL) {
                    return mergeFrom((context.ContextOuterClass.ConfigRule_ACL) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.ConfigRule_ACL other) {
                if (other == context.ContextOuterClass.ConfigRule_ACL.getDefaultInstance())
                    return this;
                if (other.hasEndpointId()) {
                    mergeEndpointId(other.getEndpointId());
                }
                if (other.hasRuleSet()) {
                    mergeRuleSet(other.getRuleSet());
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 10:
                                {
                                    input.readMessage(getEndpointIdFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000001;
                                    break;
                                }
                            // case 10
                            case 18:
                                {
                                    input.readMessage(getRuleSetFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000002;
                                    break;
                                }
                            // case 18
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private context.ContextOuterClass.EndPointId endpointId_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> endpointIdBuilder_;

            /**
             * <code>.context.EndPointId endpoint_id = 1;</code>
             * @return Whether the endpointId field is set.
             */
            public boolean hasEndpointId() {
                return ((bitField0_ & 0x00000001) != 0);
            }

            /**
             * <code>.context.EndPointId endpoint_id = 1;</code>
             * @return The endpointId.
             */
            public context.ContextOuterClass.EndPointId getEndpointId() {
                if (endpointIdBuilder_ == null) {
                    return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
                } else {
                    return endpointIdBuilder_.getMessage();
                }
            }

            /**
             * <code>.context.EndPointId endpoint_id = 1;</code>
             */
            public Builder setEndpointId(context.ContextOuterClass.EndPointId value) {
                if (endpointIdBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    endpointId_ = value;
                } else {
                    endpointIdBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.EndPointId endpoint_id = 1;</code>
             */
            public Builder setEndpointId(context.ContextOuterClass.EndPointId.Builder builderForValue) {
                if (endpointIdBuilder_ == null) {
                    endpointId_ = builderForValue.build();
                } else {
                    endpointIdBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.EndPointId endpoint_id = 1;</code>
             */
            public Builder mergeEndpointId(context.ContextOuterClass.EndPointId value) {
                if (endpointIdBuilder_ == null) {
                    if (((bitField0_ & 0x00000001) != 0) && endpointId_ != null && endpointId_ != context.ContextOuterClass.EndPointId.getDefaultInstance()) {
                        getEndpointIdBuilder().mergeFrom(value);
                    } else {
                        endpointId_ = value;
                    }
                } else {
                    endpointIdBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.EndPointId endpoint_id = 1;</code>
             */
            public Builder clearEndpointId() {
                bitField0_ = (bitField0_ & ~0x00000001);
                endpointId_ = null;
                if (endpointIdBuilder_ != null) {
                    endpointIdBuilder_.dispose();
                    endpointIdBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.EndPointId endpoint_id = 1;</code>
             */
            public context.ContextOuterClass.EndPointId.Builder getEndpointIdBuilder() {
                bitField0_ |= 0x00000001;
                onChanged();
                return getEndpointIdFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.EndPointId endpoint_id = 1;</code>
             */
            public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder() {
                if (endpointIdBuilder_ != null) {
                    return endpointIdBuilder_.getMessageOrBuilder();
                } else {
                    return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
                }
            }

            /**
             * <code>.context.EndPointId endpoint_id = 1;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> getEndpointIdFieldBuilder() {
                if (endpointIdBuilder_ == null) {
                    endpointIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder>(getEndpointId(), getParentForChildren(), isClean());
                    endpointId_ = null;
                }
                return endpointIdBuilder_;
            }

            private acl.Acl.AclRuleSet ruleSet_;

            private com.google.protobuf.SingleFieldBuilderV3<acl.Acl.AclRuleSet, acl.Acl.AclRuleSet.Builder, acl.Acl.AclRuleSetOrBuilder> ruleSetBuilder_;

            /**
             * <code>.acl.AclRuleSet rule_set = 2;</code>
             * @return Whether the ruleSet field is set.
             */
            public boolean hasRuleSet() {
                return ((bitField0_ & 0x00000002) != 0);
            }

            /**
             * <code>.acl.AclRuleSet rule_set = 2;</code>
             * @return The ruleSet.
             */
            public acl.Acl.AclRuleSet getRuleSet() {
                if (ruleSetBuilder_ == null) {
                    return ruleSet_ == null ? acl.Acl.AclRuleSet.getDefaultInstance() : ruleSet_;
                } else {
                    return ruleSetBuilder_.getMessage();
                }
            }

            /**
             * <code>.acl.AclRuleSet rule_set = 2;</code>
             */
            public Builder setRuleSet(acl.Acl.AclRuleSet value) {
                if (ruleSetBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ruleSet_ = value;
                } else {
                    ruleSetBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>.acl.AclRuleSet rule_set = 2;</code>
             */
            public Builder setRuleSet(acl.Acl.AclRuleSet.Builder builderForValue) {
                if (ruleSetBuilder_ == null) {
                    ruleSet_ = builderForValue.build();
                } else {
                    ruleSetBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>.acl.AclRuleSet rule_set = 2;</code>
             */
            public Builder mergeRuleSet(acl.Acl.AclRuleSet value) {
                if (ruleSetBuilder_ == null) {
                    if (((bitField0_ & 0x00000002) != 0) && ruleSet_ != null && ruleSet_ != acl.Acl.AclRuleSet.getDefaultInstance()) {
                        getRuleSetBuilder().mergeFrom(value);
                    } else {
                        ruleSet_ = value;
                    }
                } else {
                    ruleSetBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>.acl.AclRuleSet rule_set = 2;</code>
             */
            public Builder clearRuleSet() {
                bitField0_ = (bitField0_ & ~0x00000002);
                ruleSet_ = null;
                if (ruleSetBuilder_ != null) {
                    ruleSetBuilder_.dispose();
                    ruleSetBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.acl.AclRuleSet rule_set = 2;</code>
             */
            public acl.Acl.AclRuleSet.Builder getRuleSetBuilder() {
                bitField0_ |= 0x00000002;
                onChanged();
                return getRuleSetFieldBuilder().getBuilder();
            }

            /**
             * <code>.acl.AclRuleSet rule_set = 2;</code>
             */
            public acl.Acl.AclRuleSetOrBuilder getRuleSetOrBuilder() {
                if (ruleSetBuilder_ != null) {
                    return ruleSetBuilder_.getMessageOrBuilder();
                } else {
                    return ruleSet_ == null ? acl.Acl.AclRuleSet.getDefaultInstance() : ruleSet_;
                }
            }

            /**
             * <code>.acl.AclRuleSet rule_set = 2;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<acl.Acl.AclRuleSet, acl.Acl.AclRuleSet.Builder, acl.Acl.AclRuleSetOrBuilder> getRuleSetFieldBuilder() {
                if (ruleSetBuilder_ == null) {
                    ruleSetBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<acl.Acl.AclRuleSet, acl.Acl.AclRuleSet.Builder, acl.Acl.AclRuleSetOrBuilder>(getRuleSet(), getParentForChildren(), isClean());
                    ruleSet_ = null;
                }
                return ruleSetBuilder_;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.ConfigRule_ACL)
        }

        // @@protoc_insertion_point(class_scope:context.ConfigRule_ACL)
        private static final context.ContextOuterClass.ConfigRule_ACL DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.ConfigRule_ACL();
        }

        public static context.ContextOuterClass.ConfigRule_ACL getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<ConfigRule_ACL> PARSER = new com.google.protobuf.AbstractParser<ConfigRule_ACL>() {

            @java.lang.Override
            public ConfigRule_ACL parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<ConfigRule_ACL> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<ConfigRule_ACL> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.ConfigRule_ACL getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface ConfigRuleOrBuilder extends // @@protoc_insertion_point(interface_extends:context.ConfigRule)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>.context.ConfigActionEnum action = 1;</code>
         * @return The enum numeric value on the wire for action.
         */
        int getActionValue();

        /**
         * <code>.context.ConfigActionEnum action = 1;</code>
         * @return The action.
         */
        context.ContextOuterClass.ConfigActionEnum getAction();

        /**
         * <code>.context.ConfigRule_Custom custom = 2;</code>
         * @return Whether the custom field is set.
         */
        boolean hasCustom();

        /**
         * <code>.context.ConfigRule_Custom custom = 2;</code>
         * @return The custom.
         */
        context.ContextOuterClass.ConfigRule_Custom getCustom();

        /**
         * <code>.context.ConfigRule_Custom custom = 2;</code>
         */
        context.ContextOuterClass.ConfigRule_CustomOrBuilder getCustomOrBuilder();

        /**
         * <code>.context.ConfigRule_ACL acl = 3;</code>
         * @return Whether the acl field is set.
         */
        boolean hasAcl();

        /**
         * <code>.context.ConfigRule_ACL acl = 3;</code>
         * @return The acl.
         */
        context.ContextOuterClass.ConfigRule_ACL getAcl();

        /**
         * <code>.context.ConfigRule_ACL acl = 3;</code>
         */
        context.ContextOuterClass.ConfigRule_ACLOrBuilder getAclOrBuilder();

        context.ContextOuterClass.ConfigRule.ConfigRuleCase getConfigRuleCase();
    }

    /**
     * Protobuf type {@code context.ConfigRule}
     */
    public static final class ConfigRule extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.ConfigRule)
    ConfigRuleOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use ConfigRule.newBuilder() to construct.
        private ConfigRule(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private ConfigRule() {
            action_ = 0;
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new ConfigRule();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_ConfigRule_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_ConfigRule_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ConfigRule.class, context.ContextOuterClass.ConfigRule.Builder.class);
        }

        private int configRuleCase_ = 0;

        @SuppressWarnings("serial")
        private java.lang.Object configRule_;

        public enum ConfigRuleCase implements com.google.protobuf.Internal.EnumLite, com.google.protobuf.AbstractMessage.InternalOneOfEnum {

            CUSTOM(2), ACL(3), CONFIGRULE_NOT_SET(0);

            private final int value;

            private ConfigRuleCase(int value) {
                this.value = value;
            }

            /**
             * @param value The number of the enum to look for.
             * @return The enum associated with the given number.
             * @deprecated Use {@link #forNumber(int)} instead.
             */
            @java.lang.Deprecated
            public static ConfigRuleCase valueOf(int value) {
                return forNumber(value);
            }

            public static ConfigRuleCase forNumber(int value) {
                switch(value) {
                    case 2:
                        return CUSTOM;
                    case 3:
                        return ACL;
                    case 0:
                        return CONFIGRULE_NOT_SET;
                    default:
                        return null;
                }
            }

            public int getNumber() {
                return this.value;
            }
        }

        public ConfigRuleCase getConfigRuleCase() {
            return ConfigRuleCase.forNumber(configRuleCase_);
        }

        public static final int ACTION_FIELD_NUMBER = 1;

        private int action_ = 0;

        /**
         * <code>.context.ConfigActionEnum action = 1;</code>
         * @return The enum numeric value on the wire for action.
         */
        @java.lang.Override
        public int getActionValue() {
            return action_;
        }

        /**
         * <code>.context.ConfigActionEnum action = 1;</code>
         * @return The action.
         */
        @java.lang.Override
        public context.ContextOuterClass.ConfigActionEnum getAction() {
            context.ContextOuterClass.ConfigActionEnum result = context.ContextOuterClass.ConfigActionEnum.forNumber(action_);
            return result == null ? context.ContextOuterClass.ConfigActionEnum.UNRECOGNIZED : result;
        }

        public static final int CUSTOM_FIELD_NUMBER = 2;

        /**
         * <code>.context.ConfigRule_Custom custom = 2;</code>
         * @return Whether the custom field is set.
         */
        @java.lang.Override
        public boolean hasCustom() {
            return configRuleCase_ == 2;
        }

        /**
         * <code>.context.ConfigRule_Custom custom = 2;</code>
         * @return The custom.
         */
        @java.lang.Override
        public context.ContextOuterClass.ConfigRule_Custom getCustom() {
            if (configRuleCase_ == 2) {
                return (context.ContextOuterClass.ConfigRule_Custom) configRule_;
            }
            return context.ContextOuterClass.ConfigRule_Custom.getDefaultInstance();
        }

        /**
         * <code>.context.ConfigRule_Custom custom = 2;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.ConfigRule_CustomOrBuilder getCustomOrBuilder() {
            if (configRuleCase_ == 2) {
                return (context.ContextOuterClass.ConfigRule_Custom) configRule_;
            }
            return context.ContextOuterClass.ConfigRule_Custom.getDefaultInstance();
        }

        public static final int ACL_FIELD_NUMBER = 3;

        /**
         * <code>.context.ConfigRule_ACL acl = 3;</code>
         * @return Whether the acl field is set.
         */
        @java.lang.Override
        public boolean hasAcl() {
            return configRuleCase_ == 3;
        }

        /**
         * <code>.context.ConfigRule_ACL acl = 3;</code>
         * @return The acl.
         */
        @java.lang.Override
        public context.ContextOuterClass.ConfigRule_ACL getAcl() {
            if (configRuleCase_ == 3) {
                return (context.ContextOuterClass.ConfigRule_ACL) configRule_;
            }
            return context.ContextOuterClass.ConfigRule_ACL.getDefaultInstance();
        }

        /**
         * <code>.context.ConfigRule_ACL acl = 3;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.ConfigRule_ACLOrBuilder getAclOrBuilder() {
            if (configRuleCase_ == 3) {
                return (context.ContextOuterClass.ConfigRule_ACL) configRule_;
            }
            return context.ContextOuterClass.ConfigRule_ACL.getDefaultInstance();
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            if (action_ != context.ContextOuterClass.ConfigActionEnum.CONFIGACTION_UNDEFINED.getNumber()) {
                output.writeEnum(1, action_);
            }
            if (configRuleCase_ == 2) {
                output.writeMessage(2, (context.ContextOuterClass.ConfigRule_Custom) configRule_);
            }
            if (configRuleCase_ == 3) {
                output.writeMessage(3, (context.ContextOuterClass.ConfigRule_ACL) configRule_);
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            if (action_ != context.ContextOuterClass.ConfigActionEnum.CONFIGACTION_UNDEFINED.getNumber()) {
                size += com.google.protobuf.CodedOutputStream.computeEnumSize(1, action_);
            }
            if (configRuleCase_ == 2) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, (context.ContextOuterClass.ConfigRule_Custom) configRule_);
            }
            if (configRuleCase_ == 3) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, (context.ContextOuterClass.ConfigRule_ACL) configRule_);
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.ConfigRule)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.ConfigRule other = (context.ContextOuterClass.ConfigRule) obj;
            if (action_ != other.action_)
                return false;
            if (!getConfigRuleCase().equals(other.getConfigRuleCase()))
                return false;
            switch(configRuleCase_) {
                case 2:
                    if (!getCustom().equals(other.getCustom()))
                        return false;
                    break;
                case 3:
                    if (!getAcl().equals(other.getAcl()))
                        return false;
                    break;
                case 0:
                default:
            }
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            hash = (37 * hash) + ACTION_FIELD_NUMBER;
            hash = (53 * hash) + action_;
            switch(configRuleCase_) {
                case 2:
                    hash = (37 * hash) + CUSTOM_FIELD_NUMBER;
                    hash = (53 * hash) + getCustom().hashCode();
                    break;
                case 3:
                    hash = (37 * hash) + ACL_FIELD_NUMBER;
                    hash = (53 * hash) + getAcl().hashCode();
                    break;
                case 0:
                default:
            }
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.ConfigRule parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.ConfigRule parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.ConfigRule parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.ConfigRule parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.ConfigRule parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.ConfigRule parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.ConfigRule parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.ConfigRule parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.ConfigRule parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.ConfigRule parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.ConfigRule parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.ConfigRule parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.ConfigRule prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code context.ConfigRule}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.ConfigRule)
        context.ContextOuterClass.ConfigRuleOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_ConfigRule_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_ConfigRule_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ConfigRule.class, context.ContextOuterClass.ConfigRule.Builder.class);
            }

            // Construct using context.ContextOuterClass.ConfigRule.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                action_ = 0;
                if (customBuilder_ != null) {
                    customBuilder_.clear();
                }
                if (aclBuilder_ != null) {
                    aclBuilder_.clear();
                }
                configRuleCase_ = 0;
                configRule_ = null;
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_ConfigRule_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.ConfigRule getDefaultInstanceForType() {
                return context.ContextOuterClass.ConfigRule.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.ConfigRule build() {
                context.ContextOuterClass.ConfigRule result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.ConfigRule buildPartial() {
                context.ContextOuterClass.ConfigRule result = new context.ContextOuterClass.ConfigRule(this);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                buildPartialOneofs(result);
                onBuilt();
                return result;
            }

            private void buildPartial0(context.ContextOuterClass.ConfigRule result) {
                int from_bitField0_ = bitField0_;
                if (((from_bitField0_ & 0x00000001) != 0)) {
                    result.action_ = action_;
                }
            }

            private void buildPartialOneofs(context.ContextOuterClass.ConfigRule result) {
                result.configRuleCase_ = configRuleCase_;
                result.configRule_ = this.configRule_;
                if (configRuleCase_ == 2 && customBuilder_ != null) {
                    result.configRule_ = customBuilder_.build();
                }
                if (configRuleCase_ == 3 && aclBuilder_ != null) {
                    result.configRule_ = aclBuilder_.build();
                }
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.ConfigRule) {
                    return mergeFrom((context.ContextOuterClass.ConfigRule) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.ConfigRule other) {
                if (other == context.ContextOuterClass.ConfigRule.getDefaultInstance())
                    return this;
                if (other.action_ != 0) {
                    setActionValue(other.getActionValue());
                }
                switch(other.getConfigRuleCase()) {
                    case CUSTOM:
                        {
                            mergeCustom(other.getCustom());
                            break;
                        }
                    case ACL:
                        {
                            mergeAcl(other.getAcl());
                            break;
                        }
                    case CONFIGRULE_NOT_SET:
                        {
                            break;
                        }
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 8:
                                {
                                    action_ = input.readEnum();
                                    bitField0_ |= 0x00000001;
                                    break;
                                }
                            // case 8
                            case 18:
                                {
                                    input.readMessage(getCustomFieldBuilder().getBuilder(), extensionRegistry);
                                    configRuleCase_ = 2;
                                    break;
                                }
                            // case 18
                            case 26:
                                {
                                    input.readMessage(getAclFieldBuilder().getBuilder(), extensionRegistry);
                                    configRuleCase_ = 3;
                                    break;
                                }
                            // case 26
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int configRuleCase_ = 0;

            private java.lang.Object configRule_;

            public ConfigRuleCase getConfigRuleCase() {
                return ConfigRuleCase.forNumber(configRuleCase_);
            }

            public Builder clearConfigRule() {
                configRuleCase_ = 0;
                configRule_ = null;
                onChanged();
                return this;
            }

            private int bitField0_;

            private int action_ = 0;

            /**
             * <code>.context.ConfigActionEnum action = 1;</code>
             * @return The enum numeric value on the wire for action.
             */
            @java.lang.Override
            public int getActionValue() {
                return action_;
            }

            /**
             * <code>.context.ConfigActionEnum action = 1;</code>
             * @param value The enum numeric value on the wire for action to set.
             * @return This builder for chaining.
             */
            public Builder setActionValue(int value) {
                action_ = value;
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.ConfigActionEnum action = 1;</code>
             * @return The action.
             */
            @java.lang.Override
            public context.ContextOuterClass.ConfigActionEnum getAction() {
                context.ContextOuterClass.ConfigActionEnum result = context.ContextOuterClass.ConfigActionEnum.forNumber(action_);
                return result == null ? context.ContextOuterClass.ConfigActionEnum.UNRECOGNIZED : result;
            }

            /**
             * <code>.context.ConfigActionEnum action = 1;</code>
             * @param value The action to set.
             * @return This builder for chaining.
             */
            public Builder setAction(context.ContextOuterClass.ConfigActionEnum value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                bitField0_ |= 0x00000001;
                action_ = value.getNumber();
                onChanged();
                return this;
            }

            /**
             * <code>.context.ConfigActionEnum action = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearAction() {
                bitField0_ = (bitField0_ & ~0x00000001);
                action_ = 0;
                onChanged();
                return this;
            }

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ConfigRule_Custom, context.ContextOuterClass.ConfigRule_Custom.Builder, context.ContextOuterClass.ConfigRule_CustomOrBuilder> customBuilder_;

            /**
             * <code>.context.ConfigRule_Custom custom = 2;</code>
             * @return Whether the custom field is set.
             */
            @java.lang.Override
            public boolean hasCustom() {
                return configRuleCase_ == 2;
            }

            /**
             * <code>.context.ConfigRule_Custom custom = 2;</code>
             * @return The custom.
             */
            @java.lang.Override
            public context.ContextOuterClass.ConfigRule_Custom getCustom() {
                if (customBuilder_ == null) {
                    if (configRuleCase_ == 2) {
                        return (context.ContextOuterClass.ConfigRule_Custom) configRule_;
                    }
                    return context.ContextOuterClass.ConfigRule_Custom.getDefaultInstance();
                } else {
                    if (configRuleCase_ == 2) {
                        return customBuilder_.getMessage();
                    }
                    return context.ContextOuterClass.ConfigRule_Custom.getDefaultInstance();
                }
            }

            /**
             * <code>.context.ConfigRule_Custom custom = 2;</code>
             */
            public Builder setCustom(context.ContextOuterClass.ConfigRule_Custom value) {
                if (customBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    configRule_ = value;
                    onChanged();
                } else {
                    customBuilder_.setMessage(value);
                }
                configRuleCase_ = 2;
                return this;
            }

            /**
             * <code>.context.ConfigRule_Custom custom = 2;</code>
             */
            public Builder setCustom(context.ContextOuterClass.ConfigRule_Custom.Builder builderForValue) {
                if (customBuilder_ == null) {
                    configRule_ = builderForValue.build();
                    onChanged();
                } else {
                    customBuilder_.setMessage(builderForValue.build());
                }
                configRuleCase_ = 2;
                return this;
            }

            /**
             * <code>.context.ConfigRule_Custom custom = 2;</code>
             */
            public Builder mergeCustom(context.ContextOuterClass.ConfigRule_Custom value) {
                if (customBuilder_ == null) {
                    if (configRuleCase_ == 2 && configRule_ != context.ContextOuterClass.ConfigRule_Custom.getDefaultInstance()) {
                        configRule_ = context.ContextOuterClass.ConfigRule_Custom.newBuilder((context.ContextOuterClass.ConfigRule_Custom) configRule_).mergeFrom(value).buildPartial();
                    } else {
                        configRule_ = value;
                    }
                    onChanged();
                } else {
                    if (configRuleCase_ == 2) {
                        customBuilder_.mergeFrom(value);
                    } else {
                        customBuilder_.setMessage(value);
                    }
                }
                configRuleCase_ = 2;
                return this;
            }

            /**
             * <code>.context.ConfigRule_Custom custom = 2;</code>
             */
            public Builder clearCustom() {
                if (customBuilder_ == null) {
                    if (configRuleCase_ == 2) {
                        configRuleCase_ = 0;
                        configRule_ = null;
                        onChanged();
                    }
                } else {
                    if (configRuleCase_ == 2) {
                        configRuleCase_ = 0;
                        configRule_ = null;
                    }
                    customBuilder_.clear();
                }
                return this;
            }

            /**
             * <code>.context.ConfigRule_Custom custom = 2;</code>
             */
            public context.ContextOuterClass.ConfigRule_Custom.Builder getCustomBuilder() {
                return getCustomFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.ConfigRule_Custom custom = 2;</code>
             */
            @java.lang.Override
            public context.ContextOuterClass.ConfigRule_CustomOrBuilder getCustomOrBuilder() {
                if ((configRuleCase_ == 2) && (customBuilder_ != null)) {
                    return customBuilder_.getMessageOrBuilder();
                } else {
                    if (configRuleCase_ == 2) {
                        return (context.ContextOuterClass.ConfigRule_Custom) configRule_;
                    }
                    return context.ContextOuterClass.ConfigRule_Custom.getDefaultInstance();
                }
            }

            /**
             * <code>.context.ConfigRule_Custom custom = 2;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ConfigRule_Custom, context.ContextOuterClass.ConfigRule_Custom.Builder, context.ContextOuterClass.ConfigRule_CustomOrBuilder> getCustomFieldBuilder() {
                if (customBuilder_ == null) {
                    if (!(configRuleCase_ == 2)) {
                        configRule_ = context.ContextOuterClass.ConfigRule_Custom.getDefaultInstance();
                    }
                    customBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ConfigRule_Custom, context.ContextOuterClass.ConfigRule_Custom.Builder, context.ContextOuterClass.ConfigRule_CustomOrBuilder>((context.ContextOuterClass.ConfigRule_Custom) configRule_, getParentForChildren(), isClean());
                    configRule_ = null;
                }
                configRuleCase_ = 2;
                onChanged();
                return customBuilder_;
            }

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ConfigRule_ACL, context.ContextOuterClass.ConfigRule_ACL.Builder, context.ContextOuterClass.ConfigRule_ACLOrBuilder> aclBuilder_;

            /**
             * <code>.context.ConfigRule_ACL acl = 3;</code>
             * @return Whether the acl field is set.
             */
            @java.lang.Override
            public boolean hasAcl() {
                return configRuleCase_ == 3;
            }

            /**
             * <code>.context.ConfigRule_ACL acl = 3;</code>
             * @return The acl.
             */
            @java.lang.Override
            public context.ContextOuterClass.ConfigRule_ACL getAcl() {
                if (aclBuilder_ == null) {
                    if (configRuleCase_ == 3) {
                        return (context.ContextOuterClass.ConfigRule_ACL) configRule_;
                    }
                    return context.ContextOuterClass.ConfigRule_ACL.getDefaultInstance();
                } else {
                    if (configRuleCase_ == 3) {
                        return aclBuilder_.getMessage();
                    }
                    return context.ContextOuterClass.ConfigRule_ACL.getDefaultInstance();
                }
            }

            /**
             * <code>.context.ConfigRule_ACL acl = 3;</code>
             */
            public Builder setAcl(context.ContextOuterClass.ConfigRule_ACL value) {
                if (aclBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    configRule_ = value;
                    onChanged();
                } else {
                    aclBuilder_.setMessage(value);
                }
                configRuleCase_ = 3;
                return this;
            }

            /**
             * <code>.context.ConfigRule_ACL acl = 3;</code>
             */
            public Builder setAcl(context.ContextOuterClass.ConfigRule_ACL.Builder builderForValue) {
                if (aclBuilder_ == null) {
                    configRule_ = builderForValue.build();
                    onChanged();
                } else {
                    aclBuilder_.setMessage(builderForValue.build());
                }
                configRuleCase_ = 3;
                return this;
            }

            /**
             * <code>.context.ConfigRule_ACL acl = 3;</code>
             */
            public Builder mergeAcl(context.ContextOuterClass.ConfigRule_ACL value) {
                if (aclBuilder_ == null) {
                    if (configRuleCase_ == 3 && configRule_ != context.ContextOuterClass.ConfigRule_ACL.getDefaultInstance()) {
                        configRule_ = context.ContextOuterClass.ConfigRule_ACL.newBuilder((context.ContextOuterClass.ConfigRule_ACL) configRule_).mergeFrom(value).buildPartial();
                    } else {
                        configRule_ = value;
                    }
                    onChanged();
                } else {
                    if (configRuleCase_ == 3) {
                        aclBuilder_.mergeFrom(value);
                    } else {
                        aclBuilder_.setMessage(value);
                    }
                }
                configRuleCase_ = 3;
                return this;
            }

            /**
             * <code>.context.ConfigRule_ACL acl = 3;</code>
             */
            public Builder clearAcl() {
                if (aclBuilder_ == null) {
                    if (configRuleCase_ == 3) {
                        configRuleCase_ = 0;
                        configRule_ = null;
                        onChanged();
                    }
                } else {
                    if (configRuleCase_ == 3) {
                        configRuleCase_ = 0;
                        configRule_ = null;
                    }
                    aclBuilder_.clear();
                }
                return this;
            }

            /**
             * <code>.context.ConfigRule_ACL acl = 3;</code>
             */
            public context.ContextOuterClass.ConfigRule_ACL.Builder getAclBuilder() {
                return getAclFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.ConfigRule_ACL acl = 3;</code>
             */
            @java.lang.Override
            public context.ContextOuterClass.ConfigRule_ACLOrBuilder getAclOrBuilder() {
                if ((configRuleCase_ == 3) && (aclBuilder_ != null)) {
                    return aclBuilder_.getMessageOrBuilder();
                } else {
                    if (configRuleCase_ == 3) {
                        return (context.ContextOuterClass.ConfigRule_ACL) configRule_;
                    }
                    return context.ContextOuterClass.ConfigRule_ACL.getDefaultInstance();
                }
            }

            /**
             * <code>.context.ConfigRule_ACL acl = 3;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ConfigRule_ACL, context.ContextOuterClass.ConfigRule_ACL.Builder, context.ContextOuterClass.ConfigRule_ACLOrBuilder> getAclFieldBuilder() {
                if (aclBuilder_ == null) {
                    if (!(configRuleCase_ == 3)) {
                        configRule_ = context.ContextOuterClass.ConfigRule_ACL.getDefaultInstance();
                    }
                    aclBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ConfigRule_ACL, context.ContextOuterClass.ConfigRule_ACL.Builder, context.ContextOuterClass.ConfigRule_ACLOrBuilder>((context.ContextOuterClass.ConfigRule_ACL) configRule_, getParentForChildren(), isClean());
                    configRule_ = null;
                }
                configRuleCase_ = 3;
                onChanged();
                return aclBuilder_;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.ConfigRule)
        }

        // @@protoc_insertion_point(class_scope:context.ConfigRule)
        private static final context.ContextOuterClass.ConfigRule DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.ConfigRule();
        }

        public static context.ContextOuterClass.ConfigRule getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<ConfigRule> PARSER = new com.google.protobuf.AbstractParser<ConfigRule>() {

            @java.lang.Override
            public ConfigRule parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<ConfigRule> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<ConfigRule> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.ConfigRule getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface Constraint_CustomOrBuilder extends // @@protoc_insertion_point(interface_extends:context.Constraint_Custom)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>string constraint_type = 1;</code>
         * @return The constraintType.
         */
        java.lang.String getConstraintType();

        /**
         * <code>string constraint_type = 1;</code>
         * @return The bytes for constraintType.
         */
        com.google.protobuf.ByteString getConstraintTypeBytes();

        /**
         * <code>string constraint_value = 2;</code>
         * @return The constraintValue.
         */
        java.lang.String getConstraintValue();

        /**
         * <code>string constraint_value = 2;</code>
         * @return The bytes for constraintValue.
         */
        com.google.protobuf.ByteString getConstraintValueBytes();
    }

    /**
     * Protobuf type {@code context.Constraint_Custom}
     */
    public static final class Constraint_Custom extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.Constraint_Custom)
    Constraint_CustomOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use Constraint_Custom.newBuilder() to construct.
        private Constraint_Custom(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private Constraint_Custom() {
            constraintType_ = "";
            constraintValue_ = "";
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new Constraint_Custom();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_Constraint_Custom_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_Constraint_Custom_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Constraint_Custom.class, context.ContextOuterClass.Constraint_Custom.Builder.class);
        }

        public static final int CONSTRAINT_TYPE_FIELD_NUMBER = 1;

        @SuppressWarnings("serial")
        private volatile java.lang.Object constraintType_ = "";

        /**
         * <code>string constraint_type = 1;</code>
         * @return The constraintType.
         */
        @java.lang.Override
        public java.lang.String getConstraintType() {
            java.lang.Object ref = constraintType_;
            if (ref instanceof java.lang.String) {
                return (java.lang.String) ref;
            } else {
                com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                java.lang.String s = bs.toStringUtf8();
                constraintType_ = s;
                return s;
            }
        }

        /**
         * <code>string constraint_type = 1;</code>
         * @return The bytes for constraintType.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString getConstraintTypeBytes() {
            java.lang.Object ref = constraintType_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                constraintType_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int CONSTRAINT_VALUE_FIELD_NUMBER = 2;

        @SuppressWarnings("serial")
        private volatile java.lang.Object constraintValue_ = "";

        /**
         * <code>string constraint_value = 2;</code>
         * @return The constraintValue.
         */
        @java.lang.Override
        public java.lang.String getConstraintValue() {
            java.lang.Object ref = constraintValue_;
            if (ref instanceof java.lang.String) {
                return (java.lang.String) ref;
            } else {
                com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                java.lang.String s = bs.toStringUtf8();
                constraintValue_ = s;
                return s;
            }
        }

        /**
         * <code>string constraint_value = 2;</code>
         * @return The bytes for constraintValue.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString getConstraintValueBytes() {
            java.lang.Object ref = constraintValue_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                constraintValue_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(constraintType_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 1, constraintType_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(constraintValue_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 2, constraintValue_);
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(constraintType_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, constraintType_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(constraintValue_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, constraintValue_);
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.Constraint_Custom)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.Constraint_Custom other = (context.ContextOuterClass.Constraint_Custom) obj;
            if (!getConstraintType().equals(other.getConstraintType()))
                return false;
            if (!getConstraintValue().equals(other.getConstraintValue()))
                return false;
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            hash = (37 * hash) + CONSTRAINT_TYPE_FIELD_NUMBER;
            hash = (53 * hash) + getConstraintType().hashCode();
            hash = (37 * hash) + CONSTRAINT_VALUE_FIELD_NUMBER;
            hash = (53 * hash) + getConstraintValue().hashCode();
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.Constraint_Custom parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.Constraint_Custom parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.Constraint_Custom parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.Constraint_Custom parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.Constraint_Custom parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.Constraint_Custom parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.Constraint_Custom parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.Constraint_Custom parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.Constraint_Custom parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.Constraint_Custom parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.Constraint_Custom parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.Constraint_Custom parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.Constraint_Custom prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code context.Constraint_Custom}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.Constraint_Custom)
        context.ContextOuterClass.Constraint_CustomOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_Constraint_Custom_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_Constraint_Custom_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Constraint_Custom.class, context.ContextOuterClass.Constraint_Custom.Builder.class);
            }

            // Construct using context.ContextOuterClass.Constraint_Custom.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                constraintType_ = "";
                constraintValue_ = "";
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_Constraint_Custom_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.Constraint_Custom getDefaultInstanceForType() {
                return context.ContextOuterClass.Constraint_Custom.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.Constraint_Custom build() {
                context.ContextOuterClass.Constraint_Custom result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.Constraint_Custom buildPartial() {
                context.ContextOuterClass.Constraint_Custom result = new context.ContextOuterClass.Constraint_Custom(this);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartial0(context.ContextOuterClass.Constraint_Custom result) {
                int from_bitField0_ = bitField0_;
                if (((from_bitField0_ & 0x00000001) != 0)) {
                    result.constraintType_ = constraintType_;
                }
                if (((from_bitField0_ & 0x00000002) != 0)) {
                    result.constraintValue_ = constraintValue_;
                }
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.Constraint_Custom) {
                    return mergeFrom((context.ContextOuterClass.Constraint_Custom) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.Constraint_Custom other) {
                if (other == context.ContextOuterClass.Constraint_Custom.getDefaultInstance())
                    return this;
                if (!other.getConstraintType().isEmpty()) {
                    constraintType_ = other.constraintType_;
                    bitField0_ |= 0x00000001;
                    onChanged();
                }
                if (!other.getConstraintValue().isEmpty()) {
                    constraintValue_ = other.constraintValue_;
                    bitField0_ |= 0x00000002;
                    onChanged();
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 10:
                                {
                                    constraintType_ = input.readStringRequireUtf8();
                                    bitField0_ |= 0x00000001;
                                    break;
                                }
                            // case 10
                            case 18:
                                {
                                    constraintValue_ = input.readStringRequireUtf8();
                                    bitField0_ |= 0x00000002;
                                    break;
                                }
                            // case 18
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private java.lang.Object constraintType_ = "";

            /**
             * <code>string constraint_type = 1;</code>
             * @return The constraintType.
             */
            public java.lang.String getConstraintType() {
                java.lang.Object ref = constraintType_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    constraintType_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }

            /**
             * <code>string constraint_type = 1;</code>
             * @return The bytes for constraintType.
             */
            public com.google.protobuf.ByteString getConstraintTypeBytes() {
                java.lang.Object ref = constraintType_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                    constraintType_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }

            /**
             * <code>string constraint_type = 1;</code>
             * @param value The constraintType to set.
             * @return This builder for chaining.
             */
            public Builder setConstraintType(java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                constraintType_ = value;
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>string constraint_type = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearConstraintType() {
                constraintType_ = getDefaultInstance().getConstraintType();
                bitField0_ = (bitField0_ & ~0x00000001);
                onChanged();
                return this;
            }

            /**
             * <code>string constraint_type = 1;</code>
             * @param value The bytes for constraintType to set.
             * @return This builder for chaining.
             */
            public Builder setConstraintTypeBytes(com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);
                constraintType_ = value;
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            private java.lang.Object constraintValue_ = "";

            /**
             * <code>string constraint_value = 2;</code>
             * @return The constraintValue.
             */
            public java.lang.String getConstraintValue() {
                java.lang.Object ref = constraintValue_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    constraintValue_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }

            /**
             * <code>string constraint_value = 2;</code>
             * @return The bytes for constraintValue.
             */
            public com.google.protobuf.ByteString getConstraintValueBytes() {
                java.lang.Object ref = constraintValue_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                    constraintValue_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }

            /**
             * <code>string constraint_value = 2;</code>
             * @param value The constraintValue to set.
             * @return This builder for chaining.
             */
            public Builder setConstraintValue(java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                constraintValue_ = value;
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>string constraint_value = 2;</code>
             * @return This builder for chaining.
             */
            public Builder clearConstraintValue() {
                constraintValue_ = getDefaultInstance().getConstraintValue();
                bitField0_ = (bitField0_ & ~0x00000002);
                onChanged();
                return this;
            }

            /**
             * <code>string constraint_value = 2;</code>
             * @param value The bytes for constraintValue to set.
             * @return This builder for chaining.
             */
            public Builder setConstraintValueBytes(com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);
                constraintValue_ = value;
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.Constraint_Custom)
        }

        // @@protoc_insertion_point(class_scope:context.Constraint_Custom)
        private static final context.ContextOuterClass.Constraint_Custom DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.Constraint_Custom();
        }

        public static context.ContextOuterClass.Constraint_Custom getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<Constraint_Custom> PARSER = new com.google.protobuf.AbstractParser<Constraint_Custom>() {

            @java.lang.Override
            public Constraint_Custom parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<Constraint_Custom> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<Constraint_Custom> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.Constraint_Custom getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface Constraint_ScheduleOrBuilder extends // @@protoc_insertion_point(interface_extends:context.Constraint_Schedule)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>double start_timestamp = 1;</code>
         * @return The startTimestamp.
         */
        double getStartTimestamp();

        /**
         * <code>float duration_days = 2;</code>
         * @return The durationDays.
         */
        float getDurationDays();
    }

    /**
     * Protobuf type {@code context.Constraint_Schedule}
     */
    public static final class Constraint_Schedule extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.Constraint_Schedule)
    Constraint_ScheduleOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use Constraint_Schedule.newBuilder() to construct.
        private Constraint_Schedule(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private Constraint_Schedule() {
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new Constraint_Schedule();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_Constraint_Schedule_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_Constraint_Schedule_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Constraint_Schedule.class, context.ContextOuterClass.Constraint_Schedule.Builder.class);
        }

        public static final int START_TIMESTAMP_FIELD_NUMBER = 1;

        private double startTimestamp_ = 0D;

        /**
         * <code>double start_timestamp = 1;</code>
         * @return The startTimestamp.
         */
        @java.lang.Override
        public double getStartTimestamp() {
            return startTimestamp_;
        }

        public static final int DURATION_DAYS_FIELD_NUMBER = 2;

        private float durationDays_ = 0F;

        /**
         * <code>float duration_days = 2;</code>
         * @return The durationDays.
         */
        @java.lang.Override
        public float getDurationDays() {
            return durationDays_;
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            if (java.lang.Double.doubleToRawLongBits(startTimestamp_) != 0) {
                output.writeDouble(1, startTimestamp_);
            }
            if (java.lang.Float.floatToRawIntBits(durationDays_) != 0) {
                output.writeFloat(2, durationDays_);
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            if (java.lang.Double.doubleToRawLongBits(startTimestamp_) != 0) {
                size += com.google.protobuf.CodedOutputStream.computeDoubleSize(1, startTimestamp_);
            }
            if (java.lang.Float.floatToRawIntBits(durationDays_) != 0) {
                size += com.google.protobuf.CodedOutputStream.computeFloatSize(2, durationDays_);
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.Constraint_Schedule)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.Constraint_Schedule other = (context.ContextOuterClass.Constraint_Schedule) obj;
            if (java.lang.Double.doubleToLongBits(getStartTimestamp()) != java.lang.Double.doubleToLongBits(other.getStartTimestamp()))
                return false;
            if (java.lang.Float.floatToIntBits(getDurationDays()) != java.lang.Float.floatToIntBits(other.getDurationDays()))
                return false;
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            hash = (37 * hash) + START_TIMESTAMP_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashLong(java.lang.Double.doubleToLongBits(getStartTimestamp()));
            hash = (37 * hash) + DURATION_DAYS_FIELD_NUMBER;
            hash = (53 * hash) + java.lang.Float.floatToIntBits(getDurationDays());
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.Constraint_Schedule parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.Constraint_Schedule parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.Constraint_Schedule parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.Constraint_Schedule parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.Constraint_Schedule parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.Constraint_Schedule parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.Constraint_Schedule parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.Constraint_Schedule parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.Constraint_Schedule parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.Constraint_Schedule parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.Constraint_Schedule parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.Constraint_Schedule parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.Constraint_Schedule prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code context.Constraint_Schedule}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.Constraint_Schedule)
        context.ContextOuterClass.Constraint_ScheduleOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_Constraint_Schedule_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_Constraint_Schedule_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Constraint_Schedule.class, context.ContextOuterClass.Constraint_Schedule.Builder.class);
            }

            // Construct using context.ContextOuterClass.Constraint_Schedule.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                startTimestamp_ = 0D;
                durationDays_ = 0F;
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_Constraint_Schedule_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.Constraint_Schedule getDefaultInstanceForType() {
                return context.ContextOuterClass.Constraint_Schedule.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.Constraint_Schedule build() {
                context.ContextOuterClass.Constraint_Schedule result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.Constraint_Schedule buildPartial() {
                context.ContextOuterClass.Constraint_Schedule result = new context.ContextOuterClass.Constraint_Schedule(this);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartial0(context.ContextOuterClass.Constraint_Schedule result) {
                int from_bitField0_ = bitField0_;
                if (((from_bitField0_ & 0x00000001) != 0)) {
                    result.startTimestamp_ = startTimestamp_;
                }
                if (((from_bitField0_ & 0x00000002) != 0)) {
                    result.durationDays_ = durationDays_;
                }
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.Constraint_Schedule) {
                    return mergeFrom((context.ContextOuterClass.Constraint_Schedule) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.Constraint_Schedule other) {
                if (other == context.ContextOuterClass.Constraint_Schedule.getDefaultInstance())
                    return this;
                if (other.getStartTimestamp() != 0D) {
                    setStartTimestamp(other.getStartTimestamp());
                }
                if (other.getDurationDays() != 0F) {
                    setDurationDays(other.getDurationDays());
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 9:
                                {
                                    startTimestamp_ = input.readDouble();
                                    bitField0_ |= 0x00000001;
                                    break;
                                }
                            // case 9
                            case 21:
                                {
                                    durationDays_ = input.readFloat();
                                    bitField0_ |= 0x00000002;
                                    break;
                                }
                            // case 21
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private double startTimestamp_;

            /**
             * <code>double start_timestamp = 1;</code>
             * @return The startTimestamp.
             */
            @java.lang.Override
            public double getStartTimestamp() {
                return startTimestamp_;
            }

            /**
             * <code>double start_timestamp = 1;</code>
             * @param value The startTimestamp to set.
             * @return This builder for chaining.
             */
            public Builder setStartTimestamp(double value) {
                startTimestamp_ = value;
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>double start_timestamp = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearStartTimestamp() {
                bitField0_ = (bitField0_ & ~0x00000001);
                startTimestamp_ = 0D;
                onChanged();
                return this;
            }

            private float durationDays_;

            /**
             * <code>float duration_days = 2;</code>
             * @return The durationDays.
             */
            @java.lang.Override
            public float getDurationDays() {
                return durationDays_;
            }

            /**
             * <code>float duration_days = 2;</code>
             * @param value The durationDays to set.
             * @return This builder for chaining.
             */
            public Builder setDurationDays(float value) {
                durationDays_ = value;
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>float duration_days = 2;</code>
             * @return This builder for chaining.
             */
            public Builder clearDurationDays() {
                bitField0_ = (bitField0_ & ~0x00000002);
                durationDays_ = 0F;
                onChanged();
                return this;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.Constraint_Schedule)
        }

        // @@protoc_insertion_point(class_scope:context.Constraint_Schedule)
        private static final context.ContextOuterClass.Constraint_Schedule DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.Constraint_Schedule();
        }

        public static context.ContextOuterClass.Constraint_Schedule getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<Constraint_Schedule> PARSER = new com.google.protobuf.AbstractParser<Constraint_Schedule>() {

            @java.lang.Override
            public Constraint_Schedule parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<Constraint_Schedule> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<Constraint_Schedule> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.Constraint_Schedule getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface GPS_PositionOrBuilder extends // @@protoc_insertion_point(interface_extends:context.GPS_Position)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>float latitude = 1;</code>
         * @return The latitude.
         */
        float getLatitude();

        /**
         * <code>float longitude = 2;</code>
         * @return The longitude.
         */
        float getLongitude();
    }

    /**
     * Protobuf type {@code context.GPS_Position}
     */
    public static final class GPS_Position extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.GPS_Position)
    GPS_PositionOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use GPS_Position.newBuilder() to construct.
        private GPS_Position(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private GPS_Position() {
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new GPS_Position();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_GPS_Position_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_GPS_Position_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.GPS_Position.class, context.ContextOuterClass.GPS_Position.Builder.class);
        }

        public static final int LATITUDE_FIELD_NUMBER = 1;

        private float latitude_ = 0F;

        /**
         * <code>float latitude = 1;</code>
         * @return The latitude.
         */
        @java.lang.Override
        public float getLatitude() {
            return latitude_;
        }

        public static final int LONGITUDE_FIELD_NUMBER = 2;

        private float longitude_ = 0F;

        /**
         * <code>float longitude = 2;</code>
         * @return The longitude.
         */
        @java.lang.Override
        public float getLongitude() {
            return longitude_;
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            if (java.lang.Float.floatToRawIntBits(latitude_) != 0) {
                output.writeFloat(1, latitude_);
            }
            if (java.lang.Float.floatToRawIntBits(longitude_) != 0) {
                output.writeFloat(2, longitude_);
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            if (java.lang.Float.floatToRawIntBits(latitude_) != 0) {
                size += com.google.protobuf.CodedOutputStream.computeFloatSize(1, latitude_);
            }
            if (java.lang.Float.floatToRawIntBits(longitude_) != 0) {
                size += com.google.protobuf.CodedOutputStream.computeFloatSize(2, longitude_);
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.GPS_Position)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.GPS_Position other = (context.ContextOuterClass.GPS_Position) obj;
            if (java.lang.Float.floatToIntBits(getLatitude()) != java.lang.Float.floatToIntBits(other.getLatitude()))
                return false;
            if (java.lang.Float.floatToIntBits(getLongitude()) != java.lang.Float.floatToIntBits(other.getLongitude()))
                return false;
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            hash = (37 * hash) + LATITUDE_FIELD_NUMBER;
            hash = (53 * hash) + java.lang.Float.floatToIntBits(getLatitude());
            hash = (37 * hash) + LONGITUDE_FIELD_NUMBER;
            hash = (53 * hash) + java.lang.Float.floatToIntBits(getLongitude());
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.GPS_Position parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.GPS_Position parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.GPS_Position parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.GPS_Position parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.GPS_Position parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.GPS_Position parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.GPS_Position parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.GPS_Position parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.GPS_Position parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.GPS_Position parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.GPS_Position parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.GPS_Position parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.GPS_Position prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code context.GPS_Position}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.GPS_Position)
        context.ContextOuterClass.GPS_PositionOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_GPS_Position_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_GPS_Position_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.GPS_Position.class, context.ContextOuterClass.GPS_Position.Builder.class);
            }

            // Construct using context.ContextOuterClass.GPS_Position.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                latitude_ = 0F;
                longitude_ = 0F;
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_GPS_Position_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.GPS_Position getDefaultInstanceForType() {
                return context.ContextOuterClass.GPS_Position.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.GPS_Position build() {
                context.ContextOuterClass.GPS_Position result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.GPS_Position buildPartial() {
                context.ContextOuterClass.GPS_Position result = new context.ContextOuterClass.GPS_Position(this);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartial0(context.ContextOuterClass.GPS_Position result) {
                int from_bitField0_ = bitField0_;
                if (((from_bitField0_ & 0x00000001) != 0)) {
                    result.latitude_ = latitude_;
                }
                if (((from_bitField0_ & 0x00000002) != 0)) {
                    result.longitude_ = longitude_;
                }
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.GPS_Position) {
                    return mergeFrom((context.ContextOuterClass.GPS_Position) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.GPS_Position other) {
                if (other == context.ContextOuterClass.GPS_Position.getDefaultInstance())
                    return this;
                if (other.getLatitude() != 0F) {
                    setLatitude(other.getLatitude());
                }
                if (other.getLongitude() != 0F) {
                    setLongitude(other.getLongitude());
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 13:
                                {
                                    latitude_ = input.readFloat();
                                    bitField0_ |= 0x00000001;
                                    break;
                                }
                            // case 13
                            case 21:
                                {
                                    longitude_ = input.readFloat();
                                    bitField0_ |= 0x00000002;
                                    break;
                                }
                            // case 21
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private float latitude_;

            /**
             * <code>float latitude = 1;</code>
             * @return The latitude.
             */
            @java.lang.Override
            public float getLatitude() {
                return latitude_;
            }

            /**
             * <code>float latitude = 1;</code>
             * @param value The latitude to set.
             * @return This builder for chaining.
             */
            public Builder setLatitude(float value) {
                latitude_ = value;
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>float latitude = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearLatitude() {
                bitField0_ = (bitField0_ & ~0x00000001);
                latitude_ = 0F;
                onChanged();
                return this;
            }

            private float longitude_;

            /**
             * <code>float longitude = 2;</code>
             * @return The longitude.
             */
            @java.lang.Override
            public float getLongitude() {
                return longitude_;
            }

            /**
             * <code>float longitude = 2;</code>
             * @param value The longitude to set.
             * @return This builder for chaining.
             */
            public Builder setLongitude(float value) {
                longitude_ = value;
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>float longitude = 2;</code>
             * @return This builder for chaining.
             */
            public Builder clearLongitude() {
                bitField0_ = (bitField0_ & ~0x00000002);
                longitude_ = 0F;
                onChanged();
                return this;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.GPS_Position)
        }

        // @@protoc_insertion_point(class_scope:context.GPS_Position)
        private static final context.ContextOuterClass.GPS_Position DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.GPS_Position();
        }

        public static context.ContextOuterClass.GPS_Position getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<GPS_Position> PARSER = new com.google.protobuf.AbstractParser<GPS_Position>() {

            @java.lang.Override
            public GPS_Position parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<GPS_Position> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<GPS_Position> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.GPS_Position getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface LocationOrBuilder extends // @@protoc_insertion_point(interface_extends:context.Location)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>string region = 1;</code>
         * @return Whether the region field is set.
         */
        boolean hasRegion();

        /**
         * <code>string region = 1;</code>
         * @return The region.
         */
        java.lang.String getRegion();

        /**
         * <code>string region = 1;</code>
         * @return The bytes for region.
         */
        com.google.protobuf.ByteString getRegionBytes();

        /**
         * <code>.context.GPS_Position gps_position = 2;</code>
         * @return Whether the gpsPosition field is set.
         */
        boolean hasGpsPosition();

        /**
         * <code>.context.GPS_Position gps_position = 2;</code>
         * @return The gpsPosition.
         */
        context.ContextOuterClass.GPS_Position getGpsPosition();

        /**
         * <code>.context.GPS_Position gps_position = 2;</code>
         */
        context.ContextOuterClass.GPS_PositionOrBuilder getGpsPositionOrBuilder();

        /**
         * <code>string interface = 3;</code>
         * @return Whether the interface field is set.
         */
        boolean hasInterface();

        /**
         * <code>string interface = 3;</code>
         * @return The interface.
         */
        java.lang.String getInterface();

        /**
         * <code>string interface = 3;</code>
         * @return The bytes for interface.
         */
        com.google.protobuf.ByteString getInterfaceBytes();

        /**
         * <code>string circuit_pack = 4;</code>
         * @return Whether the circuitPack field is set.
         */
        boolean hasCircuitPack();

        /**
         * <code>string circuit_pack = 4;</code>
         * @return The circuitPack.
         */
        java.lang.String getCircuitPack();

        /**
         * <code>string circuit_pack = 4;</code>
         * @return The bytes for circuitPack.
         */
        com.google.protobuf.ByteString getCircuitPackBytes();

        context.ContextOuterClass.Location.LocationCase getLocationCase();
    }

    /**
     * Protobuf type {@code context.Location}
     */
    public static final class Location extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.Location)
    LocationOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use Location.newBuilder() to construct.
        private Location(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private Location() {
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new Location();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_Location_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_Location_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Location.class, context.ContextOuterClass.Location.Builder.class);
        }

        private int locationCase_ = 0;

        @SuppressWarnings("serial")
        private java.lang.Object location_;

        public enum LocationCase implements com.google.protobuf.Internal.EnumLite, com.google.protobuf.AbstractMessage.InternalOneOfEnum {

            REGION(1), GPS_POSITION(2), INTERFACE(3), CIRCUIT_PACK(4), LOCATION_NOT_SET(0);

            private final int value;

            private LocationCase(int value) {
                this.value = value;
            }

            /**
             * @param value The number of the enum to look for.
             * @return The enum associated with the given number.
             * @deprecated Use {@link #forNumber(int)} instead.
             */
            @java.lang.Deprecated
            public static LocationCase valueOf(int value) {
                return forNumber(value);
            }

            public static LocationCase forNumber(int value) {
                switch(value) {
                    case 1:
                        return REGION;
                    case 2:
                        return GPS_POSITION;
                    case 3:
                        return INTERFACE;
                    case 4:
                        return CIRCUIT_PACK;
                    case 0:
                        return LOCATION_NOT_SET;
                    default:
                        return null;
                }
            }

            public int getNumber() {
                return this.value;
            }
        }

        public LocationCase getLocationCase() {
            return LocationCase.forNumber(locationCase_);
        }

        public static final int REGION_FIELD_NUMBER = 1;

        /**
         * <code>string region = 1;</code>
         * @return Whether the region field is set.
         */
        public boolean hasRegion() {
            return locationCase_ == 1;
        }

        /**
         * <code>string region = 1;</code>
         * @return The region.
         */
        public java.lang.String getRegion() {
            java.lang.Object ref = "";
            if (locationCase_ == 1) {
                ref = location_;
            }
            if (ref instanceof java.lang.String) {
                return (java.lang.String) ref;
            } else {
                com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                java.lang.String s = bs.toStringUtf8();
                if (locationCase_ == 1) {
                    location_ = s;
                }
                return s;
            }
        }

        /**
         * <code>string region = 1;</code>
         * @return The bytes for region.
         */
        public com.google.protobuf.ByteString getRegionBytes() {
            java.lang.Object ref = "";
            if (locationCase_ == 1) {
                ref = location_;
            }
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                if (locationCase_ == 1) {
                    location_ = b;
                }
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int GPS_POSITION_FIELD_NUMBER = 2;

        /**
         * <code>.context.GPS_Position gps_position = 2;</code>
         * @return Whether the gpsPosition field is set.
         */
        @java.lang.Override
        public boolean hasGpsPosition() {
            return locationCase_ == 2;
        }

        /**
         * <code>.context.GPS_Position gps_position = 2;</code>
         * @return The gpsPosition.
         */
        @java.lang.Override
        public context.ContextOuterClass.GPS_Position getGpsPosition() {
            if (locationCase_ == 2) {
                return (context.ContextOuterClass.GPS_Position) location_;
            }
            return context.ContextOuterClass.GPS_Position.getDefaultInstance();
        }

        /**
         * <code>.context.GPS_Position gps_position = 2;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.GPS_PositionOrBuilder getGpsPositionOrBuilder() {
            if (locationCase_ == 2) {
                return (context.ContextOuterClass.GPS_Position) location_;
            }
            return context.ContextOuterClass.GPS_Position.getDefaultInstance();
        }

        public static final int INTERFACE_FIELD_NUMBER = 3;

        /**
         * <code>string interface = 3;</code>
         * @return Whether the interface field is set.
         */
        public boolean hasInterface() {
            return locationCase_ == 3;
        }

        /**
         * <code>string interface = 3;</code>
         * @return The interface.
         */
        public java.lang.String getInterface() {
            java.lang.Object ref = "";
            if (locationCase_ == 3) {
                ref = location_;
            }
            if (ref instanceof java.lang.String) {
                return (java.lang.String) ref;
            } else {
                com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                java.lang.String s = bs.toStringUtf8();
                if (locationCase_ == 3) {
                    location_ = s;
                }
                return s;
            }
        }

        /**
         * <code>string interface = 3;</code>
         * @return The bytes for interface.
         */
        public com.google.protobuf.ByteString getInterfaceBytes() {
            java.lang.Object ref = "";
            if (locationCase_ == 3) {
                ref = location_;
            }
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                if (locationCase_ == 3) {
                    location_ = b;
                }
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int CIRCUIT_PACK_FIELD_NUMBER = 4;

        /**
         * <code>string circuit_pack = 4;</code>
         * @return Whether the circuitPack field is set.
         */
        public boolean hasCircuitPack() {
            return locationCase_ == 4;
        }

        /**
         * <code>string circuit_pack = 4;</code>
         * @return The circuitPack.
         */
        public java.lang.String getCircuitPack() {
            java.lang.Object ref = "";
            if (locationCase_ == 4) {
                ref = location_;
            }
            if (ref instanceof java.lang.String) {
                return (java.lang.String) ref;
            } else {
                com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                java.lang.String s = bs.toStringUtf8();
                if (locationCase_ == 4) {
                    location_ = s;
                }
                return s;
            }
        }

        /**
         * <code>string circuit_pack = 4;</code>
         * @return The bytes for circuitPack.
         */
        public com.google.protobuf.ByteString getCircuitPackBytes() {
            java.lang.Object ref = "";
            if (locationCase_ == 4) {
                ref = location_;
            }
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                if (locationCase_ == 4) {
                    location_ = b;
                }
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            if (locationCase_ == 1) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 1, location_);
            }
            if (locationCase_ == 2) {
                output.writeMessage(2, (context.ContextOuterClass.GPS_Position) location_);
            }
            if (locationCase_ == 3) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 3, location_);
            }
            if (locationCase_ == 4) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 4, location_);
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            if (locationCase_ == 1) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, location_);
            }
            if (locationCase_ == 2) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, (context.ContextOuterClass.GPS_Position) location_);
            }
            if (locationCase_ == 3) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, location_);
            }
            if (locationCase_ == 4) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, location_);
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.Location)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.Location other = (context.ContextOuterClass.Location) obj;
            if (!getLocationCase().equals(other.getLocationCase()))
                return false;
            switch(locationCase_) {
                case 1:
                    if (!getRegion().equals(other.getRegion()))
                        return false;
                    break;
                case 2:
                    if (!getGpsPosition().equals(other.getGpsPosition()))
                        return false;
                    break;
                case 3:
                    if (!getInterface().equals(other.getInterface()))
                        return false;
                    break;
                case 4:
                    if (!getCircuitPack().equals(other.getCircuitPack()))
                        return false;
                    break;
                case 0:
                default:
            }
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            switch(locationCase_) {
                case 1:
                    hash = (37 * hash) + REGION_FIELD_NUMBER;
                    hash = (53 * hash) + getRegion().hashCode();
                    break;
                case 2:
                    hash = (37 * hash) + GPS_POSITION_FIELD_NUMBER;
                    hash = (53 * hash) + getGpsPosition().hashCode();
                    break;
                case 3:
                    hash = (37 * hash) + INTERFACE_FIELD_NUMBER;
                    hash = (53 * hash) + getInterface().hashCode();
                    break;
                case 4:
                    hash = (37 * hash) + CIRCUIT_PACK_FIELD_NUMBER;
                    hash = (53 * hash) + getCircuitPack().hashCode();
                    break;
                case 0:
                default:
            }
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.Location parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.Location parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.Location parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.Location parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.Location parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.Location parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.Location parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.Location parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.Location parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.Location parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.Location parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.Location parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.Location prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code context.Location}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.Location)
        context.ContextOuterClass.LocationOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_Location_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_Location_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Location.class, context.ContextOuterClass.Location.Builder.class);
            }

            // Construct using context.ContextOuterClass.Location.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                if (gpsPositionBuilder_ != null) {
                    gpsPositionBuilder_.clear();
                }
                locationCase_ = 0;
                location_ = null;
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_Location_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.Location getDefaultInstanceForType() {
                return context.ContextOuterClass.Location.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.Location build() {
                context.ContextOuterClass.Location result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.Location buildPartial() {
                context.ContextOuterClass.Location result = new context.ContextOuterClass.Location(this);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                buildPartialOneofs(result);
                onBuilt();
                return result;
            }

            private void buildPartial0(context.ContextOuterClass.Location result) {
                int from_bitField0_ = bitField0_;
            }

            private void buildPartialOneofs(context.ContextOuterClass.Location result) {
                result.locationCase_ = locationCase_;
                result.location_ = this.location_;
                if (locationCase_ == 2 && gpsPositionBuilder_ != null) {
                    result.location_ = gpsPositionBuilder_.build();
                }
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.Location) {
                    return mergeFrom((context.ContextOuterClass.Location) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.Location other) {
                if (other == context.ContextOuterClass.Location.getDefaultInstance())
                    return this;
                switch(other.getLocationCase()) {
                    case REGION:
                        {
                            locationCase_ = 1;
                            location_ = other.location_;
                            onChanged();
                            break;
                        }
                    case GPS_POSITION:
                        {
                            mergeGpsPosition(other.getGpsPosition());
                            break;
                        }
                    case INTERFACE:
                        {
                            locationCase_ = 3;
                            location_ = other.location_;
                            onChanged();
                            break;
                        }
                    case CIRCUIT_PACK:
                        {
                            locationCase_ = 4;
                            location_ = other.location_;
                            onChanged();
                            break;
                        }
                    case LOCATION_NOT_SET:
                        {
                            break;
                        }
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 10:
                                {
                                    java.lang.String s = input.readStringRequireUtf8();
                                    locationCase_ = 1;
                                    location_ = s;
                                    break;
                                }
                            // case 10
                            case 18:
                                {
                                    input.readMessage(getGpsPositionFieldBuilder().getBuilder(), extensionRegistry);
                                    locationCase_ = 2;
                                    break;
                                }
                            // case 18
                            case 26:
                                {
                                    java.lang.String s = input.readStringRequireUtf8();
                                    locationCase_ = 3;
                                    location_ = s;
                                    break;
                                }
                            // case 26
                            case 34:
                                {
                                    java.lang.String s = input.readStringRequireUtf8();
                                    locationCase_ = 4;
                                    location_ = s;
                                    break;
                                }
                            // case 34
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int locationCase_ = 0;

            private java.lang.Object location_;

            public LocationCase getLocationCase() {
                return LocationCase.forNumber(locationCase_);
            }

            public Builder clearLocation() {
                locationCase_ = 0;
                location_ = null;
                onChanged();
                return this;
            }

            private int bitField0_;

            /**
             * <code>string region = 1;</code>
             * @return Whether the region field is set.
             */
            @java.lang.Override
            public boolean hasRegion() {
                return locationCase_ == 1;
            }

            /**
             * <code>string region = 1;</code>
             * @return The region.
             */
            @java.lang.Override
            public java.lang.String getRegion() {
                java.lang.Object ref = "";
                if (locationCase_ == 1) {
                    ref = location_;
                }
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    if (locationCase_ == 1) {
                        location_ = s;
                    }
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }

            /**
             * <code>string region = 1;</code>
             * @return The bytes for region.
             */
            @java.lang.Override
            public com.google.protobuf.ByteString getRegionBytes() {
                java.lang.Object ref = "";
                if (locationCase_ == 1) {
                    ref = location_;
                }
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                    if (locationCase_ == 1) {
                        location_ = b;
                    }
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }

            /**
             * <code>string region = 1;</code>
             * @param value The region to set.
             * @return This builder for chaining.
             */
            public Builder setRegion(java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                locationCase_ = 1;
                location_ = value;
                onChanged();
                return this;
            }

            /**
             * <code>string region = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearRegion() {
                if (locationCase_ == 1) {
                    locationCase_ = 0;
                    location_ = null;
                    onChanged();
                }
                return this;
            }

            /**
             * <code>string region = 1;</code>
             * @param value The bytes for region to set.
             * @return This builder for chaining.
             */
            public Builder setRegionBytes(com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);
                locationCase_ = 1;
                location_ = value;
                onChanged();
                return this;
            }

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.GPS_Position, context.ContextOuterClass.GPS_Position.Builder, context.ContextOuterClass.GPS_PositionOrBuilder> gpsPositionBuilder_;

            /**
             * <code>.context.GPS_Position gps_position = 2;</code>
             * @return Whether the gpsPosition field is set.
             */
            @java.lang.Override
            public boolean hasGpsPosition() {
                return locationCase_ == 2;
            }

            /**
             * <code>.context.GPS_Position gps_position = 2;</code>
             * @return The gpsPosition.
             */
            @java.lang.Override
            public context.ContextOuterClass.GPS_Position getGpsPosition() {
                if (gpsPositionBuilder_ == null) {
                    if (locationCase_ == 2) {
                        return (context.ContextOuterClass.GPS_Position) location_;
                    }
                    return context.ContextOuterClass.GPS_Position.getDefaultInstance();
                } else {
                    if (locationCase_ == 2) {
                        return gpsPositionBuilder_.getMessage();
                    }
                    return context.ContextOuterClass.GPS_Position.getDefaultInstance();
                }
            }

            /**
             * <code>.context.GPS_Position gps_position = 2;</code>
             */
            public Builder setGpsPosition(context.ContextOuterClass.GPS_Position value) {
                if (gpsPositionBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    location_ = value;
                    onChanged();
                } else {
                    gpsPositionBuilder_.setMessage(value);
                }
                locationCase_ = 2;
                return this;
            }

            /**
             * <code>.context.GPS_Position gps_position = 2;</code>
             */
            public Builder setGpsPosition(context.ContextOuterClass.GPS_Position.Builder builderForValue) {
                if (gpsPositionBuilder_ == null) {
                    location_ = builderForValue.build();
                    onChanged();
                } else {
                    gpsPositionBuilder_.setMessage(builderForValue.build());
                }
                locationCase_ = 2;
                return this;
            }

            /**
             * <code>.context.GPS_Position gps_position = 2;</code>
             */
            public Builder mergeGpsPosition(context.ContextOuterClass.GPS_Position value) {
                if (gpsPositionBuilder_ == null) {
                    if (locationCase_ == 2 && location_ != context.ContextOuterClass.GPS_Position.getDefaultInstance()) {
                        location_ = context.ContextOuterClass.GPS_Position.newBuilder((context.ContextOuterClass.GPS_Position) location_).mergeFrom(value).buildPartial();
                    } else {
                        location_ = value;
                    }
                    onChanged();
                } else {
                    if (locationCase_ == 2) {
                        gpsPositionBuilder_.mergeFrom(value);
                    } else {
                        gpsPositionBuilder_.setMessage(value);
                    }
                }
                locationCase_ = 2;
                return this;
            }

            /**
             * <code>.context.GPS_Position gps_position = 2;</code>
             */
            public Builder clearGpsPosition() {
                if (gpsPositionBuilder_ == null) {
                    if (locationCase_ == 2) {
                        locationCase_ = 0;
                        location_ = null;
                        onChanged();
                    }
                } else {
                    if (locationCase_ == 2) {
                        locationCase_ = 0;
                        location_ = null;
                    }
                    gpsPositionBuilder_.clear();
                }
                return this;
            }

            /**
             * <code>.context.GPS_Position gps_position = 2;</code>
             */
            public context.ContextOuterClass.GPS_Position.Builder getGpsPositionBuilder() {
                return getGpsPositionFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.GPS_Position gps_position = 2;</code>
             */
            @java.lang.Override
            public context.ContextOuterClass.GPS_PositionOrBuilder getGpsPositionOrBuilder() {
                if ((locationCase_ == 2) && (gpsPositionBuilder_ != null)) {
                    return gpsPositionBuilder_.getMessageOrBuilder();
                } else {
                    if (locationCase_ == 2) {
                        return (context.ContextOuterClass.GPS_Position) location_;
                    }
                    return context.ContextOuterClass.GPS_Position.getDefaultInstance();
                }
            }

            /**
             * <code>.context.GPS_Position gps_position = 2;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.GPS_Position, context.ContextOuterClass.GPS_Position.Builder, context.ContextOuterClass.GPS_PositionOrBuilder> getGpsPositionFieldBuilder() {
                if (gpsPositionBuilder_ == null) {
                    if (!(locationCase_ == 2)) {
                        location_ = context.ContextOuterClass.GPS_Position.getDefaultInstance();
                    }
                    gpsPositionBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.GPS_Position, context.ContextOuterClass.GPS_Position.Builder, context.ContextOuterClass.GPS_PositionOrBuilder>((context.ContextOuterClass.GPS_Position) location_, getParentForChildren(), isClean());
                    location_ = null;
                }
                locationCase_ = 2;
                onChanged();
                return gpsPositionBuilder_;
            }

            /**
             * <code>string interface = 3;</code>
             * @return Whether the interface field is set.
             */
            @java.lang.Override
            public boolean hasInterface() {
                return locationCase_ == 3;
            }

            /**
             * <code>string interface = 3;</code>
             * @return The interface.
             */
            @java.lang.Override
            public java.lang.String getInterface() {
                java.lang.Object ref = "";
                if (locationCase_ == 3) {
                    ref = location_;
                }
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    if (locationCase_ == 3) {
                        location_ = s;
                    }
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }

            /**
             * <code>string interface = 3;</code>
             * @return The bytes for interface.
             */
            @java.lang.Override
            public com.google.protobuf.ByteString getInterfaceBytes() {
                java.lang.Object ref = "";
                if (locationCase_ == 3) {
                    ref = location_;
                }
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                    if (locationCase_ == 3) {
                        location_ = b;
                    }
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }

            /**
             * <code>string interface = 3;</code>
             * @param value The interface to set.
             * @return This builder for chaining.
             */
            public Builder setInterface(java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                locationCase_ = 3;
                location_ = value;
                onChanged();
                return this;
            }

            /**
             * <code>string interface = 3;</code>
             * @return This builder for chaining.
             */
            public Builder clearInterface() {
                if (locationCase_ == 3) {
                    locationCase_ = 0;
                    location_ = null;
                    onChanged();
                }
                return this;
            }

            /**
             * <code>string interface = 3;</code>
             * @param value The bytes for interface to set.
             * @return This builder for chaining.
             */
            public Builder setInterfaceBytes(com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);
                locationCase_ = 3;
                location_ = value;
                onChanged();
                return this;
            }

            /**
             * <code>string circuit_pack = 4;</code>
             * @return Whether the circuitPack field is set.
             */
            @java.lang.Override
            public boolean hasCircuitPack() {
                return locationCase_ == 4;
            }

            /**
             * <code>string circuit_pack = 4;</code>
             * @return The circuitPack.
             */
            @java.lang.Override
            public java.lang.String getCircuitPack() {
                java.lang.Object ref = "";
                if (locationCase_ == 4) {
                    ref = location_;
                }
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    if (locationCase_ == 4) {
                        location_ = s;
                    }
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }

            /**
             * <code>string circuit_pack = 4;</code>
             * @return The bytes for circuitPack.
             */
            @java.lang.Override
            public com.google.protobuf.ByteString getCircuitPackBytes() {
                java.lang.Object ref = "";
                if (locationCase_ == 4) {
                    ref = location_;
                }
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                    if (locationCase_ == 4) {
                        location_ = b;
                    }
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }

            /**
             * <code>string circuit_pack = 4;</code>
             * @param value The circuitPack to set.
             * @return This builder for chaining.
             */
            public Builder setCircuitPack(java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                locationCase_ = 4;
                location_ = value;
                onChanged();
                return this;
            }

            /**
             * <code>string circuit_pack = 4;</code>
             * @return This builder for chaining.
             */
            public Builder clearCircuitPack() {
                if (locationCase_ == 4) {
                    locationCase_ = 0;
                    location_ = null;
                    onChanged();
                }
                return this;
            }

            /**
             * <code>string circuit_pack = 4;</code>
             * @param value The bytes for circuitPack to set.
             * @return This builder for chaining.
             */
            public Builder setCircuitPackBytes(com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);
                locationCase_ = 4;
                location_ = value;
                onChanged();
                return this;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.Location)
        }

        // @@protoc_insertion_point(class_scope:context.Location)
        private static final context.ContextOuterClass.Location DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.Location();
        }

        public static context.ContextOuterClass.Location getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<Location> PARSER = new com.google.protobuf.AbstractParser<Location>() {

            @java.lang.Override
            public Location parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<Location> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<Location> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.Location getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface Constraint_EndPointLocationOrBuilder extends // @@protoc_insertion_point(interface_extends:context.Constraint_EndPointLocation)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>.context.EndPointId endpoint_id = 1;</code>
         * @return Whether the endpointId field is set.
         */
        boolean hasEndpointId();

        /**
         * <code>.context.EndPointId endpoint_id = 1;</code>
         * @return The endpointId.
         */
        context.ContextOuterClass.EndPointId getEndpointId();

        /**
         * <code>.context.EndPointId endpoint_id = 1;</code>
         */
        context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder();

        /**
         * <code>.context.Location location = 2;</code>
         * @return Whether the location field is set.
         */
        boolean hasLocation();

        /**
         * <code>.context.Location location = 2;</code>
         * @return The location.
         */
        context.ContextOuterClass.Location getLocation();

        /**
         * <code>.context.Location location = 2;</code>
         */
        context.ContextOuterClass.LocationOrBuilder getLocationOrBuilder();
    }

    /**
     * Protobuf type {@code context.Constraint_EndPointLocation}
     */
    public static final class Constraint_EndPointLocation extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.Constraint_EndPointLocation)
    Constraint_EndPointLocationOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use Constraint_EndPointLocation.newBuilder() to construct.
        private Constraint_EndPointLocation(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private Constraint_EndPointLocation() {
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new Constraint_EndPointLocation();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_Constraint_EndPointLocation_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_Constraint_EndPointLocation_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Constraint_EndPointLocation.class, context.ContextOuterClass.Constraint_EndPointLocation.Builder.class);
        }

        public static final int ENDPOINT_ID_FIELD_NUMBER = 1;

        private context.ContextOuterClass.EndPointId endpointId_;

        /**
         * <code>.context.EndPointId endpoint_id = 1;</code>
         * @return Whether the endpointId field is set.
         */
        @java.lang.Override
        public boolean hasEndpointId() {
            return endpointId_ != null;
        }

        /**
         * <code>.context.EndPointId endpoint_id = 1;</code>
         * @return The endpointId.
         */
        @java.lang.Override
        public context.ContextOuterClass.EndPointId getEndpointId() {
            return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
        }

        /**
         * <code>.context.EndPointId endpoint_id = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder() {
            return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
        }

        public static final int LOCATION_FIELD_NUMBER = 2;

        private context.ContextOuterClass.Location location_;

        /**
         * <code>.context.Location location = 2;</code>
         * @return Whether the location field is set.
         */
        @java.lang.Override
        public boolean hasLocation() {
            return location_ != null;
        }

        /**
         * <code>.context.Location location = 2;</code>
         * @return The location.
         */
        @java.lang.Override
        public context.ContextOuterClass.Location getLocation() {
            return location_ == null ? context.ContextOuterClass.Location.getDefaultInstance() : location_;
        }

        /**
         * <code>.context.Location location = 2;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.LocationOrBuilder getLocationOrBuilder() {
            return location_ == null ? context.ContextOuterClass.Location.getDefaultInstance() : location_;
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            if (endpointId_ != null) {
                output.writeMessage(1, getEndpointId());
            }
            if (location_ != null) {
                output.writeMessage(2, getLocation());
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            if (endpointId_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getEndpointId());
            }
            if (location_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getLocation());
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.Constraint_EndPointLocation)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.Constraint_EndPointLocation other = (context.ContextOuterClass.Constraint_EndPointLocation) obj;
            if (hasEndpointId() != other.hasEndpointId())
                return false;
            if (hasEndpointId()) {
                if (!getEndpointId().equals(other.getEndpointId()))
                    return false;
            }
            if (hasLocation() != other.hasLocation())
                return false;
            if (hasLocation()) {
                if (!getLocation().equals(other.getLocation()))
                    return false;
            }
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            if (hasEndpointId()) {
                hash = (37 * hash) + ENDPOINT_ID_FIELD_NUMBER;
                hash = (53 * hash) + getEndpointId().hashCode();
            }
            if (hasLocation()) {
                hash = (37 * hash) + LOCATION_FIELD_NUMBER;
                hash = (53 * hash) + getLocation().hashCode();
            }
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.Constraint_EndPointLocation parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.Constraint_EndPointLocation parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.Constraint_EndPointLocation parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.Constraint_EndPointLocation parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.Constraint_EndPointLocation parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.Constraint_EndPointLocation parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.Constraint_EndPointLocation parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.Constraint_EndPointLocation parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.Constraint_EndPointLocation parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.Constraint_EndPointLocation parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.Constraint_EndPointLocation parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.Constraint_EndPointLocation parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.Constraint_EndPointLocation prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code context.Constraint_EndPointLocation}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.Constraint_EndPointLocation)
        context.ContextOuterClass.Constraint_EndPointLocationOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_Constraint_EndPointLocation_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_Constraint_EndPointLocation_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Constraint_EndPointLocation.class, context.ContextOuterClass.Constraint_EndPointLocation.Builder.class);
            }

            // Construct using context.ContextOuterClass.Constraint_EndPointLocation.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                endpointId_ = null;
                if (endpointIdBuilder_ != null) {
                    endpointIdBuilder_.dispose();
                    endpointIdBuilder_ = null;
                }
                location_ = null;
                if (locationBuilder_ != null) {
                    locationBuilder_.dispose();
                    locationBuilder_ = null;
                }
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_Constraint_EndPointLocation_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.Constraint_EndPointLocation getDefaultInstanceForType() {
                return context.ContextOuterClass.Constraint_EndPointLocation.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.Constraint_EndPointLocation build() {
                context.ContextOuterClass.Constraint_EndPointLocation result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.Constraint_EndPointLocation buildPartial() {
                context.ContextOuterClass.Constraint_EndPointLocation result = new context.ContextOuterClass.Constraint_EndPointLocation(this);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartial0(context.ContextOuterClass.Constraint_EndPointLocation result) {
                int from_bitField0_ = bitField0_;
                if (((from_bitField0_ & 0x00000001) != 0)) {
                    result.endpointId_ = endpointIdBuilder_ == null ? endpointId_ : endpointIdBuilder_.build();
                }
                if (((from_bitField0_ & 0x00000002) != 0)) {
                    result.location_ = locationBuilder_ == null ? location_ : locationBuilder_.build();
                }
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.Constraint_EndPointLocation) {
                    return mergeFrom((context.ContextOuterClass.Constraint_EndPointLocation) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.Constraint_EndPointLocation other) {
                if (other == context.ContextOuterClass.Constraint_EndPointLocation.getDefaultInstance())
                    return this;
                if (other.hasEndpointId()) {
                    mergeEndpointId(other.getEndpointId());
                }
                if (other.hasLocation()) {
                    mergeLocation(other.getLocation());
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 10:
                                {
                                    input.readMessage(getEndpointIdFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000001;
                                    break;
                                }
                            // case 10
                            case 18:
                                {
                                    input.readMessage(getLocationFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000002;
                                    break;
                                }
                            // case 18
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private context.ContextOuterClass.EndPointId endpointId_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> endpointIdBuilder_;

            /**
             * <code>.context.EndPointId endpoint_id = 1;</code>
             * @return Whether the endpointId field is set.
             */
            public boolean hasEndpointId() {
                return ((bitField0_ & 0x00000001) != 0);
            }

            /**
             * <code>.context.EndPointId endpoint_id = 1;</code>
             * @return The endpointId.
             */
            public context.ContextOuterClass.EndPointId getEndpointId() {
                if (endpointIdBuilder_ == null) {
                    return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
                } else {
                    return endpointIdBuilder_.getMessage();
                }
            }

            /**
             * <code>.context.EndPointId endpoint_id = 1;</code>
             */
            public Builder setEndpointId(context.ContextOuterClass.EndPointId value) {
                if (endpointIdBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    endpointId_ = value;
                } else {
                    endpointIdBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.EndPointId endpoint_id = 1;</code>
             */
            public Builder setEndpointId(context.ContextOuterClass.EndPointId.Builder builderForValue) {
                if (endpointIdBuilder_ == null) {
                    endpointId_ = builderForValue.build();
                } else {
                    endpointIdBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.EndPointId endpoint_id = 1;</code>
             */
            public Builder mergeEndpointId(context.ContextOuterClass.EndPointId value) {
                if (endpointIdBuilder_ == null) {
                    if (((bitField0_ & 0x00000001) != 0) && endpointId_ != null && endpointId_ != context.ContextOuterClass.EndPointId.getDefaultInstance()) {
                        getEndpointIdBuilder().mergeFrom(value);
                    } else {
                        endpointId_ = value;
                    }
                } else {
                    endpointIdBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.EndPointId endpoint_id = 1;</code>
             */
            public Builder clearEndpointId() {
                bitField0_ = (bitField0_ & ~0x00000001);
                endpointId_ = null;
                if (endpointIdBuilder_ != null) {
                    endpointIdBuilder_.dispose();
                    endpointIdBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.EndPointId endpoint_id = 1;</code>
             */
            public context.ContextOuterClass.EndPointId.Builder getEndpointIdBuilder() {
                bitField0_ |= 0x00000001;
                onChanged();
                return getEndpointIdFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.EndPointId endpoint_id = 1;</code>
             */
            public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder() {
                if (endpointIdBuilder_ != null) {
                    return endpointIdBuilder_.getMessageOrBuilder();
                } else {
                    return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
                }
            }

            /**
             * <code>.context.EndPointId endpoint_id = 1;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> getEndpointIdFieldBuilder() {
                if (endpointIdBuilder_ == null) {
                    endpointIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder>(getEndpointId(), getParentForChildren(), isClean());
                    endpointId_ = null;
                }
                return endpointIdBuilder_;
            }

            private context.ContextOuterClass.Location location_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Location, context.ContextOuterClass.Location.Builder, context.ContextOuterClass.LocationOrBuilder> locationBuilder_;

            /**
             * <code>.context.Location location = 2;</code>
             * @return Whether the location field is set.
             */
            public boolean hasLocation() {
                return ((bitField0_ & 0x00000002) != 0);
            }

            /**
             * <code>.context.Location location = 2;</code>
             * @return The location.
             */
            public context.ContextOuterClass.Location getLocation() {
                if (locationBuilder_ == null) {
                    return location_ == null ? context.ContextOuterClass.Location.getDefaultInstance() : location_;
                } else {
                    return locationBuilder_.getMessage();
                }
            }

            /**
             * <code>.context.Location location = 2;</code>
             */
            public Builder setLocation(context.ContextOuterClass.Location value) {
                if (locationBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    location_ = value;
                } else {
                    locationBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>.context.Location location = 2;</code>
             */
            public Builder setLocation(context.ContextOuterClass.Location.Builder builderForValue) {
                if (locationBuilder_ == null) {
                    location_ = builderForValue.build();
                } else {
                    locationBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>.context.Location location = 2;</code>
             */
            public Builder mergeLocation(context.ContextOuterClass.Location value) {
                if (locationBuilder_ == null) {
                    if (((bitField0_ & 0x00000002) != 0) && location_ != null && location_ != context.ContextOuterClass.Location.getDefaultInstance()) {
                        getLocationBuilder().mergeFrom(value);
                    } else {
                        location_ = value;
                    }
                } else {
                    locationBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>.context.Location location = 2;</code>
             */
            public Builder clearLocation() {
                bitField0_ = (bitField0_ & ~0x00000002);
                location_ = null;
                if (locationBuilder_ != null) {
                    locationBuilder_.dispose();
                    locationBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.Location location = 2;</code>
             */
            public context.ContextOuterClass.Location.Builder getLocationBuilder() {
                bitField0_ |= 0x00000002;
                onChanged();
                return getLocationFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.Location location = 2;</code>
             */
            public context.ContextOuterClass.LocationOrBuilder getLocationOrBuilder() {
                if (locationBuilder_ != null) {
                    return locationBuilder_.getMessageOrBuilder();
                } else {
                    return location_ == null ? context.ContextOuterClass.Location.getDefaultInstance() : location_;
                }
            }

            /**
             * <code>.context.Location location = 2;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Location, context.ContextOuterClass.Location.Builder, context.ContextOuterClass.LocationOrBuilder> getLocationFieldBuilder() {
                if (locationBuilder_ == null) {
                    locationBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Location, context.ContextOuterClass.Location.Builder, context.ContextOuterClass.LocationOrBuilder>(getLocation(), getParentForChildren(), isClean());
                    location_ = null;
                }
                return locationBuilder_;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.Constraint_EndPointLocation)
        }

        // @@protoc_insertion_point(class_scope:context.Constraint_EndPointLocation)
        private static final context.ContextOuterClass.Constraint_EndPointLocation DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.Constraint_EndPointLocation();
        }

        public static context.ContextOuterClass.Constraint_EndPointLocation getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<Constraint_EndPointLocation> PARSER = new com.google.protobuf.AbstractParser<Constraint_EndPointLocation>() {

            @java.lang.Override
            public Constraint_EndPointLocation parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<Constraint_EndPointLocation> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<Constraint_EndPointLocation> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.Constraint_EndPointLocation getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface Constraint_EndPointPriorityOrBuilder extends // @@protoc_insertion_point(interface_extends:context.Constraint_EndPointPriority)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>.context.EndPointId endpoint_id = 1;</code>
         * @return Whether the endpointId field is set.
         */
        boolean hasEndpointId();

        /**
         * <code>.context.EndPointId endpoint_id = 1;</code>
         * @return The endpointId.
         */
        context.ContextOuterClass.EndPointId getEndpointId();

        /**
         * <code>.context.EndPointId endpoint_id = 1;</code>
         */
        context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder();

        /**
         * <code>uint32 priority = 2;</code>
         * @return The priority.
         */
        int getPriority();
    }

    /**
     * Protobuf type {@code context.Constraint_EndPointPriority}
     */
    public static final class Constraint_EndPointPriority extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.Constraint_EndPointPriority)
    Constraint_EndPointPriorityOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use Constraint_EndPointPriority.newBuilder() to construct.
        private Constraint_EndPointPriority(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private Constraint_EndPointPriority() {
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new Constraint_EndPointPriority();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_Constraint_EndPointPriority_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_Constraint_EndPointPriority_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Constraint_EndPointPriority.class, context.ContextOuterClass.Constraint_EndPointPriority.Builder.class);
        }

        public static final int ENDPOINT_ID_FIELD_NUMBER = 1;

        private context.ContextOuterClass.EndPointId endpointId_;

        /**
         * <code>.context.EndPointId endpoint_id = 1;</code>
         * @return Whether the endpointId field is set.
         */
        @java.lang.Override
        public boolean hasEndpointId() {
            return endpointId_ != null;
        }

        /**
         * <code>.context.EndPointId endpoint_id = 1;</code>
         * @return The endpointId.
         */
        @java.lang.Override
        public context.ContextOuterClass.EndPointId getEndpointId() {
            return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
        }

        /**
         * <code>.context.EndPointId endpoint_id = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder() {
            return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
        }

        public static final int PRIORITY_FIELD_NUMBER = 2;

        private int priority_ = 0;

        /**
         * <code>uint32 priority = 2;</code>
         * @return The priority.
         */
        @java.lang.Override
        public int getPriority() {
            return priority_;
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            if (endpointId_ != null) {
                output.writeMessage(1, getEndpointId());
            }
            if (priority_ != 0) {
                output.writeUInt32(2, priority_);
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            if (endpointId_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getEndpointId());
            }
            if (priority_ != 0) {
                size += com.google.protobuf.CodedOutputStream.computeUInt32Size(2, priority_);
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.Constraint_EndPointPriority)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.Constraint_EndPointPriority other = (context.ContextOuterClass.Constraint_EndPointPriority) obj;
            if (hasEndpointId() != other.hasEndpointId())
                return false;
            if (hasEndpointId()) {
                if (!getEndpointId().equals(other.getEndpointId()))
                    return false;
            }
            if (getPriority() != other.getPriority())
                return false;
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            if (hasEndpointId()) {
                hash = (37 * hash) + ENDPOINT_ID_FIELD_NUMBER;
                hash = (53 * hash) + getEndpointId().hashCode();
            }
            hash = (37 * hash) + PRIORITY_FIELD_NUMBER;
            hash = (53 * hash) + getPriority();
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.Constraint_EndPointPriority parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.Constraint_EndPointPriority parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.Constraint_EndPointPriority parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.Constraint_EndPointPriority parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.Constraint_EndPointPriority parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.Constraint_EndPointPriority parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.Constraint_EndPointPriority parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.Constraint_EndPointPriority parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.Constraint_EndPointPriority parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.Constraint_EndPointPriority parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.Constraint_EndPointPriority parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.Constraint_EndPointPriority parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.Constraint_EndPointPriority prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code context.Constraint_EndPointPriority}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.Constraint_EndPointPriority)
        context.ContextOuterClass.Constraint_EndPointPriorityOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_Constraint_EndPointPriority_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_Constraint_EndPointPriority_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Constraint_EndPointPriority.class, context.ContextOuterClass.Constraint_EndPointPriority.Builder.class);
            }

            // Construct using context.ContextOuterClass.Constraint_EndPointPriority.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                endpointId_ = null;
                if (endpointIdBuilder_ != null) {
                    endpointIdBuilder_.dispose();
                    endpointIdBuilder_ = null;
                }
                priority_ = 0;
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_Constraint_EndPointPriority_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.Constraint_EndPointPriority getDefaultInstanceForType() {
                return context.ContextOuterClass.Constraint_EndPointPriority.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.Constraint_EndPointPriority build() {
                context.ContextOuterClass.Constraint_EndPointPriority result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.Constraint_EndPointPriority buildPartial() {
                context.ContextOuterClass.Constraint_EndPointPriority result = new context.ContextOuterClass.Constraint_EndPointPriority(this);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartial0(context.ContextOuterClass.Constraint_EndPointPriority result) {
                int from_bitField0_ = bitField0_;
                if (((from_bitField0_ & 0x00000001) != 0)) {
                    result.endpointId_ = endpointIdBuilder_ == null ? endpointId_ : endpointIdBuilder_.build();
                }
                if (((from_bitField0_ & 0x00000002) != 0)) {
                    result.priority_ = priority_;
                }
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.Constraint_EndPointPriority) {
                    return mergeFrom((context.ContextOuterClass.Constraint_EndPointPriority) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.Constraint_EndPointPriority other) {
                if (other == context.ContextOuterClass.Constraint_EndPointPriority.getDefaultInstance())
                    return this;
                if (other.hasEndpointId()) {
                    mergeEndpointId(other.getEndpointId());
                }
                if (other.getPriority() != 0) {
                    setPriority(other.getPriority());
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 10:
                                {
                                    input.readMessage(getEndpointIdFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000001;
                                    break;
                                }
                            // case 10
                            case 16:
                                {
                                    priority_ = input.readUInt32();
                                    bitField0_ |= 0x00000002;
                                    break;
                                }
                            // case 16
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private context.ContextOuterClass.EndPointId endpointId_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> endpointIdBuilder_;

            /**
             * <code>.context.EndPointId endpoint_id = 1;</code>
             * @return Whether the endpointId field is set.
             */
            public boolean hasEndpointId() {
                return ((bitField0_ & 0x00000001) != 0);
            }

            /**
             * <code>.context.EndPointId endpoint_id = 1;</code>
             * @return The endpointId.
             */
            public context.ContextOuterClass.EndPointId getEndpointId() {
                if (endpointIdBuilder_ == null) {
                    return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
                } else {
                    return endpointIdBuilder_.getMessage();
                }
            }

            /**
             * <code>.context.EndPointId endpoint_id = 1;</code>
             */
            public Builder setEndpointId(context.ContextOuterClass.EndPointId value) {
                if (endpointIdBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    endpointId_ = value;
                } else {
                    endpointIdBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.EndPointId endpoint_id = 1;</code>
             */
            public Builder setEndpointId(context.ContextOuterClass.EndPointId.Builder builderForValue) {
                if (endpointIdBuilder_ == null) {
                    endpointId_ = builderForValue.build();
                } else {
                    endpointIdBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.EndPointId endpoint_id = 1;</code>
             */
            public Builder mergeEndpointId(context.ContextOuterClass.EndPointId value) {
                if (endpointIdBuilder_ == null) {
                    if (((bitField0_ & 0x00000001) != 0) && endpointId_ != null && endpointId_ != context.ContextOuterClass.EndPointId.getDefaultInstance()) {
                        getEndpointIdBuilder().mergeFrom(value);
                    } else {
                        endpointId_ = value;
                    }
                } else {
                    endpointIdBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.EndPointId endpoint_id = 1;</code>
             */
            public Builder clearEndpointId() {
                bitField0_ = (bitField0_ & ~0x00000001);
                endpointId_ = null;
                if (endpointIdBuilder_ != null) {
                    endpointIdBuilder_.dispose();
                    endpointIdBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.EndPointId endpoint_id = 1;</code>
             */
            public context.ContextOuterClass.EndPointId.Builder getEndpointIdBuilder() {
                bitField0_ |= 0x00000001;
                onChanged();
                return getEndpointIdFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.EndPointId endpoint_id = 1;</code>
             */
            public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdOrBuilder() {
                if (endpointIdBuilder_ != null) {
                    return endpointIdBuilder_.getMessageOrBuilder();
                } else {
                    return endpointId_ == null ? context.ContextOuterClass.EndPointId.getDefaultInstance() : endpointId_;
                }
            }

            /**
             * <code>.context.EndPointId endpoint_id = 1;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> getEndpointIdFieldBuilder() {
                if (endpointIdBuilder_ == null) {
                    endpointIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder>(getEndpointId(), getParentForChildren(), isClean());
                    endpointId_ = null;
                }
                return endpointIdBuilder_;
            }

            private int priority_;

            /**
             * <code>uint32 priority = 2;</code>
             * @return The priority.
             */
            @java.lang.Override
            public int getPriority() {
                return priority_;
            }

            /**
             * <code>uint32 priority = 2;</code>
             * @param value The priority to set.
             * @return This builder for chaining.
             */
            public Builder setPriority(int value) {
                priority_ = value;
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>uint32 priority = 2;</code>
             * @return This builder for chaining.
             */
            public Builder clearPriority() {
                bitField0_ = (bitField0_ & ~0x00000002);
                priority_ = 0;
                onChanged();
                return this;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.Constraint_EndPointPriority)
        }

        // @@protoc_insertion_point(class_scope:context.Constraint_EndPointPriority)
        private static final context.ContextOuterClass.Constraint_EndPointPriority DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.Constraint_EndPointPriority();
        }

        public static context.ContextOuterClass.Constraint_EndPointPriority getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<Constraint_EndPointPriority> PARSER = new com.google.protobuf.AbstractParser<Constraint_EndPointPriority>() {

            @java.lang.Override
            public Constraint_EndPointPriority parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<Constraint_EndPointPriority> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<Constraint_EndPointPriority> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.Constraint_EndPointPriority getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface Constraint_SLA_LatencyOrBuilder extends // @@protoc_insertion_point(interface_extends:context.Constraint_SLA_Latency)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>float e2e_latency_ms = 1;</code>
         * @return The e2eLatencyMs.
         */
        float getE2ELatencyMs();
    }

    /**
     * Protobuf type {@code context.Constraint_SLA_Latency}
     */
    public static final class Constraint_SLA_Latency extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.Constraint_SLA_Latency)
    Constraint_SLA_LatencyOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use Constraint_SLA_Latency.newBuilder() to construct.
        private Constraint_SLA_Latency(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private Constraint_SLA_Latency() {
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new Constraint_SLA_Latency();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_Constraint_SLA_Latency_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_Constraint_SLA_Latency_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Constraint_SLA_Latency.class, context.ContextOuterClass.Constraint_SLA_Latency.Builder.class);
        }

        public static final int E2E_LATENCY_MS_FIELD_NUMBER = 1;

        private float e2ELatencyMs_ = 0F;

        /**
         * <code>float e2e_latency_ms = 1;</code>
         * @return The e2eLatencyMs.
         */
        @java.lang.Override
        public float getE2ELatencyMs() {
            return e2ELatencyMs_;
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            if (java.lang.Float.floatToRawIntBits(e2ELatencyMs_) != 0) {
                output.writeFloat(1, e2ELatencyMs_);
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            if (java.lang.Float.floatToRawIntBits(e2ELatencyMs_) != 0) {
                size += com.google.protobuf.CodedOutputStream.computeFloatSize(1, e2ELatencyMs_);
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.Constraint_SLA_Latency)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.Constraint_SLA_Latency other = (context.ContextOuterClass.Constraint_SLA_Latency) obj;
            if (java.lang.Float.floatToIntBits(getE2ELatencyMs()) != java.lang.Float.floatToIntBits(other.getE2ELatencyMs()))
                return false;
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            hash = (37 * hash) + E2E_LATENCY_MS_FIELD_NUMBER;
            hash = (53 * hash) + java.lang.Float.floatToIntBits(getE2ELatencyMs());
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.Constraint_SLA_Latency parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.Constraint_SLA_Latency parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.Constraint_SLA_Latency parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.Constraint_SLA_Latency parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.Constraint_SLA_Latency parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.Constraint_SLA_Latency parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.Constraint_SLA_Latency parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.Constraint_SLA_Latency parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.Constraint_SLA_Latency parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.Constraint_SLA_Latency parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.Constraint_SLA_Latency parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.Constraint_SLA_Latency parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.Constraint_SLA_Latency prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code context.Constraint_SLA_Latency}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.Constraint_SLA_Latency)
        context.ContextOuterClass.Constraint_SLA_LatencyOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_Constraint_SLA_Latency_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_Constraint_SLA_Latency_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Constraint_SLA_Latency.class, context.ContextOuterClass.Constraint_SLA_Latency.Builder.class);
            }

            // Construct using context.ContextOuterClass.Constraint_SLA_Latency.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                e2ELatencyMs_ = 0F;
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_Constraint_SLA_Latency_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.Constraint_SLA_Latency getDefaultInstanceForType() {
                return context.ContextOuterClass.Constraint_SLA_Latency.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.Constraint_SLA_Latency build() {
                context.ContextOuterClass.Constraint_SLA_Latency result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.Constraint_SLA_Latency buildPartial() {
                context.ContextOuterClass.Constraint_SLA_Latency result = new context.ContextOuterClass.Constraint_SLA_Latency(this);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartial0(context.ContextOuterClass.Constraint_SLA_Latency result) {
                int from_bitField0_ = bitField0_;
                if (((from_bitField0_ & 0x00000001) != 0)) {
                    result.e2ELatencyMs_ = e2ELatencyMs_;
                }
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.Constraint_SLA_Latency) {
                    return mergeFrom((context.ContextOuterClass.Constraint_SLA_Latency) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.Constraint_SLA_Latency other) {
                if (other == context.ContextOuterClass.Constraint_SLA_Latency.getDefaultInstance())
                    return this;
                if (other.getE2ELatencyMs() != 0F) {
                    setE2ELatencyMs(other.getE2ELatencyMs());
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 13:
                                {
                                    e2ELatencyMs_ = input.readFloat();
                                    bitField0_ |= 0x00000001;
                                    break;
                                }
                            // case 13
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private float e2ELatencyMs_;

            /**
             * <code>float e2e_latency_ms = 1;</code>
             * @return The e2eLatencyMs.
             */
            @java.lang.Override
            public float getE2ELatencyMs() {
                return e2ELatencyMs_;
            }

            /**
             * <code>float e2e_latency_ms = 1;</code>
             * @param value The e2eLatencyMs to set.
             * @return This builder for chaining.
             */
            public Builder setE2ELatencyMs(float value) {
                e2ELatencyMs_ = value;
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>float e2e_latency_ms = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearE2ELatencyMs() {
                bitField0_ = (bitField0_ & ~0x00000001);
                e2ELatencyMs_ = 0F;
                onChanged();
                return this;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.Constraint_SLA_Latency)
        }

        // @@protoc_insertion_point(class_scope:context.Constraint_SLA_Latency)
        private static final context.ContextOuterClass.Constraint_SLA_Latency DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.Constraint_SLA_Latency();
        }

        public static context.ContextOuterClass.Constraint_SLA_Latency getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<Constraint_SLA_Latency> PARSER = new com.google.protobuf.AbstractParser<Constraint_SLA_Latency>() {

            @java.lang.Override
            public Constraint_SLA_Latency parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<Constraint_SLA_Latency> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<Constraint_SLA_Latency> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.Constraint_SLA_Latency getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface Constraint_SLA_CapacityOrBuilder extends // @@protoc_insertion_point(interface_extends:context.Constraint_SLA_Capacity)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>float capacity_gbps = 1;</code>
         * @return The capacityGbps.
         */
        float getCapacityGbps();
    }

    /**
     * Protobuf type {@code context.Constraint_SLA_Capacity}
     */
    public static final class Constraint_SLA_Capacity extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.Constraint_SLA_Capacity)
    Constraint_SLA_CapacityOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use Constraint_SLA_Capacity.newBuilder() to construct.
        private Constraint_SLA_Capacity(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private Constraint_SLA_Capacity() {
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new Constraint_SLA_Capacity();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_Constraint_SLA_Capacity_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_Constraint_SLA_Capacity_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Constraint_SLA_Capacity.class, context.ContextOuterClass.Constraint_SLA_Capacity.Builder.class);
        }

        public static final int CAPACITY_GBPS_FIELD_NUMBER = 1;

        private float capacityGbps_ = 0F;

        /**
         * <code>float capacity_gbps = 1;</code>
         * @return The capacityGbps.
         */
        @java.lang.Override
        public float getCapacityGbps() {
            return capacityGbps_;
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            if (java.lang.Float.floatToRawIntBits(capacityGbps_) != 0) {
                output.writeFloat(1, capacityGbps_);
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            if (java.lang.Float.floatToRawIntBits(capacityGbps_) != 0) {
                size += com.google.protobuf.CodedOutputStream.computeFloatSize(1, capacityGbps_);
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.Constraint_SLA_Capacity)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.Constraint_SLA_Capacity other = (context.ContextOuterClass.Constraint_SLA_Capacity) obj;
            if (java.lang.Float.floatToIntBits(getCapacityGbps()) != java.lang.Float.floatToIntBits(other.getCapacityGbps()))
                return false;
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            hash = (37 * hash) + CAPACITY_GBPS_FIELD_NUMBER;
            hash = (53 * hash) + java.lang.Float.floatToIntBits(getCapacityGbps());
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.Constraint_SLA_Capacity parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.Constraint_SLA_Capacity parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.Constraint_SLA_Capacity parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.Constraint_SLA_Capacity parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.Constraint_SLA_Capacity parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.Constraint_SLA_Capacity parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.Constraint_SLA_Capacity parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.Constraint_SLA_Capacity parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.Constraint_SLA_Capacity parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.Constraint_SLA_Capacity parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.Constraint_SLA_Capacity parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.Constraint_SLA_Capacity parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.Constraint_SLA_Capacity prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code context.Constraint_SLA_Capacity}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.Constraint_SLA_Capacity)
        context.ContextOuterClass.Constraint_SLA_CapacityOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_Constraint_SLA_Capacity_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_Constraint_SLA_Capacity_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Constraint_SLA_Capacity.class, context.ContextOuterClass.Constraint_SLA_Capacity.Builder.class);
            }

            // Construct using context.ContextOuterClass.Constraint_SLA_Capacity.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                capacityGbps_ = 0F;
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_Constraint_SLA_Capacity_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.Constraint_SLA_Capacity getDefaultInstanceForType() {
                return context.ContextOuterClass.Constraint_SLA_Capacity.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.Constraint_SLA_Capacity build() {
                context.ContextOuterClass.Constraint_SLA_Capacity result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.Constraint_SLA_Capacity buildPartial() {
                context.ContextOuterClass.Constraint_SLA_Capacity result = new context.ContextOuterClass.Constraint_SLA_Capacity(this);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartial0(context.ContextOuterClass.Constraint_SLA_Capacity result) {
                int from_bitField0_ = bitField0_;
                if (((from_bitField0_ & 0x00000001) != 0)) {
                    result.capacityGbps_ = capacityGbps_;
                }
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.Constraint_SLA_Capacity) {
                    return mergeFrom((context.ContextOuterClass.Constraint_SLA_Capacity) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.Constraint_SLA_Capacity other) {
                if (other == context.ContextOuterClass.Constraint_SLA_Capacity.getDefaultInstance())
                    return this;
                if (other.getCapacityGbps() != 0F) {
                    setCapacityGbps(other.getCapacityGbps());
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 13:
                                {
                                    capacityGbps_ = input.readFloat();
                                    bitField0_ |= 0x00000001;
                                    break;
                                }
                            // case 13
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private float capacityGbps_;

            /**
             * <code>float capacity_gbps = 1;</code>
             * @return The capacityGbps.
             */
            @java.lang.Override
            public float getCapacityGbps() {
                return capacityGbps_;
            }

            /**
             * <code>float capacity_gbps = 1;</code>
             * @param value The capacityGbps to set.
             * @return This builder for chaining.
             */
            public Builder setCapacityGbps(float value) {
                capacityGbps_ = value;
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>float capacity_gbps = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearCapacityGbps() {
                bitField0_ = (bitField0_ & ~0x00000001);
                capacityGbps_ = 0F;
                onChanged();
                return this;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.Constraint_SLA_Capacity)
        }

        // @@protoc_insertion_point(class_scope:context.Constraint_SLA_Capacity)
        private static final context.ContextOuterClass.Constraint_SLA_Capacity DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.Constraint_SLA_Capacity();
        }

        public static context.ContextOuterClass.Constraint_SLA_Capacity getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<Constraint_SLA_Capacity> PARSER = new com.google.protobuf.AbstractParser<Constraint_SLA_Capacity>() {

            @java.lang.Override
            public Constraint_SLA_Capacity parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<Constraint_SLA_Capacity> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<Constraint_SLA_Capacity> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.Constraint_SLA_Capacity getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface Constraint_SLA_AvailabilityOrBuilder extends // @@protoc_insertion_point(interface_extends:context.Constraint_SLA_Availability)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>uint32 num_disjoint_paths = 1;</code>
         * @return The numDisjointPaths.
         */
        int getNumDisjointPaths();

        /**
         * <code>bool all_active = 2;</code>
         * @return The allActive.
         */
        boolean getAllActive();

        /**
         * <pre>
         * 0.0 .. 100.0 percentage of availability
         * </pre>
         *
         * <code>float availability = 3;</code>
         * @return The availability.
         */
        float getAvailability();
    }

    /**
     * Protobuf type {@code context.Constraint_SLA_Availability}
     */
    public static final class Constraint_SLA_Availability extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.Constraint_SLA_Availability)
    Constraint_SLA_AvailabilityOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use Constraint_SLA_Availability.newBuilder() to construct.
        private Constraint_SLA_Availability(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private Constraint_SLA_Availability() {
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new Constraint_SLA_Availability();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_Constraint_SLA_Availability_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_Constraint_SLA_Availability_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Constraint_SLA_Availability.class, context.ContextOuterClass.Constraint_SLA_Availability.Builder.class);
        }

        public static final int NUM_DISJOINT_PATHS_FIELD_NUMBER = 1;

        private int numDisjointPaths_ = 0;

        /**
         * <code>uint32 num_disjoint_paths = 1;</code>
         * @return The numDisjointPaths.
         */
        @java.lang.Override
        public int getNumDisjointPaths() {
            return numDisjointPaths_;
        }

        public static final int ALL_ACTIVE_FIELD_NUMBER = 2;

        private boolean allActive_ = false;

        /**
         * <code>bool all_active = 2;</code>
         * @return The allActive.
         */
        @java.lang.Override
        public boolean getAllActive() {
            return allActive_;
        }

        public static final int AVAILABILITY_FIELD_NUMBER = 3;

        private float availability_ = 0F;

        /**
         * <pre>
         * 0.0 .. 100.0 percentage of availability
         * </pre>
         *
         * <code>float availability = 3;</code>
         * @return The availability.
         */
        @java.lang.Override
        public float getAvailability() {
            return availability_;
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            if (numDisjointPaths_ != 0) {
                output.writeUInt32(1, numDisjointPaths_);
            }
            if (allActive_ != false) {
                output.writeBool(2, allActive_);
            }
            if (java.lang.Float.floatToRawIntBits(availability_) != 0) {
                output.writeFloat(3, availability_);
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            if (numDisjointPaths_ != 0) {
                size += com.google.protobuf.CodedOutputStream.computeUInt32Size(1, numDisjointPaths_);
            }
            if (allActive_ != false) {
                size += com.google.protobuf.CodedOutputStream.computeBoolSize(2, allActive_);
            }
            if (java.lang.Float.floatToRawIntBits(availability_) != 0) {
                size += com.google.protobuf.CodedOutputStream.computeFloatSize(3, availability_);
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.Constraint_SLA_Availability)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.Constraint_SLA_Availability other = (context.ContextOuterClass.Constraint_SLA_Availability) obj;
            if (getNumDisjointPaths() != other.getNumDisjointPaths())
                return false;
            if (getAllActive() != other.getAllActive())
                return false;
            if (java.lang.Float.floatToIntBits(getAvailability()) != java.lang.Float.floatToIntBits(other.getAvailability()))
                return false;
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            hash = (37 * hash) + NUM_DISJOINT_PATHS_FIELD_NUMBER;
            hash = (53 * hash) + getNumDisjointPaths();
            hash = (37 * hash) + ALL_ACTIVE_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getAllActive());
            hash = (37 * hash) + AVAILABILITY_FIELD_NUMBER;
            hash = (53 * hash) + java.lang.Float.floatToIntBits(getAvailability());
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.Constraint_SLA_Availability parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.Constraint_SLA_Availability parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.Constraint_SLA_Availability parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.Constraint_SLA_Availability parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.Constraint_SLA_Availability parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.Constraint_SLA_Availability parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.Constraint_SLA_Availability parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.Constraint_SLA_Availability parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.Constraint_SLA_Availability parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.Constraint_SLA_Availability parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.Constraint_SLA_Availability parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.Constraint_SLA_Availability parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.Constraint_SLA_Availability prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code context.Constraint_SLA_Availability}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.Constraint_SLA_Availability)
        context.ContextOuterClass.Constraint_SLA_AvailabilityOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_Constraint_SLA_Availability_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_Constraint_SLA_Availability_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Constraint_SLA_Availability.class, context.ContextOuterClass.Constraint_SLA_Availability.Builder.class);
            }

            // Construct using context.ContextOuterClass.Constraint_SLA_Availability.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                numDisjointPaths_ = 0;
                allActive_ = false;
                availability_ = 0F;
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_Constraint_SLA_Availability_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.Constraint_SLA_Availability getDefaultInstanceForType() {
                return context.ContextOuterClass.Constraint_SLA_Availability.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.Constraint_SLA_Availability build() {
                context.ContextOuterClass.Constraint_SLA_Availability result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.Constraint_SLA_Availability buildPartial() {
                context.ContextOuterClass.Constraint_SLA_Availability result = new context.ContextOuterClass.Constraint_SLA_Availability(this);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartial0(context.ContextOuterClass.Constraint_SLA_Availability result) {
                int from_bitField0_ = bitField0_;
                if (((from_bitField0_ & 0x00000001) != 0)) {
                    result.numDisjointPaths_ = numDisjointPaths_;
                }
                if (((from_bitField0_ & 0x00000002) != 0)) {
                    result.allActive_ = allActive_;
                }
                if (((from_bitField0_ & 0x00000004) != 0)) {
                    result.availability_ = availability_;
                }
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.Constraint_SLA_Availability) {
                    return mergeFrom((context.ContextOuterClass.Constraint_SLA_Availability) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.Constraint_SLA_Availability other) {
                if (other == context.ContextOuterClass.Constraint_SLA_Availability.getDefaultInstance())
                    return this;
                if (other.getNumDisjointPaths() != 0) {
                    setNumDisjointPaths(other.getNumDisjointPaths());
                }
                if (other.getAllActive() != false) {
                    setAllActive(other.getAllActive());
                }
                if (other.getAvailability() != 0F) {
                    setAvailability(other.getAvailability());
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 8:
                                {
                                    numDisjointPaths_ = input.readUInt32();
                                    bitField0_ |= 0x00000001;
                                    break;
                                }
                            // case 8
                            case 16:
                                {
                                    allActive_ = input.readBool();
                                    bitField0_ |= 0x00000002;
                                    break;
                                }
                            // case 16
                            case 29:
                                {
                                    availability_ = input.readFloat();
                                    bitField0_ |= 0x00000004;
                                    break;
                                }
                            // case 29
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private int numDisjointPaths_;

            /**
             * <code>uint32 num_disjoint_paths = 1;</code>
             * @return The numDisjointPaths.
             */
            @java.lang.Override
            public int getNumDisjointPaths() {
                return numDisjointPaths_;
            }

            /**
             * <code>uint32 num_disjoint_paths = 1;</code>
             * @param value The numDisjointPaths to set.
             * @return This builder for chaining.
             */
            public Builder setNumDisjointPaths(int value) {
                numDisjointPaths_ = value;
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>uint32 num_disjoint_paths = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearNumDisjointPaths() {
                bitField0_ = (bitField0_ & ~0x00000001);
                numDisjointPaths_ = 0;
                onChanged();
                return this;
            }

            private boolean allActive_;

            /**
             * <code>bool all_active = 2;</code>
             * @return The allActive.
             */
            @java.lang.Override
            public boolean getAllActive() {
                return allActive_;
            }

            /**
             * <code>bool all_active = 2;</code>
             * @param value The allActive to set.
             * @return This builder for chaining.
             */
            public Builder setAllActive(boolean value) {
                allActive_ = value;
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>bool all_active = 2;</code>
             * @return This builder for chaining.
             */
            public Builder clearAllActive() {
                bitField0_ = (bitField0_ & ~0x00000002);
                allActive_ = false;
                onChanged();
                return this;
            }

            private float availability_;

            /**
             * <pre>
             * 0.0 .. 100.0 percentage of availability
             * </pre>
             *
             * <code>float availability = 3;</code>
             * @return The availability.
             */
            @java.lang.Override
            public float getAvailability() {
                return availability_;
            }

            /**
             * <pre>
             * 0.0 .. 100.0 percentage of availability
             * </pre>
             *
             * <code>float availability = 3;</code>
             * @param value The availability to set.
             * @return This builder for chaining.
             */
            public Builder setAvailability(float value) {
                availability_ = value;
                bitField0_ |= 0x00000004;
                onChanged();
                return this;
            }

            /**
             * <pre>
             * 0.0 .. 100.0 percentage of availability
             * </pre>
             *
             * <code>float availability = 3;</code>
             * @return This builder for chaining.
             */
            public Builder clearAvailability() {
                bitField0_ = (bitField0_ & ~0x00000004);
                availability_ = 0F;
                onChanged();
                return this;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.Constraint_SLA_Availability)
        }

        // @@protoc_insertion_point(class_scope:context.Constraint_SLA_Availability)
        private static final context.ContextOuterClass.Constraint_SLA_Availability DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.Constraint_SLA_Availability();
        }

        public static context.ContextOuterClass.Constraint_SLA_Availability getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<Constraint_SLA_Availability> PARSER = new com.google.protobuf.AbstractParser<Constraint_SLA_Availability>() {

            @java.lang.Override
            public Constraint_SLA_Availability parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<Constraint_SLA_Availability> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<Constraint_SLA_Availability> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.Constraint_SLA_Availability getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface Constraint_SLA_Isolation_levelOrBuilder extends // @@protoc_insertion_point(interface_extends:context.Constraint_SLA_Isolation_level)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
         * @return A list containing the isolationLevel.
         */
        java.util.List<context.ContextOuterClass.IsolationLevelEnum> getIsolationLevelList();

        /**
         * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
         * @return The count of isolationLevel.
         */
        int getIsolationLevelCount();

        /**
         * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
         * @param index The index of the element to return.
         * @return The isolationLevel at the given index.
         */
        context.ContextOuterClass.IsolationLevelEnum getIsolationLevel(int index);

        /**
         * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
         * @return A list containing the enum numeric values on the wire for isolationLevel.
         */
        java.util.List<java.lang.Integer> getIsolationLevelValueList();

        /**
         * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
         * @param index The index of the value to return.
         * @return The enum numeric value on the wire of isolationLevel at the given index.
         */
        int getIsolationLevelValue(int index);
    }

    /**
     * Protobuf type {@code context.Constraint_SLA_Isolation_level}
     */
    public static final class Constraint_SLA_Isolation_level extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.Constraint_SLA_Isolation_level)
    Constraint_SLA_Isolation_levelOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use Constraint_SLA_Isolation_level.newBuilder() to construct.
        private Constraint_SLA_Isolation_level(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private Constraint_SLA_Isolation_level() {
            isolationLevel_ = java.util.Collections.emptyList();
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new Constraint_SLA_Isolation_level();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_Constraint_SLA_Isolation_level_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_Constraint_SLA_Isolation_level_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Constraint_SLA_Isolation_level.class, context.ContextOuterClass.Constraint_SLA_Isolation_level.Builder.class);
        }

        public static final int ISOLATION_LEVEL_FIELD_NUMBER = 1;

        @SuppressWarnings("serial")
        private java.util.List<java.lang.Integer> isolationLevel_;

        private static final com.google.protobuf.Internal.ListAdapter.Converter<java.lang.Integer, context.ContextOuterClass.IsolationLevelEnum> isolationLevel_converter_ = new com.google.protobuf.Internal.ListAdapter.Converter<java.lang.Integer, context.ContextOuterClass.IsolationLevelEnum>() {

            public context.ContextOuterClass.IsolationLevelEnum convert(java.lang.Integer from) {
                context.ContextOuterClass.IsolationLevelEnum result = context.ContextOuterClass.IsolationLevelEnum.forNumber(from);
                return result == null ? context.ContextOuterClass.IsolationLevelEnum.UNRECOGNIZED : result;
            }
        };

        /**
         * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
         * @return A list containing the isolationLevel.
         */
        @java.lang.Override
        public java.util.List<context.ContextOuterClass.IsolationLevelEnum> getIsolationLevelList() {
            return new com.google.protobuf.Internal.ListAdapter<java.lang.Integer, context.ContextOuterClass.IsolationLevelEnum>(isolationLevel_, isolationLevel_converter_);
        }

        /**
         * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
         * @return The count of isolationLevel.
         */
        @java.lang.Override
        public int getIsolationLevelCount() {
            return isolationLevel_.size();
        }

        /**
         * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
         * @param index The index of the element to return.
         * @return The isolationLevel at the given index.
         */
        @java.lang.Override
        public context.ContextOuterClass.IsolationLevelEnum getIsolationLevel(int index) {
            return isolationLevel_converter_.convert(isolationLevel_.get(index));
        }

        /**
         * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
         * @return A list containing the enum numeric values on the wire for isolationLevel.
         */
        @java.lang.Override
        public java.util.List<java.lang.Integer> getIsolationLevelValueList() {
            return isolationLevel_;
        }

        /**
         * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
         * @param index The index of the value to return.
         * @return The enum numeric value on the wire of isolationLevel at the given index.
         */
        @java.lang.Override
        public int getIsolationLevelValue(int index) {
            return isolationLevel_.get(index);
        }

        private int isolationLevelMemoizedSerializedSize;

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            getSerializedSize();
            if (getIsolationLevelList().size() > 0) {
                output.writeUInt32NoTag(10);
                output.writeUInt32NoTag(isolationLevelMemoizedSerializedSize);
            }
            for (int i = 0; i < isolationLevel_.size(); i++) {
                output.writeEnumNoTag(isolationLevel_.get(i));
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            {
                int dataSize = 0;
                for (int i = 0; i < isolationLevel_.size(); i++) {
                    dataSize += com.google.protobuf.CodedOutputStream.computeEnumSizeNoTag(isolationLevel_.get(i));
                }
                size += dataSize;
                if (!getIsolationLevelList().isEmpty()) {
                    size += 1;
                    size += com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(dataSize);
                }
                isolationLevelMemoizedSerializedSize = dataSize;
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.Constraint_SLA_Isolation_level)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.Constraint_SLA_Isolation_level other = (context.ContextOuterClass.Constraint_SLA_Isolation_level) obj;
            if (!isolationLevel_.equals(other.isolationLevel_))
                return false;
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            if (getIsolationLevelCount() > 0) {
                hash = (37 * hash) + ISOLATION_LEVEL_FIELD_NUMBER;
                hash = (53 * hash) + isolationLevel_.hashCode();
            }
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.Constraint_SLA_Isolation_level parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.Constraint_SLA_Isolation_level parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.Constraint_SLA_Isolation_level parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.Constraint_SLA_Isolation_level parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.Constraint_SLA_Isolation_level parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.Constraint_SLA_Isolation_level parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.Constraint_SLA_Isolation_level parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.Constraint_SLA_Isolation_level parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.Constraint_SLA_Isolation_level parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.Constraint_SLA_Isolation_level parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.Constraint_SLA_Isolation_level parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.Constraint_SLA_Isolation_level parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.Constraint_SLA_Isolation_level prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code context.Constraint_SLA_Isolation_level}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.Constraint_SLA_Isolation_level)
        context.ContextOuterClass.Constraint_SLA_Isolation_levelOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_Constraint_SLA_Isolation_level_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_Constraint_SLA_Isolation_level_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Constraint_SLA_Isolation_level.class, context.ContextOuterClass.Constraint_SLA_Isolation_level.Builder.class);
            }

            // Construct using context.ContextOuterClass.Constraint_SLA_Isolation_level.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                isolationLevel_ = java.util.Collections.emptyList();
                bitField0_ = (bitField0_ & ~0x00000001);
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_Constraint_SLA_Isolation_level_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.Constraint_SLA_Isolation_level getDefaultInstanceForType() {
                return context.ContextOuterClass.Constraint_SLA_Isolation_level.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.Constraint_SLA_Isolation_level build() {
                context.ContextOuterClass.Constraint_SLA_Isolation_level result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.Constraint_SLA_Isolation_level buildPartial() {
                context.ContextOuterClass.Constraint_SLA_Isolation_level result = new context.ContextOuterClass.Constraint_SLA_Isolation_level(this);
                buildPartialRepeatedFields(result);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartialRepeatedFields(context.ContextOuterClass.Constraint_SLA_Isolation_level result) {
                if (((bitField0_ & 0x00000001) != 0)) {
                    isolationLevel_ = java.util.Collections.unmodifiableList(isolationLevel_);
                    bitField0_ = (bitField0_ & ~0x00000001);
                }
                result.isolationLevel_ = isolationLevel_;
            }

            private void buildPartial0(context.ContextOuterClass.Constraint_SLA_Isolation_level result) {
                int from_bitField0_ = bitField0_;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.Constraint_SLA_Isolation_level) {
                    return mergeFrom((context.ContextOuterClass.Constraint_SLA_Isolation_level) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.Constraint_SLA_Isolation_level other) {
                if (other == context.ContextOuterClass.Constraint_SLA_Isolation_level.getDefaultInstance())
                    return this;
                if (!other.isolationLevel_.isEmpty()) {
                    if (isolationLevel_.isEmpty()) {
                        isolationLevel_ = other.isolationLevel_;
                        bitField0_ = (bitField0_ & ~0x00000001);
                    } else {
                        ensureIsolationLevelIsMutable();
                        isolationLevel_.addAll(other.isolationLevel_);
                    }
                    onChanged();
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 8:
                                {
                                    int tmpRaw = input.readEnum();
                                    ensureIsolationLevelIsMutable();
                                    isolationLevel_.add(tmpRaw);
                                    break;
                                }
                            // case 8
                            case 10:
                                {
                                    int length = input.readRawVarint32();
                                    int oldLimit = input.pushLimit(length);
                                    while (input.getBytesUntilLimit() > 0) {
                                        int tmpRaw = input.readEnum();
                                        ensureIsolationLevelIsMutable();
                                        isolationLevel_.add(tmpRaw);
                                    }
                                    input.popLimit(oldLimit);
                                    break;
                                }
                            // case 10
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private java.util.List<java.lang.Integer> isolationLevel_ = java.util.Collections.emptyList();

            private void ensureIsolationLevelIsMutable() {
                if (!((bitField0_ & 0x00000001) != 0)) {
                    isolationLevel_ = new java.util.ArrayList<java.lang.Integer>(isolationLevel_);
                    bitField0_ |= 0x00000001;
                }
            }

            /**
             * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
             * @return A list containing the isolationLevel.
             */
            public java.util.List<context.ContextOuterClass.IsolationLevelEnum> getIsolationLevelList() {
                return new com.google.protobuf.Internal.ListAdapter<java.lang.Integer, context.ContextOuterClass.IsolationLevelEnum>(isolationLevel_, isolationLevel_converter_);
            }

            /**
             * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
             * @return The count of isolationLevel.
             */
            public int getIsolationLevelCount() {
                return isolationLevel_.size();
            }

            /**
             * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
             * @param index The index of the element to return.
             * @return The isolationLevel at the given index.
             */
            public context.ContextOuterClass.IsolationLevelEnum getIsolationLevel(int index) {
                return isolationLevel_converter_.convert(isolationLevel_.get(index));
            }

            /**
             * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
             * @param index The index to set the value at.
             * @param value The isolationLevel to set.
             * @return This builder for chaining.
             */
            public Builder setIsolationLevel(int index, context.ContextOuterClass.IsolationLevelEnum value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                ensureIsolationLevelIsMutable();
                isolationLevel_.set(index, value.getNumber());
                onChanged();
                return this;
            }

            /**
             * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
             * @param value The isolationLevel to add.
             * @return This builder for chaining.
             */
            public Builder addIsolationLevel(context.ContextOuterClass.IsolationLevelEnum value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                ensureIsolationLevelIsMutable();
                isolationLevel_.add(value.getNumber());
                onChanged();
                return this;
            }

            /**
             * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
             * @param values The isolationLevel to add.
             * @return This builder for chaining.
             */
            public Builder addAllIsolationLevel(java.lang.Iterable<? extends context.ContextOuterClass.IsolationLevelEnum> values) {
                ensureIsolationLevelIsMutable();
                for (context.ContextOuterClass.IsolationLevelEnum value : values) {
                    isolationLevel_.add(value.getNumber());
                }
                onChanged();
                return this;
            }

            /**
             * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearIsolationLevel() {
                isolationLevel_ = java.util.Collections.emptyList();
                bitField0_ = (bitField0_ & ~0x00000001);
                onChanged();
                return this;
            }

            /**
             * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
             * @return A list containing the enum numeric values on the wire for isolationLevel.
             */
            public java.util.List<java.lang.Integer> getIsolationLevelValueList() {
                return java.util.Collections.unmodifiableList(isolationLevel_);
            }

            /**
             * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
             * @param index The index of the value to return.
             * @return The enum numeric value on the wire of isolationLevel at the given index.
             */
            public int getIsolationLevelValue(int index) {
                return isolationLevel_.get(index);
            }

            /**
             * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
             * @param index The index to set the value at.
             * @param value The enum numeric value on the wire for isolationLevel to set.
             * @return This builder for chaining.
             */
            public Builder setIsolationLevelValue(int index, int value) {
                ensureIsolationLevelIsMutable();
                isolationLevel_.set(index, value);
                onChanged();
                return this;
            }

            /**
             * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
             * @param value The enum numeric value on the wire for isolationLevel to add.
             * @return This builder for chaining.
             */
            public Builder addIsolationLevelValue(int value) {
                ensureIsolationLevelIsMutable();
                isolationLevel_.add(value);
                onChanged();
                return this;
            }

            /**
             * <code>repeated .context.IsolationLevelEnum isolation_level = 1;</code>
             * @param values The enum numeric values on the wire for isolationLevel to add.
             * @return This builder for chaining.
             */
            public Builder addAllIsolationLevelValue(java.lang.Iterable<java.lang.Integer> values) {
                ensureIsolationLevelIsMutable();
                for (int value : values) {
                    isolationLevel_.add(value);
                }
                onChanged();
                return this;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.Constraint_SLA_Isolation_level)
        }

        // @@protoc_insertion_point(class_scope:context.Constraint_SLA_Isolation_level)
        private static final context.ContextOuterClass.Constraint_SLA_Isolation_level DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.Constraint_SLA_Isolation_level();
        }

        public static context.ContextOuterClass.Constraint_SLA_Isolation_level getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<Constraint_SLA_Isolation_level> PARSER = new com.google.protobuf.AbstractParser<Constraint_SLA_Isolation_level>() {

            @java.lang.Override
            public Constraint_SLA_Isolation_level parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<Constraint_SLA_Isolation_level> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<Constraint_SLA_Isolation_level> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.Constraint_SLA_Isolation_level getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface Constraint_ExclusionsOrBuilder extends // @@protoc_insertion_point(interface_extends:context.Constraint_Exclusions)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>bool is_permanent = 1;</code>
         * @return The isPermanent.
         */
        boolean getIsPermanent();

        /**
         * <code>repeated .context.DeviceId device_ids = 2;</code>
         */
        java.util.List<context.ContextOuterClass.DeviceId> getDeviceIdsList();

        /**
         * <code>repeated .context.DeviceId device_ids = 2;</code>
         */
        context.ContextOuterClass.DeviceId getDeviceIds(int index);

        /**
         * <code>repeated .context.DeviceId device_ids = 2;</code>
         */
        int getDeviceIdsCount();

        /**
         * <code>repeated .context.DeviceId device_ids = 2;</code>
         */
        java.util.List<? extends context.ContextOuterClass.DeviceIdOrBuilder> getDeviceIdsOrBuilderList();

        /**
         * <code>repeated .context.DeviceId device_ids = 2;</code>
         */
        context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdsOrBuilder(int index);

        /**
         * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
         */
        java.util.List<context.ContextOuterClass.EndPointId> getEndpointIdsList();

        /**
         * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
         */
        context.ContextOuterClass.EndPointId getEndpointIds(int index);

        /**
         * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
         */
        int getEndpointIdsCount();

        /**
         * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
         */
        java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> getEndpointIdsOrBuilderList();

        /**
         * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
         */
        context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdsOrBuilder(int index);

        /**
         * <code>repeated .context.LinkId link_ids = 4;</code>
         */
        java.util.List<context.ContextOuterClass.LinkId> getLinkIdsList();

        /**
         * <code>repeated .context.LinkId link_ids = 4;</code>
         */
        context.ContextOuterClass.LinkId getLinkIds(int index);

        /**
         * <code>repeated .context.LinkId link_ids = 4;</code>
         */
        int getLinkIdsCount();

        /**
         * <code>repeated .context.LinkId link_ids = 4;</code>
         */
        java.util.List<? extends context.ContextOuterClass.LinkIdOrBuilder> getLinkIdsOrBuilderList();

        /**
         * <code>repeated .context.LinkId link_ids = 4;</code>
         */
        context.ContextOuterClass.LinkIdOrBuilder getLinkIdsOrBuilder(int index);
    }

    /**
     * Protobuf type {@code context.Constraint_Exclusions}
     */
    public static final class Constraint_Exclusions extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.Constraint_Exclusions)
    Constraint_ExclusionsOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use Constraint_Exclusions.newBuilder() to construct.
        private Constraint_Exclusions(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private Constraint_Exclusions() {
            deviceIds_ = java.util.Collections.emptyList();
            endpointIds_ = java.util.Collections.emptyList();
            linkIds_ = java.util.Collections.emptyList();
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new Constraint_Exclusions();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_Constraint_Exclusions_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_Constraint_Exclusions_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Constraint_Exclusions.class, context.ContextOuterClass.Constraint_Exclusions.Builder.class);
        }

        public static final int IS_PERMANENT_FIELD_NUMBER = 1;

        private boolean isPermanent_ = false;

        /**
         * <code>bool is_permanent = 1;</code>
         * @return The isPermanent.
         */
        @java.lang.Override
        public boolean getIsPermanent() {
            return isPermanent_;
        }

        public static final int DEVICE_IDS_FIELD_NUMBER = 2;

        @SuppressWarnings("serial")
        private java.util.List<context.ContextOuterClass.DeviceId> deviceIds_;

        /**
         * <code>repeated .context.DeviceId device_ids = 2;</code>
         */
        @java.lang.Override
        public java.util.List<context.ContextOuterClass.DeviceId> getDeviceIdsList() {
            return deviceIds_;
        }

        /**
         * <code>repeated .context.DeviceId device_ids = 2;</code>
         */
        @java.lang.Override
        public java.util.List<? extends context.ContextOuterClass.DeviceIdOrBuilder> getDeviceIdsOrBuilderList() {
            return deviceIds_;
        }

        /**
         * <code>repeated .context.DeviceId device_ids = 2;</code>
         */
        @java.lang.Override
        public int getDeviceIdsCount() {
            return deviceIds_.size();
        }

        /**
         * <code>repeated .context.DeviceId device_ids = 2;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.DeviceId getDeviceIds(int index) {
            return deviceIds_.get(index);
        }

        /**
         * <code>repeated .context.DeviceId device_ids = 2;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdsOrBuilder(int index) {
            return deviceIds_.get(index);
        }

        public static final int ENDPOINT_IDS_FIELD_NUMBER = 3;

        @SuppressWarnings("serial")
        private java.util.List<context.ContextOuterClass.EndPointId> endpointIds_;

        /**
         * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
         */
        @java.lang.Override
        public java.util.List<context.ContextOuterClass.EndPointId> getEndpointIdsList() {
            return endpointIds_;
        }

        /**
         * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
         */
        @java.lang.Override
        public java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> getEndpointIdsOrBuilderList() {
            return endpointIds_;
        }

        /**
         * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
         */
        @java.lang.Override
        public int getEndpointIdsCount() {
            return endpointIds_.size();
        }

        /**
         * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.EndPointId getEndpointIds(int index) {
            return endpointIds_.get(index);
        }

        /**
         * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdsOrBuilder(int index) {
            return endpointIds_.get(index);
        }

        public static final int LINK_IDS_FIELD_NUMBER = 4;

        @SuppressWarnings("serial")
        private java.util.List<context.ContextOuterClass.LinkId> linkIds_;

        /**
         * <code>repeated .context.LinkId link_ids = 4;</code>
         */
        @java.lang.Override
        public java.util.List<context.ContextOuterClass.LinkId> getLinkIdsList() {
            return linkIds_;
        }

        /**
         * <code>repeated .context.LinkId link_ids = 4;</code>
         */
        @java.lang.Override
        public java.util.List<? extends context.ContextOuterClass.LinkIdOrBuilder> getLinkIdsOrBuilderList() {
            return linkIds_;
        }

        /**
         * <code>repeated .context.LinkId link_ids = 4;</code>
         */
        @java.lang.Override
        public int getLinkIdsCount() {
            return linkIds_.size();
        }

        /**
         * <code>repeated .context.LinkId link_ids = 4;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.LinkId getLinkIds(int index) {
            return linkIds_.get(index);
        }

        /**
         * <code>repeated .context.LinkId link_ids = 4;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.LinkIdOrBuilder getLinkIdsOrBuilder(int index) {
            return linkIds_.get(index);
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            if (isPermanent_ != false) {
                output.writeBool(1, isPermanent_);
            }
            for (int i = 0; i < deviceIds_.size(); i++) {
                output.writeMessage(2, deviceIds_.get(i));
            }
            for (int i = 0; i < endpointIds_.size(); i++) {
                output.writeMessage(3, endpointIds_.get(i));
            }
            for (int i = 0; i < linkIds_.size(); i++) {
                output.writeMessage(4, linkIds_.get(i));
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            if (isPermanent_ != false) {
                size += com.google.protobuf.CodedOutputStream.computeBoolSize(1, isPermanent_);
            }
            for (int i = 0; i < deviceIds_.size(); i++) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, deviceIds_.get(i));
            }
            for (int i = 0; i < endpointIds_.size(); i++) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, endpointIds_.get(i));
            }
            for (int i = 0; i < linkIds_.size(); i++) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, linkIds_.get(i));
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.Constraint_Exclusions)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.Constraint_Exclusions other = (context.ContextOuterClass.Constraint_Exclusions) obj;
            if (getIsPermanent() != other.getIsPermanent())
                return false;
            if (!getDeviceIdsList().equals(other.getDeviceIdsList()))
                return false;
            if (!getEndpointIdsList().equals(other.getEndpointIdsList()))
                return false;
            if (!getLinkIdsList().equals(other.getLinkIdsList()))
                return false;
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            hash = (37 * hash) + IS_PERMANENT_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getIsPermanent());
            if (getDeviceIdsCount() > 0) {
                hash = (37 * hash) + DEVICE_IDS_FIELD_NUMBER;
                hash = (53 * hash) + getDeviceIdsList().hashCode();
            }
            if (getEndpointIdsCount() > 0) {
                hash = (37 * hash) + ENDPOINT_IDS_FIELD_NUMBER;
                hash = (53 * hash) + getEndpointIdsList().hashCode();
            }
            if (getLinkIdsCount() > 0) {
                hash = (37 * hash) + LINK_IDS_FIELD_NUMBER;
                hash = (53 * hash) + getLinkIdsList().hashCode();
            }
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.Constraint_Exclusions parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.Constraint_Exclusions parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.Constraint_Exclusions parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.Constraint_Exclusions parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.Constraint_Exclusions parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.Constraint_Exclusions parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.Constraint_Exclusions parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.Constraint_Exclusions parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.Constraint_Exclusions parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.Constraint_Exclusions parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.Constraint_Exclusions parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.Constraint_Exclusions parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.Constraint_Exclusions prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code context.Constraint_Exclusions}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.Constraint_Exclusions)
        context.ContextOuterClass.Constraint_ExclusionsOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_Constraint_Exclusions_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_Constraint_Exclusions_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Constraint_Exclusions.class, context.ContextOuterClass.Constraint_Exclusions.Builder.class);
            }

            // Construct using context.ContextOuterClass.Constraint_Exclusions.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                isPermanent_ = false;
                if (deviceIdsBuilder_ == null) {
                    deviceIds_ = java.util.Collections.emptyList();
                } else {
                    deviceIds_ = null;
                    deviceIdsBuilder_.clear();
                }
                bitField0_ = (bitField0_ & ~0x00000002);
                if (endpointIdsBuilder_ == null) {
                    endpointIds_ = java.util.Collections.emptyList();
                } else {
                    endpointIds_ = null;
                    endpointIdsBuilder_.clear();
                }
                bitField0_ = (bitField0_ & ~0x00000004);
                if (linkIdsBuilder_ == null) {
                    linkIds_ = java.util.Collections.emptyList();
                } else {
                    linkIds_ = null;
                    linkIdsBuilder_.clear();
                }
                bitField0_ = (bitField0_ & ~0x00000008);
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_Constraint_Exclusions_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.Constraint_Exclusions getDefaultInstanceForType() {
                return context.ContextOuterClass.Constraint_Exclusions.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.Constraint_Exclusions build() {
                context.ContextOuterClass.Constraint_Exclusions result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.Constraint_Exclusions buildPartial() {
                context.ContextOuterClass.Constraint_Exclusions result = new context.ContextOuterClass.Constraint_Exclusions(this);
                buildPartialRepeatedFields(result);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartialRepeatedFields(context.ContextOuterClass.Constraint_Exclusions result) {
                if (deviceIdsBuilder_ == null) {
                    if (((bitField0_ & 0x00000002) != 0)) {
                        deviceIds_ = java.util.Collections.unmodifiableList(deviceIds_);
                        bitField0_ = (bitField0_ & ~0x00000002);
                    }
                    result.deviceIds_ = deviceIds_;
                } else {
                    result.deviceIds_ = deviceIdsBuilder_.build();
                }
                if (endpointIdsBuilder_ == null) {
                    if (((bitField0_ & 0x00000004) != 0)) {
                        endpointIds_ = java.util.Collections.unmodifiableList(endpointIds_);
                        bitField0_ = (bitField0_ & ~0x00000004);
                    }
                    result.endpointIds_ = endpointIds_;
                } else {
                    result.endpointIds_ = endpointIdsBuilder_.build();
                }
                if (linkIdsBuilder_ == null) {
                    if (((bitField0_ & 0x00000008) != 0)) {
                        linkIds_ = java.util.Collections.unmodifiableList(linkIds_);
                        bitField0_ = (bitField0_ & ~0x00000008);
                    }
                    result.linkIds_ = linkIds_;
                } else {
                    result.linkIds_ = linkIdsBuilder_.build();
                }
            }

            private void buildPartial0(context.ContextOuterClass.Constraint_Exclusions result) {
                int from_bitField0_ = bitField0_;
                if (((from_bitField0_ & 0x00000001) != 0)) {
                    result.isPermanent_ = isPermanent_;
                }
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.Constraint_Exclusions) {
                    return mergeFrom((context.ContextOuterClass.Constraint_Exclusions) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.Constraint_Exclusions other) {
                if (other == context.ContextOuterClass.Constraint_Exclusions.getDefaultInstance())
                    return this;
                if (other.getIsPermanent() != false) {
                    setIsPermanent(other.getIsPermanent());
                }
                if (deviceIdsBuilder_ == null) {
                    if (!other.deviceIds_.isEmpty()) {
                        if (deviceIds_.isEmpty()) {
                            deviceIds_ = other.deviceIds_;
                            bitField0_ = (bitField0_ & ~0x00000002);
                        } else {
                            ensureDeviceIdsIsMutable();
                            deviceIds_.addAll(other.deviceIds_);
                        }
                        onChanged();
                    }
                } else {
                    if (!other.deviceIds_.isEmpty()) {
                        if (deviceIdsBuilder_.isEmpty()) {
                            deviceIdsBuilder_.dispose();
                            deviceIdsBuilder_ = null;
                            deviceIds_ = other.deviceIds_;
                            bitField0_ = (bitField0_ & ~0x00000002);
                            deviceIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getDeviceIdsFieldBuilder() : null;
                        } else {
                            deviceIdsBuilder_.addAllMessages(other.deviceIds_);
                        }
                    }
                }
                if (endpointIdsBuilder_ == null) {
                    if (!other.endpointIds_.isEmpty()) {
                        if (endpointIds_.isEmpty()) {
                            endpointIds_ = other.endpointIds_;
                            bitField0_ = (bitField0_ & ~0x00000004);
                        } else {
                            ensureEndpointIdsIsMutable();
                            endpointIds_.addAll(other.endpointIds_);
                        }
                        onChanged();
                    }
                } else {
                    if (!other.endpointIds_.isEmpty()) {
                        if (endpointIdsBuilder_.isEmpty()) {
                            endpointIdsBuilder_.dispose();
                            endpointIdsBuilder_ = null;
                            endpointIds_ = other.endpointIds_;
                            bitField0_ = (bitField0_ & ~0x00000004);
                            endpointIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getEndpointIdsFieldBuilder() : null;
                        } else {
                            endpointIdsBuilder_.addAllMessages(other.endpointIds_);
                        }
                    }
                }
                if (linkIdsBuilder_ == null) {
                    if (!other.linkIds_.isEmpty()) {
                        if (linkIds_.isEmpty()) {
                            linkIds_ = other.linkIds_;
                            bitField0_ = (bitField0_ & ~0x00000008);
                        } else {
                            ensureLinkIdsIsMutable();
                            linkIds_.addAll(other.linkIds_);
                        }
                        onChanged();
                    }
                } else {
                    if (!other.linkIds_.isEmpty()) {
                        if (linkIdsBuilder_.isEmpty()) {
                            linkIdsBuilder_.dispose();
                            linkIdsBuilder_ = null;
                            linkIds_ = other.linkIds_;
                            bitField0_ = (bitField0_ & ~0x00000008);
                            linkIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getLinkIdsFieldBuilder() : null;
                        } else {
                            linkIdsBuilder_.addAllMessages(other.linkIds_);
                        }
                    }
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 8:
                                {
                                    isPermanent_ = input.readBool();
                                    bitField0_ |= 0x00000001;
                                    break;
                                }
                            // case 8
                            case 18:
                                {
                                    context.ContextOuterClass.DeviceId m = input.readMessage(context.ContextOuterClass.DeviceId.parser(), extensionRegistry);
                                    if (deviceIdsBuilder_ == null) {
                                        ensureDeviceIdsIsMutable();
                                        deviceIds_.add(m);
                                    } else {
                                        deviceIdsBuilder_.addMessage(m);
                                    }
                                    break;
                                }
                            // case 18
                            case 26:
                                {
                                    context.ContextOuterClass.EndPointId m = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry);
                                    if (endpointIdsBuilder_ == null) {
                                        ensureEndpointIdsIsMutable();
                                        endpointIds_.add(m);
                                    } else {
                                        endpointIdsBuilder_.addMessage(m);
                                    }
                                    break;
                                }
                            // case 26
                            case 34:
                                {
                                    context.ContextOuterClass.LinkId m = input.readMessage(context.ContextOuterClass.LinkId.parser(), extensionRegistry);
                                    if (linkIdsBuilder_ == null) {
                                        ensureLinkIdsIsMutable();
                                        linkIds_.add(m);
                                    } else {
                                        linkIdsBuilder_.addMessage(m);
                                    }
                                    break;
                                }
                            // case 34
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private boolean isPermanent_;

            /**
             * <code>bool is_permanent = 1;</code>
             * @return The isPermanent.
             */
            @java.lang.Override
            public boolean getIsPermanent() {
                return isPermanent_;
            }

            /**
             * <code>bool is_permanent = 1;</code>
             * @param value The isPermanent to set.
             * @return This builder for chaining.
             */
            public Builder setIsPermanent(boolean value) {
                isPermanent_ = value;
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>bool is_permanent = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearIsPermanent() {
                bitField0_ = (bitField0_ & ~0x00000001);
                isPermanent_ = false;
                onChanged();
                return this;
            }

            private java.util.List<context.ContextOuterClass.DeviceId> deviceIds_ = java.util.Collections.emptyList();

            private void ensureDeviceIdsIsMutable() {
                if (!((bitField0_ & 0x00000002) != 0)) {
                    deviceIds_ = new java.util.ArrayList<context.ContextOuterClass.DeviceId>(deviceIds_);
                    bitField0_ |= 0x00000002;
                }
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> deviceIdsBuilder_;

            /**
             * <code>repeated .context.DeviceId device_ids = 2;</code>
             */
            public java.util.List<context.ContextOuterClass.DeviceId> getDeviceIdsList() {
                if (deviceIdsBuilder_ == null) {
                    return java.util.Collections.unmodifiableList(deviceIds_);
                } else {
                    return deviceIdsBuilder_.getMessageList();
                }
            }

            /**
             * <code>repeated .context.DeviceId device_ids = 2;</code>
             */
            public int getDeviceIdsCount() {
                if (deviceIdsBuilder_ == null) {
                    return deviceIds_.size();
                } else {
                    return deviceIdsBuilder_.getCount();
                }
            }

            /**
             * <code>repeated .context.DeviceId device_ids = 2;</code>
             */
            public context.ContextOuterClass.DeviceId getDeviceIds(int index) {
                if (deviceIdsBuilder_ == null) {
                    return deviceIds_.get(index);
                } else {
                    return deviceIdsBuilder_.getMessage(index);
                }
            }

            /**
             * <code>repeated .context.DeviceId device_ids = 2;</code>
             */
            public Builder setDeviceIds(int index, context.ContextOuterClass.DeviceId value) {
                if (deviceIdsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureDeviceIdsIsMutable();
                    deviceIds_.set(index, value);
                    onChanged();
                } else {
                    deviceIdsBuilder_.setMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.DeviceId device_ids = 2;</code>
             */
            public Builder setDeviceIds(int index, context.ContextOuterClass.DeviceId.Builder builderForValue) {
                if (deviceIdsBuilder_ == null) {
                    ensureDeviceIdsIsMutable();
                    deviceIds_.set(index, builderForValue.build());
                    onChanged();
                } else {
                    deviceIdsBuilder_.setMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.DeviceId device_ids = 2;</code>
             */
            public Builder addDeviceIds(context.ContextOuterClass.DeviceId value) {
                if (deviceIdsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureDeviceIdsIsMutable();
                    deviceIds_.add(value);
                    onChanged();
                } else {
                    deviceIdsBuilder_.addMessage(value);
                }
                return this;
            }

            /**
             * <code>repeated .context.DeviceId device_ids = 2;</code>
             */
            public Builder addDeviceIds(int index, context.ContextOuterClass.DeviceId value) {
                if (deviceIdsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureDeviceIdsIsMutable();
                    deviceIds_.add(index, value);
                    onChanged();
                } else {
                    deviceIdsBuilder_.addMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.DeviceId device_ids = 2;</code>
             */
            public Builder addDeviceIds(context.ContextOuterClass.DeviceId.Builder builderForValue) {
                if (deviceIdsBuilder_ == null) {
                    ensureDeviceIdsIsMutable();
                    deviceIds_.add(builderForValue.build());
                    onChanged();
                } else {
                    deviceIdsBuilder_.addMessage(builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.DeviceId device_ids = 2;</code>
             */
            public Builder addDeviceIds(int index, context.ContextOuterClass.DeviceId.Builder builderForValue) {
                if (deviceIdsBuilder_ == null) {
                    ensureDeviceIdsIsMutable();
                    deviceIds_.add(index, builderForValue.build());
                    onChanged();
                } else {
                    deviceIdsBuilder_.addMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.DeviceId device_ids = 2;</code>
             */
            public Builder addAllDeviceIds(java.lang.Iterable<? extends context.ContextOuterClass.DeviceId> values) {
                if (deviceIdsBuilder_ == null) {
                    ensureDeviceIdsIsMutable();
                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, deviceIds_);
                    onChanged();
                } else {
                    deviceIdsBuilder_.addAllMessages(values);
                }
                return this;
            }

            /**
             * <code>repeated .context.DeviceId device_ids = 2;</code>
             */
            public Builder clearDeviceIds() {
                if (deviceIdsBuilder_ == null) {
                    deviceIds_ = java.util.Collections.emptyList();
                    bitField0_ = (bitField0_ & ~0x00000002);
                    onChanged();
                } else {
                    deviceIdsBuilder_.clear();
                }
                return this;
            }

            /**
             * <code>repeated .context.DeviceId device_ids = 2;</code>
             */
            public Builder removeDeviceIds(int index) {
                if (deviceIdsBuilder_ == null) {
                    ensureDeviceIdsIsMutable();
                    deviceIds_.remove(index);
                    onChanged();
                } else {
                    deviceIdsBuilder_.remove(index);
                }
                return this;
            }

            /**
             * <code>repeated .context.DeviceId device_ids = 2;</code>
             */
            public context.ContextOuterClass.DeviceId.Builder getDeviceIdsBuilder(int index) {
                return getDeviceIdsFieldBuilder().getBuilder(index);
            }

            /**
             * <code>repeated .context.DeviceId device_ids = 2;</code>
             */
            public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdsOrBuilder(int index) {
                if (deviceIdsBuilder_ == null) {
                    return deviceIds_.get(index);
                } else {
                    return deviceIdsBuilder_.getMessageOrBuilder(index);
                }
            }

            /**
             * <code>repeated .context.DeviceId device_ids = 2;</code>
             */
            public java.util.List<? extends context.ContextOuterClass.DeviceIdOrBuilder> getDeviceIdsOrBuilderList() {
                if (deviceIdsBuilder_ != null) {
                    return deviceIdsBuilder_.getMessageOrBuilderList();
                } else {
                    return java.util.Collections.unmodifiableList(deviceIds_);
                }
            }

            /**
             * <code>repeated .context.DeviceId device_ids = 2;</code>
             */
            public context.ContextOuterClass.DeviceId.Builder addDeviceIdsBuilder() {
                return getDeviceIdsFieldBuilder().addBuilder(context.ContextOuterClass.DeviceId.getDefaultInstance());
            }

            /**
             * <code>repeated .context.DeviceId device_ids = 2;</code>
             */
            public context.ContextOuterClass.DeviceId.Builder addDeviceIdsBuilder(int index) {
                return getDeviceIdsFieldBuilder().addBuilder(index, context.ContextOuterClass.DeviceId.getDefaultInstance());
            }

            /**
             * <code>repeated .context.DeviceId device_ids = 2;</code>
             */
            public java.util.List<context.ContextOuterClass.DeviceId.Builder> getDeviceIdsBuilderList() {
                return getDeviceIdsFieldBuilder().getBuilderList();
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> getDeviceIdsFieldBuilder() {
                if (deviceIdsBuilder_ == null) {
                    deviceIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder>(deviceIds_, ((bitField0_ & 0x00000002) != 0), getParentForChildren(), isClean());
                    deviceIds_ = null;
                }
                return deviceIdsBuilder_;
            }

            private java.util.List<context.ContextOuterClass.EndPointId> endpointIds_ = java.util.Collections.emptyList();

            private void ensureEndpointIdsIsMutable() {
                if (!((bitField0_ & 0x00000004) != 0)) {
                    endpointIds_ = new java.util.ArrayList<context.ContextOuterClass.EndPointId>(endpointIds_);
                    bitField0_ |= 0x00000004;
                }
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> endpointIdsBuilder_;

            /**
             * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
             */
            public java.util.List<context.ContextOuterClass.EndPointId> getEndpointIdsList() {
                if (endpointIdsBuilder_ == null) {
                    return java.util.Collections.unmodifiableList(endpointIds_);
                } else {
                    return endpointIdsBuilder_.getMessageList();
                }
            }

            /**
             * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
             */
            public int getEndpointIdsCount() {
                if (endpointIdsBuilder_ == null) {
                    return endpointIds_.size();
                } else {
                    return endpointIdsBuilder_.getCount();
                }
            }

            /**
             * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
             */
            public context.ContextOuterClass.EndPointId getEndpointIds(int index) {
                if (endpointIdsBuilder_ == null) {
                    return endpointIds_.get(index);
                } else {
                    return endpointIdsBuilder_.getMessage(index);
                }
            }

            /**
             * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
             */
            public Builder setEndpointIds(int index, context.ContextOuterClass.EndPointId value) {
                if (endpointIdsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureEndpointIdsIsMutable();
                    endpointIds_.set(index, value);
                    onChanged();
                } else {
                    endpointIdsBuilder_.setMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
             */
            public Builder setEndpointIds(int index, context.ContextOuterClass.EndPointId.Builder builderForValue) {
                if (endpointIdsBuilder_ == null) {
                    ensureEndpointIdsIsMutable();
                    endpointIds_.set(index, builderForValue.build());
                    onChanged();
                } else {
                    endpointIdsBuilder_.setMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
             */
            public Builder addEndpointIds(context.ContextOuterClass.EndPointId value) {
                if (endpointIdsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureEndpointIdsIsMutable();
                    endpointIds_.add(value);
                    onChanged();
                } else {
                    endpointIdsBuilder_.addMessage(value);
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
             */
            public Builder addEndpointIds(int index, context.ContextOuterClass.EndPointId value) {
                if (endpointIdsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureEndpointIdsIsMutable();
                    endpointIds_.add(index, value);
                    onChanged();
                } else {
                    endpointIdsBuilder_.addMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
             */
            public Builder addEndpointIds(context.ContextOuterClass.EndPointId.Builder builderForValue) {
                if (endpointIdsBuilder_ == null) {
                    ensureEndpointIdsIsMutable();
                    endpointIds_.add(builderForValue.build());
                    onChanged();
                } else {
                    endpointIdsBuilder_.addMessage(builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
             */
            public Builder addEndpointIds(int index, context.ContextOuterClass.EndPointId.Builder builderForValue) {
                if (endpointIdsBuilder_ == null) {
                    ensureEndpointIdsIsMutable();
                    endpointIds_.add(index, builderForValue.build());
                    onChanged();
                } else {
                    endpointIdsBuilder_.addMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
             */
            public Builder addAllEndpointIds(java.lang.Iterable<? extends context.ContextOuterClass.EndPointId> values) {
                if (endpointIdsBuilder_ == null) {
                    ensureEndpointIdsIsMutable();
                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, endpointIds_);
                    onChanged();
                } else {
                    endpointIdsBuilder_.addAllMessages(values);
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
             */
            public Builder clearEndpointIds() {
                if (endpointIdsBuilder_ == null) {
                    endpointIds_ = java.util.Collections.emptyList();
                    bitField0_ = (bitField0_ & ~0x00000004);
                    onChanged();
                } else {
                    endpointIdsBuilder_.clear();
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
             */
            public Builder removeEndpointIds(int index) {
                if (endpointIdsBuilder_ == null) {
                    ensureEndpointIdsIsMutable();
                    endpointIds_.remove(index);
                    onChanged();
                } else {
                    endpointIdsBuilder_.remove(index);
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
             */
            public context.ContextOuterClass.EndPointId.Builder getEndpointIdsBuilder(int index) {
                return getEndpointIdsFieldBuilder().getBuilder(index);
            }

            /**
             * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
             */
            public context.ContextOuterClass.EndPointIdOrBuilder getEndpointIdsOrBuilder(int index) {
                if (endpointIdsBuilder_ == null) {
                    return endpointIds_.get(index);
                } else {
                    return endpointIdsBuilder_.getMessageOrBuilder(index);
                }
            }

            /**
             * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
             */
            public java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> getEndpointIdsOrBuilderList() {
                if (endpointIdsBuilder_ != null) {
                    return endpointIdsBuilder_.getMessageOrBuilderList();
                } else {
                    return java.util.Collections.unmodifiableList(endpointIds_);
                }
            }

            /**
             * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
             */
            public context.ContextOuterClass.EndPointId.Builder addEndpointIdsBuilder() {
                return getEndpointIdsFieldBuilder().addBuilder(context.ContextOuterClass.EndPointId.getDefaultInstance());
            }

            /**
             * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
             */
            public context.ContextOuterClass.EndPointId.Builder addEndpointIdsBuilder(int index) {
                return getEndpointIdsFieldBuilder().addBuilder(index, context.ContextOuterClass.EndPointId.getDefaultInstance());
            }

            /**
             * <code>repeated .context.EndPointId endpoint_ids = 3;</code>
             */
            public java.util.List<context.ContextOuterClass.EndPointId.Builder> getEndpointIdsBuilderList() {
                return getEndpointIdsFieldBuilder().getBuilderList();
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> getEndpointIdsFieldBuilder() {
                if (endpointIdsBuilder_ == null) {
                    endpointIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder>(endpointIds_, ((bitField0_ & 0x00000004) != 0), getParentForChildren(), isClean());
                    endpointIds_ = null;
                }
                return endpointIdsBuilder_;
            }

            private java.util.List<context.ContextOuterClass.LinkId> linkIds_ = java.util.Collections.emptyList();

            private void ensureLinkIdsIsMutable() {
                if (!((bitField0_ & 0x00000008) != 0)) {
                    linkIds_ = new java.util.ArrayList<context.ContextOuterClass.LinkId>(linkIds_);
                    bitField0_ |= 0x00000008;
                }
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder> linkIdsBuilder_;

            /**
             * <code>repeated .context.LinkId link_ids = 4;</code>
             */
            public java.util.List<context.ContextOuterClass.LinkId> getLinkIdsList() {
                if (linkIdsBuilder_ == null) {
                    return java.util.Collections.unmodifiableList(linkIds_);
                } else {
                    return linkIdsBuilder_.getMessageList();
                }
            }

            /**
             * <code>repeated .context.LinkId link_ids = 4;</code>
             */
            public int getLinkIdsCount() {
                if (linkIdsBuilder_ == null) {
                    return linkIds_.size();
                } else {
                    return linkIdsBuilder_.getCount();
                }
            }

            /**
             * <code>repeated .context.LinkId link_ids = 4;</code>
             */
            public context.ContextOuterClass.LinkId getLinkIds(int index) {
                if (linkIdsBuilder_ == null) {
                    return linkIds_.get(index);
                } else {
                    return linkIdsBuilder_.getMessage(index);
                }
            }

            /**
             * <code>repeated .context.LinkId link_ids = 4;</code>
             */
            public Builder setLinkIds(int index, context.ContextOuterClass.LinkId value) {
                if (linkIdsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureLinkIdsIsMutable();
                    linkIds_.set(index, value);
                    onChanged();
                } else {
                    linkIdsBuilder_.setMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.LinkId link_ids = 4;</code>
             */
            public Builder setLinkIds(int index, context.ContextOuterClass.LinkId.Builder builderForValue) {
                if (linkIdsBuilder_ == null) {
                    ensureLinkIdsIsMutable();
                    linkIds_.set(index, builderForValue.build());
                    onChanged();
                } else {
                    linkIdsBuilder_.setMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.LinkId link_ids = 4;</code>
             */
            public Builder addLinkIds(context.ContextOuterClass.LinkId value) {
                if (linkIdsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureLinkIdsIsMutable();
                    linkIds_.add(value);
                    onChanged();
                } else {
                    linkIdsBuilder_.addMessage(value);
                }
                return this;
            }

            /**
             * <code>repeated .context.LinkId link_ids = 4;</code>
             */
            public Builder addLinkIds(int index, context.ContextOuterClass.LinkId value) {
                if (linkIdsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureLinkIdsIsMutable();
                    linkIds_.add(index, value);
                    onChanged();
                } else {
                    linkIdsBuilder_.addMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.LinkId link_ids = 4;</code>
             */
            public Builder addLinkIds(context.ContextOuterClass.LinkId.Builder builderForValue) {
                if (linkIdsBuilder_ == null) {
                    ensureLinkIdsIsMutable();
                    linkIds_.add(builderForValue.build());
                    onChanged();
                } else {
                    linkIdsBuilder_.addMessage(builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.LinkId link_ids = 4;</code>
             */
            public Builder addLinkIds(int index, context.ContextOuterClass.LinkId.Builder builderForValue) {
                if (linkIdsBuilder_ == null) {
                    ensureLinkIdsIsMutable();
                    linkIds_.add(index, builderForValue.build());
                    onChanged();
                } else {
                    linkIdsBuilder_.addMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.LinkId link_ids = 4;</code>
             */
            public Builder addAllLinkIds(java.lang.Iterable<? extends context.ContextOuterClass.LinkId> values) {
                if (linkIdsBuilder_ == null) {
                    ensureLinkIdsIsMutable();
                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, linkIds_);
                    onChanged();
                } else {
                    linkIdsBuilder_.addAllMessages(values);
                }
                return this;
            }

            /**
             * <code>repeated .context.LinkId link_ids = 4;</code>
             */
            public Builder clearLinkIds() {
                if (linkIdsBuilder_ == null) {
                    linkIds_ = java.util.Collections.emptyList();
                    bitField0_ = (bitField0_ & ~0x00000008);
                    onChanged();
                } else {
                    linkIdsBuilder_.clear();
                }
                return this;
            }

            /**
             * <code>repeated .context.LinkId link_ids = 4;</code>
             */
            public Builder removeLinkIds(int index) {
                if (linkIdsBuilder_ == null) {
                    ensureLinkIdsIsMutable();
                    linkIds_.remove(index);
                    onChanged();
                } else {
                    linkIdsBuilder_.remove(index);
                }
                return this;
            }

            /**
             * <code>repeated .context.LinkId link_ids = 4;</code>
             */
            public context.ContextOuterClass.LinkId.Builder getLinkIdsBuilder(int index) {
                return getLinkIdsFieldBuilder().getBuilder(index);
            }

            /**
             * <code>repeated .context.LinkId link_ids = 4;</code>
             */
            public context.ContextOuterClass.LinkIdOrBuilder getLinkIdsOrBuilder(int index) {
                if (linkIdsBuilder_ == null) {
                    return linkIds_.get(index);
                } else {
                    return linkIdsBuilder_.getMessageOrBuilder(index);
                }
            }

            /**
             * <code>repeated .context.LinkId link_ids = 4;</code>
             */
            public java.util.List<? extends context.ContextOuterClass.LinkIdOrBuilder> getLinkIdsOrBuilderList() {
                if (linkIdsBuilder_ != null) {
                    return linkIdsBuilder_.getMessageOrBuilderList();
                } else {
                    return java.util.Collections.unmodifiableList(linkIds_);
                }
            }

            /**
             * <code>repeated .context.LinkId link_ids = 4;</code>
             */
            public context.ContextOuterClass.LinkId.Builder addLinkIdsBuilder() {
                return getLinkIdsFieldBuilder().addBuilder(context.ContextOuterClass.LinkId.getDefaultInstance());
            }

            /**
             * <code>repeated .context.LinkId link_ids = 4;</code>
             */
            public context.ContextOuterClass.LinkId.Builder addLinkIdsBuilder(int index) {
                return getLinkIdsFieldBuilder().addBuilder(index, context.ContextOuterClass.LinkId.getDefaultInstance());
            }

            /**
             * <code>repeated .context.LinkId link_ids = 4;</code>
             */
            public java.util.List<context.ContextOuterClass.LinkId.Builder> getLinkIdsBuilderList() {
                return getLinkIdsFieldBuilder().getBuilderList();
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder> getLinkIdsFieldBuilder() {
                if (linkIdsBuilder_ == null) {
                    linkIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder>(linkIds_, ((bitField0_ & 0x00000008) != 0), getParentForChildren(), isClean());
                    linkIds_ = null;
                }
                return linkIdsBuilder_;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.Constraint_Exclusions)
        }

        // @@protoc_insertion_point(class_scope:context.Constraint_Exclusions)
        private static final context.ContextOuterClass.Constraint_Exclusions DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.Constraint_Exclusions();
        }

        public static context.ContextOuterClass.Constraint_Exclusions getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<Constraint_Exclusions> PARSER = new com.google.protobuf.AbstractParser<Constraint_Exclusions>() {

            @java.lang.Override
            public Constraint_Exclusions parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<Constraint_Exclusions> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<Constraint_Exclusions> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.Constraint_Exclusions getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface QoSProfileIdOrBuilder extends // @@protoc_insertion_point(interface_extends:context.QoSProfileId)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>.context.Uuid qos_profile_id = 1;</code>
         * @return Whether the qosProfileId field is set.
         */
        boolean hasQosProfileId();

        /**
         * <code>.context.Uuid qos_profile_id = 1;</code>
         * @return The qosProfileId.
         */
        context.ContextOuterClass.Uuid getQosProfileId();

        /**
         * <code>.context.Uuid qos_profile_id = 1;</code>
         */
        context.ContextOuterClass.UuidOrBuilder getQosProfileIdOrBuilder();
    }

    /**
     * Protobuf type {@code context.QoSProfileId}
     */
    public static final class QoSProfileId extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.QoSProfileId)
    QoSProfileIdOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use QoSProfileId.newBuilder() to construct.
        private QoSProfileId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private QoSProfileId() {
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new QoSProfileId();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_QoSProfileId_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_QoSProfileId_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.QoSProfileId.class, context.ContextOuterClass.QoSProfileId.Builder.class);
        }

        public static final int QOS_PROFILE_ID_FIELD_NUMBER = 1;

        private context.ContextOuterClass.Uuid qosProfileId_;

        /**
         * <code>.context.Uuid qos_profile_id = 1;</code>
         * @return Whether the qosProfileId field is set.
         */
        @java.lang.Override
        public boolean hasQosProfileId() {
            return qosProfileId_ != null;
        }

        /**
         * <code>.context.Uuid qos_profile_id = 1;</code>
         * @return The qosProfileId.
         */
        @java.lang.Override
        public context.ContextOuterClass.Uuid getQosProfileId() {
            return qosProfileId_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : qosProfileId_;
        }

        /**
         * <code>.context.Uuid qos_profile_id = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.UuidOrBuilder getQosProfileIdOrBuilder() {
            return qosProfileId_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : qosProfileId_;
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            if (qosProfileId_ != null) {
                output.writeMessage(1, getQosProfileId());
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            if (qosProfileId_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getQosProfileId());
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.QoSProfileId)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.QoSProfileId other = (context.ContextOuterClass.QoSProfileId) obj;
            if (hasQosProfileId() != other.hasQosProfileId())
                return false;
            if (hasQosProfileId()) {
                if (!getQosProfileId().equals(other.getQosProfileId()))
                    return false;
            }
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            if (hasQosProfileId()) {
                hash = (37 * hash) + QOS_PROFILE_ID_FIELD_NUMBER;
                hash = (53 * hash) + getQosProfileId().hashCode();
            }
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.QoSProfileId parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.QoSProfileId parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.QoSProfileId parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.QoSProfileId parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.QoSProfileId parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.QoSProfileId parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.QoSProfileId parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.QoSProfileId parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.QoSProfileId parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.QoSProfileId parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.QoSProfileId parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.QoSProfileId parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.QoSProfileId prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code context.QoSProfileId}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.QoSProfileId)
        context.ContextOuterClass.QoSProfileIdOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_QoSProfileId_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_QoSProfileId_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.QoSProfileId.class, context.ContextOuterClass.QoSProfileId.Builder.class);
            }

            // Construct using context.ContextOuterClass.QoSProfileId.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                qosProfileId_ = null;
                if (qosProfileIdBuilder_ != null) {
                    qosProfileIdBuilder_.dispose();
                    qosProfileIdBuilder_ = null;
                }
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_QoSProfileId_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.QoSProfileId getDefaultInstanceForType() {
                return context.ContextOuterClass.QoSProfileId.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.QoSProfileId build() {
                context.ContextOuterClass.QoSProfileId result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.QoSProfileId buildPartial() {
                context.ContextOuterClass.QoSProfileId result = new context.ContextOuterClass.QoSProfileId(this);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartial0(context.ContextOuterClass.QoSProfileId result) {
                int from_bitField0_ = bitField0_;
                if (((from_bitField0_ & 0x00000001) != 0)) {
                    result.qosProfileId_ = qosProfileIdBuilder_ == null ? qosProfileId_ : qosProfileIdBuilder_.build();
                }
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.QoSProfileId) {
                    return mergeFrom((context.ContextOuterClass.QoSProfileId) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.QoSProfileId other) {
                if (other == context.ContextOuterClass.QoSProfileId.getDefaultInstance())
                    return this;
                if (other.hasQosProfileId()) {
                    mergeQosProfileId(other.getQosProfileId());
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 10:
                                {
                                    input.readMessage(getQosProfileIdFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000001;
                                    break;
                                }
                            // case 10
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private context.ContextOuterClass.Uuid qosProfileId_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> qosProfileIdBuilder_;

            /**
             * <code>.context.Uuid qos_profile_id = 1;</code>
             * @return Whether the qosProfileId field is set.
             */
            public boolean hasQosProfileId() {
                return ((bitField0_ & 0x00000001) != 0);
            }

            /**
             * <code>.context.Uuid qos_profile_id = 1;</code>
             * @return The qosProfileId.
             */
            public context.ContextOuterClass.Uuid getQosProfileId() {
                if (qosProfileIdBuilder_ == null) {
                    return qosProfileId_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : qosProfileId_;
                } else {
                    return qosProfileIdBuilder_.getMessage();
                }
            }

            /**
             * <code>.context.Uuid qos_profile_id = 1;</code>
             */
            public Builder setQosProfileId(context.ContextOuterClass.Uuid value) {
                if (qosProfileIdBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    qosProfileId_ = value;
                } else {
                    qosProfileIdBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.Uuid qos_profile_id = 1;</code>
             */
            public Builder setQosProfileId(context.ContextOuterClass.Uuid.Builder builderForValue) {
                if (qosProfileIdBuilder_ == null) {
                    qosProfileId_ = builderForValue.build();
                } else {
                    qosProfileIdBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.Uuid qos_profile_id = 1;</code>
             */
            public Builder mergeQosProfileId(context.ContextOuterClass.Uuid value) {
                if (qosProfileIdBuilder_ == null) {
                    if (((bitField0_ & 0x00000001) != 0) && qosProfileId_ != null && qosProfileId_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
                        getQosProfileIdBuilder().mergeFrom(value);
                    } else {
                        qosProfileId_ = value;
                    }
                } else {
                    qosProfileIdBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.Uuid qos_profile_id = 1;</code>
             */
            public Builder clearQosProfileId() {
                bitField0_ = (bitField0_ & ~0x00000001);
                qosProfileId_ = null;
                if (qosProfileIdBuilder_ != null) {
                    qosProfileIdBuilder_.dispose();
                    qosProfileIdBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.Uuid qos_profile_id = 1;</code>
             */
            public context.ContextOuterClass.Uuid.Builder getQosProfileIdBuilder() {
                bitField0_ |= 0x00000001;
                onChanged();
                return getQosProfileIdFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.Uuid qos_profile_id = 1;</code>
             */
            public context.ContextOuterClass.UuidOrBuilder getQosProfileIdOrBuilder() {
                if (qosProfileIdBuilder_ != null) {
                    return qosProfileIdBuilder_.getMessageOrBuilder();
                } else {
                    return qosProfileId_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : qosProfileId_;
                }
            }

            /**
             * <code>.context.Uuid qos_profile_id = 1;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> getQosProfileIdFieldBuilder() {
                if (qosProfileIdBuilder_ == null) {
                    qosProfileIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder>(getQosProfileId(), getParentForChildren(), isClean());
                    qosProfileId_ = null;
                }
                return qosProfileIdBuilder_;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.QoSProfileId)
        }

        // @@protoc_insertion_point(class_scope:context.QoSProfileId)
        private static final context.ContextOuterClass.QoSProfileId DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.QoSProfileId();
        }

        public static context.ContextOuterClass.QoSProfileId getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<QoSProfileId> PARSER = new com.google.protobuf.AbstractParser<QoSProfileId>() {

            @java.lang.Override
            public QoSProfileId parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<QoSProfileId> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<QoSProfileId> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.QoSProfileId getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface Constraint_QoSProfileOrBuilder extends // @@protoc_insertion_point(interface_extends:context.Constraint_QoSProfile)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>.context.QoSProfileId qos_profile_id = 1;</code>
         * @return Whether the qosProfileId field is set.
         */
        boolean hasQosProfileId();

        /**
         * <code>.context.QoSProfileId qos_profile_id = 1;</code>
         * @return The qosProfileId.
         */
        context.ContextOuterClass.QoSProfileId getQosProfileId();

        /**
         * <code>.context.QoSProfileId qos_profile_id = 1;</code>
         */
        context.ContextOuterClass.QoSProfileIdOrBuilder getQosProfileIdOrBuilder();

        /**
         * <code>string qos_profile_name = 2;</code>
         * @return The qosProfileName.
         */
        java.lang.String getQosProfileName();

        /**
         * <code>string qos_profile_name = 2;</code>
         * @return The bytes for qosProfileName.
         */
        com.google.protobuf.ByteString getQosProfileNameBytes();
    }

    /**
     * Protobuf type {@code context.Constraint_QoSProfile}
     */
    public static final class Constraint_QoSProfile extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.Constraint_QoSProfile)
    Constraint_QoSProfileOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use Constraint_QoSProfile.newBuilder() to construct.
        private Constraint_QoSProfile(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private Constraint_QoSProfile() {
            qosProfileName_ = "";
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new Constraint_QoSProfile();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_Constraint_QoSProfile_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_Constraint_QoSProfile_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Constraint_QoSProfile.class, context.ContextOuterClass.Constraint_QoSProfile.Builder.class);
        }

        public static final int QOS_PROFILE_ID_FIELD_NUMBER = 1;

        private context.ContextOuterClass.QoSProfileId qosProfileId_;

        /**
         * <code>.context.QoSProfileId qos_profile_id = 1;</code>
         * @return Whether the qosProfileId field is set.
         */
        @java.lang.Override
        public boolean hasQosProfileId() {
            return qosProfileId_ != null;
        }

        /**
         * <code>.context.QoSProfileId qos_profile_id = 1;</code>
         * @return The qosProfileId.
         */
        @java.lang.Override
        public context.ContextOuterClass.QoSProfileId getQosProfileId() {
            return qosProfileId_ == null ? context.ContextOuterClass.QoSProfileId.getDefaultInstance() : qosProfileId_;
        }

        /**
         * <code>.context.QoSProfileId qos_profile_id = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.QoSProfileIdOrBuilder getQosProfileIdOrBuilder() {
            return qosProfileId_ == null ? context.ContextOuterClass.QoSProfileId.getDefaultInstance() : qosProfileId_;
        }

        public static final int QOS_PROFILE_NAME_FIELD_NUMBER = 2;

        @SuppressWarnings("serial")
        private volatile java.lang.Object qosProfileName_ = "";

        /**
         * <code>string qos_profile_name = 2;</code>
         * @return The qosProfileName.
         */
        @java.lang.Override
        public java.lang.String getQosProfileName() {
            java.lang.Object ref = qosProfileName_;
            if (ref instanceof java.lang.String) {
                return (java.lang.String) ref;
            } else {
                com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                java.lang.String s = bs.toStringUtf8();
                qosProfileName_ = s;
                return s;
            }
        }

        /**
         * <code>string qos_profile_name = 2;</code>
         * @return The bytes for qosProfileName.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString getQosProfileNameBytes() {
            java.lang.Object ref = qosProfileName_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                qosProfileName_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            if (qosProfileId_ != null) {
                output.writeMessage(1, getQosProfileId());
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(qosProfileName_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 2, qosProfileName_);
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            if (qosProfileId_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getQosProfileId());
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(qosProfileName_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, qosProfileName_);
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.Constraint_QoSProfile)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.Constraint_QoSProfile other = (context.ContextOuterClass.Constraint_QoSProfile) obj;
            if (hasQosProfileId() != other.hasQosProfileId())
                return false;
            if (hasQosProfileId()) {
                if (!getQosProfileId().equals(other.getQosProfileId()))
                    return false;
            }
            if (!getQosProfileName().equals(other.getQosProfileName()))
                return false;
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            if (hasQosProfileId()) {
                hash = (37 * hash) + QOS_PROFILE_ID_FIELD_NUMBER;
                hash = (53 * hash) + getQosProfileId().hashCode();
            }
            hash = (37 * hash) + QOS_PROFILE_NAME_FIELD_NUMBER;
            hash = (53 * hash) + getQosProfileName().hashCode();
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.Constraint_QoSProfile parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.Constraint_QoSProfile parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.Constraint_QoSProfile parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.Constraint_QoSProfile parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.Constraint_QoSProfile parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.Constraint_QoSProfile parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.Constraint_QoSProfile parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.Constraint_QoSProfile parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.Constraint_QoSProfile parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.Constraint_QoSProfile parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.Constraint_QoSProfile parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.Constraint_QoSProfile parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.Constraint_QoSProfile prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code context.Constraint_QoSProfile}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.Constraint_QoSProfile)
        context.ContextOuterClass.Constraint_QoSProfileOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_Constraint_QoSProfile_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_Constraint_QoSProfile_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Constraint_QoSProfile.class, context.ContextOuterClass.Constraint_QoSProfile.Builder.class);
            }

            // Construct using context.ContextOuterClass.Constraint_QoSProfile.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                qosProfileId_ = null;
                if (qosProfileIdBuilder_ != null) {
                    qosProfileIdBuilder_.dispose();
                    qosProfileIdBuilder_ = null;
                }
                qosProfileName_ = "";
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_Constraint_QoSProfile_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.Constraint_QoSProfile getDefaultInstanceForType() {
                return context.ContextOuterClass.Constraint_QoSProfile.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.Constraint_QoSProfile build() {
                context.ContextOuterClass.Constraint_QoSProfile result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.Constraint_QoSProfile buildPartial() {
                context.ContextOuterClass.Constraint_QoSProfile result = new context.ContextOuterClass.Constraint_QoSProfile(this);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartial0(context.ContextOuterClass.Constraint_QoSProfile result) {
                int from_bitField0_ = bitField0_;
                if (((from_bitField0_ & 0x00000001) != 0)) {
                    result.qosProfileId_ = qosProfileIdBuilder_ == null ? qosProfileId_ : qosProfileIdBuilder_.build();
                }
                if (((from_bitField0_ & 0x00000002) != 0)) {
                    result.qosProfileName_ = qosProfileName_;
                }
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.Constraint_QoSProfile) {
                    return mergeFrom((context.ContextOuterClass.Constraint_QoSProfile) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.Constraint_QoSProfile other) {
                if (other == context.ContextOuterClass.Constraint_QoSProfile.getDefaultInstance())
                    return this;
                if (other.hasQosProfileId()) {
                    mergeQosProfileId(other.getQosProfileId());
                }
                if (!other.getQosProfileName().isEmpty()) {
                    qosProfileName_ = other.qosProfileName_;
                    bitField0_ |= 0x00000002;
                    onChanged();
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 10:
                                {
                                    input.readMessage(getQosProfileIdFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000001;
                                    break;
                                }
                            // case 10
                            case 18:
                                {
                                    qosProfileName_ = input.readStringRequireUtf8();
                                    bitField0_ |= 0x00000002;
                                    break;
                                }
                            // case 18
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private context.ContextOuterClass.QoSProfileId qosProfileId_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.QoSProfileId, context.ContextOuterClass.QoSProfileId.Builder, context.ContextOuterClass.QoSProfileIdOrBuilder> qosProfileIdBuilder_;

            /**
             * <code>.context.QoSProfileId qos_profile_id = 1;</code>
             * @return Whether the qosProfileId field is set.
             */
            public boolean hasQosProfileId() {
                return ((bitField0_ & 0x00000001) != 0);
            }

            /**
             * <code>.context.QoSProfileId qos_profile_id = 1;</code>
             * @return The qosProfileId.
             */
            public context.ContextOuterClass.QoSProfileId getQosProfileId() {
                if (qosProfileIdBuilder_ == null) {
                    return qosProfileId_ == null ? context.ContextOuterClass.QoSProfileId.getDefaultInstance() : qosProfileId_;
                } else {
                    return qosProfileIdBuilder_.getMessage();
                }
            }

            /**
             * <code>.context.QoSProfileId qos_profile_id = 1;</code>
             */
            public Builder setQosProfileId(context.ContextOuterClass.QoSProfileId value) {
                if (qosProfileIdBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    qosProfileId_ = value;
                } else {
                    qosProfileIdBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.QoSProfileId qos_profile_id = 1;</code>
             */
            public Builder setQosProfileId(context.ContextOuterClass.QoSProfileId.Builder builderForValue) {
                if (qosProfileIdBuilder_ == null) {
                    qosProfileId_ = builderForValue.build();
                } else {
                    qosProfileIdBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.QoSProfileId qos_profile_id = 1;</code>
             */
            public Builder mergeQosProfileId(context.ContextOuterClass.QoSProfileId value) {
                if (qosProfileIdBuilder_ == null) {
                    if (((bitField0_ & 0x00000001) != 0) && qosProfileId_ != null && qosProfileId_ != context.ContextOuterClass.QoSProfileId.getDefaultInstance()) {
                        getQosProfileIdBuilder().mergeFrom(value);
                    } else {
                        qosProfileId_ = value;
                    }
                } else {
                    qosProfileIdBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.QoSProfileId qos_profile_id = 1;</code>
             */
            public Builder clearQosProfileId() {
                bitField0_ = (bitField0_ & ~0x00000001);
                qosProfileId_ = null;
                if (qosProfileIdBuilder_ != null) {
                    qosProfileIdBuilder_.dispose();
                    qosProfileIdBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.QoSProfileId qos_profile_id = 1;</code>
             */
            public context.ContextOuterClass.QoSProfileId.Builder getQosProfileIdBuilder() {
                bitField0_ |= 0x00000001;
                onChanged();
                return getQosProfileIdFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.QoSProfileId qos_profile_id = 1;</code>
             */
            public context.ContextOuterClass.QoSProfileIdOrBuilder getQosProfileIdOrBuilder() {
                if (qosProfileIdBuilder_ != null) {
                    return qosProfileIdBuilder_.getMessageOrBuilder();
                } else {
                    return qosProfileId_ == null ? context.ContextOuterClass.QoSProfileId.getDefaultInstance() : qosProfileId_;
                }
            }

            /**
             * <code>.context.QoSProfileId qos_profile_id = 1;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.QoSProfileId, context.ContextOuterClass.QoSProfileId.Builder, context.ContextOuterClass.QoSProfileIdOrBuilder> getQosProfileIdFieldBuilder() {
                if (qosProfileIdBuilder_ == null) {
                    qosProfileIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.QoSProfileId, context.ContextOuterClass.QoSProfileId.Builder, context.ContextOuterClass.QoSProfileIdOrBuilder>(getQosProfileId(), getParentForChildren(), isClean());
                    qosProfileId_ = null;
                }
                return qosProfileIdBuilder_;
            }

            private java.lang.Object qosProfileName_ = "";

            /**
             * <code>string qos_profile_name = 2;</code>
             * @return The qosProfileName.
             */
            public java.lang.String getQosProfileName() {
                java.lang.Object ref = qosProfileName_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    qosProfileName_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }

            /**
             * <code>string qos_profile_name = 2;</code>
             * @return The bytes for qosProfileName.
             */
            public com.google.protobuf.ByteString getQosProfileNameBytes() {
                java.lang.Object ref = qosProfileName_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                    qosProfileName_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }

            /**
             * <code>string qos_profile_name = 2;</code>
             * @param value The qosProfileName to set.
             * @return This builder for chaining.
             */
            public Builder setQosProfileName(java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                qosProfileName_ = value;
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>string qos_profile_name = 2;</code>
             * @return This builder for chaining.
             */
            public Builder clearQosProfileName() {
                qosProfileName_ = getDefaultInstance().getQosProfileName();
                bitField0_ = (bitField0_ & ~0x00000002);
                onChanged();
                return this;
            }

            /**
             * <code>string qos_profile_name = 2;</code>
             * @param value The bytes for qosProfileName to set.
             * @return This builder for chaining.
             */
            public Builder setQosProfileNameBytes(com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);
                qosProfileName_ = value;
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.Constraint_QoSProfile)
        }

        // @@protoc_insertion_point(class_scope:context.Constraint_QoSProfile)
        private static final context.ContextOuterClass.Constraint_QoSProfile DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.Constraint_QoSProfile();
        }

        public static context.ContextOuterClass.Constraint_QoSProfile getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<Constraint_QoSProfile> PARSER = new com.google.protobuf.AbstractParser<Constraint_QoSProfile>() {

            @java.lang.Override
            public Constraint_QoSProfile parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<Constraint_QoSProfile> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<Constraint_QoSProfile> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.Constraint_QoSProfile getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface ConstraintOrBuilder extends // @@protoc_insertion_point(interface_extends:context.Constraint)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>.context.ConstraintActionEnum action = 1;</code>
         * @return The enum numeric value on the wire for action.
         */
        int getActionValue();

        /**
         * <code>.context.ConstraintActionEnum action = 1;</code>
         * @return The action.
         */
        context.ContextOuterClass.ConstraintActionEnum getAction();

        /**
         * <code>.context.Constraint_Custom custom = 2;</code>
         * @return Whether the custom field is set.
         */
        boolean hasCustom();

        /**
         * <code>.context.Constraint_Custom custom = 2;</code>
         * @return The custom.
         */
        context.ContextOuterClass.Constraint_Custom getCustom();

        /**
         * <code>.context.Constraint_Custom custom = 2;</code>
         */
        context.ContextOuterClass.Constraint_CustomOrBuilder getCustomOrBuilder();

        /**
         * <code>.context.Constraint_Schedule schedule = 3;</code>
         * @return Whether the schedule field is set.
         */
        boolean hasSchedule();

        /**
         * <code>.context.Constraint_Schedule schedule = 3;</code>
         * @return The schedule.
         */
        context.ContextOuterClass.Constraint_Schedule getSchedule();

        /**
         * <code>.context.Constraint_Schedule schedule = 3;</code>
         */
        context.ContextOuterClass.Constraint_ScheduleOrBuilder getScheduleOrBuilder();

        /**
         * <code>.context.Constraint_EndPointLocation endpoint_location = 4;</code>
         * @return Whether the endpointLocation field is set.
         */
        boolean hasEndpointLocation();

        /**
         * <code>.context.Constraint_EndPointLocation endpoint_location = 4;</code>
         * @return The endpointLocation.
         */
        context.ContextOuterClass.Constraint_EndPointLocation getEndpointLocation();

        /**
         * <code>.context.Constraint_EndPointLocation endpoint_location = 4;</code>
         */
        context.ContextOuterClass.Constraint_EndPointLocationOrBuilder getEndpointLocationOrBuilder();

        /**
         * <code>.context.Constraint_EndPointPriority endpoint_priority = 5;</code>
         * @return Whether the endpointPriority field is set.
         */
        boolean hasEndpointPriority();

        /**
         * <code>.context.Constraint_EndPointPriority endpoint_priority = 5;</code>
         * @return The endpointPriority.
         */
        context.ContextOuterClass.Constraint_EndPointPriority getEndpointPriority();

        /**
         * <code>.context.Constraint_EndPointPriority endpoint_priority = 5;</code>
         */
        context.ContextOuterClass.Constraint_EndPointPriorityOrBuilder getEndpointPriorityOrBuilder();

        /**
         * <code>.context.Constraint_SLA_Capacity sla_capacity = 6;</code>
         * @return Whether the slaCapacity field is set.
         */
        boolean hasSlaCapacity();

        /**
         * <code>.context.Constraint_SLA_Capacity sla_capacity = 6;</code>
         * @return The slaCapacity.
         */
        context.ContextOuterClass.Constraint_SLA_Capacity getSlaCapacity();

        /**
         * <code>.context.Constraint_SLA_Capacity sla_capacity = 6;</code>
         */
        context.ContextOuterClass.Constraint_SLA_CapacityOrBuilder getSlaCapacityOrBuilder();

        /**
         * <code>.context.Constraint_SLA_Latency sla_latency = 7;</code>
         * @return Whether the slaLatency field is set.
         */
        boolean hasSlaLatency();

        /**
         * <code>.context.Constraint_SLA_Latency sla_latency = 7;</code>
         * @return The slaLatency.
         */
        context.ContextOuterClass.Constraint_SLA_Latency getSlaLatency();

        /**
         * <code>.context.Constraint_SLA_Latency sla_latency = 7;</code>
         */
        context.ContextOuterClass.Constraint_SLA_LatencyOrBuilder getSlaLatencyOrBuilder();

        /**
         * <code>.context.Constraint_SLA_Availability sla_availability = 8;</code>
         * @return Whether the slaAvailability field is set.
         */
        boolean hasSlaAvailability();

        /**
         * <code>.context.Constraint_SLA_Availability sla_availability = 8;</code>
         * @return The slaAvailability.
         */
        context.ContextOuterClass.Constraint_SLA_Availability getSlaAvailability();

        /**
         * <code>.context.Constraint_SLA_Availability sla_availability = 8;</code>
         */
        context.ContextOuterClass.Constraint_SLA_AvailabilityOrBuilder getSlaAvailabilityOrBuilder();

        /**
         * <code>.context.Constraint_SLA_Isolation_level sla_isolation = 9;</code>
         * @return Whether the slaIsolation field is set.
         */
        boolean hasSlaIsolation();

        /**
         * <code>.context.Constraint_SLA_Isolation_level sla_isolation = 9;</code>
         * @return The slaIsolation.
         */
        context.ContextOuterClass.Constraint_SLA_Isolation_level getSlaIsolation();

        /**
         * <code>.context.Constraint_SLA_Isolation_level sla_isolation = 9;</code>
         */
        context.ContextOuterClass.Constraint_SLA_Isolation_levelOrBuilder getSlaIsolationOrBuilder();

        /**
         * <code>.context.Constraint_Exclusions exclusions = 10;</code>
         * @return Whether the exclusions field is set.
         */
        boolean hasExclusions();

        /**
         * <code>.context.Constraint_Exclusions exclusions = 10;</code>
         * @return The exclusions.
         */
        context.ContextOuterClass.Constraint_Exclusions getExclusions();

        /**
         * <code>.context.Constraint_Exclusions exclusions = 10;</code>
         */
        context.ContextOuterClass.Constraint_ExclusionsOrBuilder getExclusionsOrBuilder();

        /**
         * <code>.context.Constraint_QoSProfile qos_profile = 11;</code>
         * @return Whether the qosProfile field is set.
         */
        boolean hasQosProfile();

        /**
         * <code>.context.Constraint_QoSProfile qos_profile = 11;</code>
         * @return The qosProfile.
         */
        context.ContextOuterClass.Constraint_QoSProfile getQosProfile();

        /**
         * <code>.context.Constraint_QoSProfile qos_profile = 11;</code>
         */
        context.ContextOuterClass.Constraint_QoSProfileOrBuilder getQosProfileOrBuilder();

        context.ContextOuterClass.Constraint.ConstraintCase getConstraintCase();
    }

    /**
     * Protobuf type {@code context.Constraint}
     */
    public static final class Constraint extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.Constraint)
    ConstraintOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use Constraint.newBuilder() to construct.
        private Constraint(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private Constraint() {
            action_ = 0;
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new Constraint();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_Constraint_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_Constraint_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Constraint.class, context.ContextOuterClass.Constraint.Builder.class);
        }

        private int constraintCase_ = 0;

        @SuppressWarnings("serial")
        private java.lang.Object constraint_;

        public enum ConstraintCase implements com.google.protobuf.Internal.EnumLite, com.google.protobuf.AbstractMessage.InternalOneOfEnum {

            CUSTOM(2),
            SCHEDULE(3),
            ENDPOINT_LOCATION(4),
            ENDPOINT_PRIORITY(5),
            SLA_CAPACITY(6),
            SLA_LATENCY(7),
            SLA_AVAILABILITY(8),
            SLA_ISOLATION(9),
            EXCLUSIONS(10),
            QOS_PROFILE(11),
            CONSTRAINT_NOT_SET(0);

            private final int value;

            private ConstraintCase(int value) {
                this.value = value;
            }

            /**
             * @param value The number of the enum to look for.
             * @return The enum associated with the given number.
             * @deprecated Use {@link #forNumber(int)} instead.
             */
            @java.lang.Deprecated
            public static ConstraintCase valueOf(int value) {
                return forNumber(value);
            }

            public static ConstraintCase forNumber(int value) {
                switch(value) {
                    case 2:
                        return CUSTOM;
                    case 3:
                        return SCHEDULE;
                    case 4:
                        return ENDPOINT_LOCATION;
                    case 5:
                        return ENDPOINT_PRIORITY;
                    case 6:
                        return SLA_CAPACITY;
                    case 7:
                        return SLA_LATENCY;
                    case 8:
                        return SLA_AVAILABILITY;
                    case 9:
                        return SLA_ISOLATION;
                    case 10:
                        return EXCLUSIONS;
                    case 11:
                        return QOS_PROFILE;
                    case 0:
                        return CONSTRAINT_NOT_SET;
                    default:
                        return null;
                }
            }

            public int getNumber() {
                return this.value;
            }
        }

        public ConstraintCase getConstraintCase() {
            return ConstraintCase.forNumber(constraintCase_);
        }

        public static final int ACTION_FIELD_NUMBER = 1;

        private int action_ = 0;

        /**
         * <code>.context.ConstraintActionEnum action = 1;</code>
         * @return The enum numeric value on the wire for action.
         */
        @java.lang.Override
        public int getActionValue() {
            return action_;
        }

        /**
         * <code>.context.ConstraintActionEnum action = 1;</code>
         * @return The action.
         */
        @java.lang.Override
        public context.ContextOuterClass.ConstraintActionEnum getAction() {
            context.ContextOuterClass.ConstraintActionEnum result = context.ContextOuterClass.ConstraintActionEnum.forNumber(action_);
            return result == null ? context.ContextOuterClass.ConstraintActionEnum.UNRECOGNIZED : result;
        }

        public static final int CUSTOM_FIELD_NUMBER = 2;

        /**
         * <code>.context.Constraint_Custom custom = 2;</code>
         * @return Whether the custom field is set.
         */
        @java.lang.Override
        public boolean hasCustom() {
            return constraintCase_ == 2;
        }

        /**
         * <code>.context.Constraint_Custom custom = 2;</code>
         * @return The custom.
         */
        @java.lang.Override
        public context.ContextOuterClass.Constraint_Custom getCustom() {
            if (constraintCase_ == 2) {
                return (context.ContextOuterClass.Constraint_Custom) constraint_;
            }
            return context.ContextOuterClass.Constraint_Custom.getDefaultInstance();
        }

        /**
         * <code>.context.Constraint_Custom custom = 2;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.Constraint_CustomOrBuilder getCustomOrBuilder() {
            if (constraintCase_ == 2) {
                return (context.ContextOuterClass.Constraint_Custom) constraint_;
            }
            return context.ContextOuterClass.Constraint_Custom.getDefaultInstance();
        }

        public static final int SCHEDULE_FIELD_NUMBER = 3;

        /**
         * <code>.context.Constraint_Schedule schedule = 3;</code>
         * @return Whether the schedule field is set.
         */
        @java.lang.Override
        public boolean hasSchedule() {
            return constraintCase_ == 3;
        }

        /**
         * <code>.context.Constraint_Schedule schedule = 3;</code>
         * @return The schedule.
         */
        @java.lang.Override
        public context.ContextOuterClass.Constraint_Schedule getSchedule() {
            if (constraintCase_ == 3) {
                return (context.ContextOuterClass.Constraint_Schedule) constraint_;
            }
            return context.ContextOuterClass.Constraint_Schedule.getDefaultInstance();
        }

        /**
         * <code>.context.Constraint_Schedule schedule = 3;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.Constraint_ScheduleOrBuilder getScheduleOrBuilder() {
            if (constraintCase_ == 3) {
                return (context.ContextOuterClass.Constraint_Schedule) constraint_;
            }
            return context.ContextOuterClass.Constraint_Schedule.getDefaultInstance();
        }

        public static final int ENDPOINT_LOCATION_FIELD_NUMBER = 4;

        /**
         * <code>.context.Constraint_EndPointLocation endpoint_location = 4;</code>
         * @return Whether the endpointLocation field is set.
         */
        @java.lang.Override
        public boolean hasEndpointLocation() {
            return constraintCase_ == 4;
        }

        /**
         * <code>.context.Constraint_EndPointLocation endpoint_location = 4;</code>
         * @return The endpointLocation.
         */
        @java.lang.Override
        public context.ContextOuterClass.Constraint_EndPointLocation getEndpointLocation() {
            if (constraintCase_ == 4) {
                return (context.ContextOuterClass.Constraint_EndPointLocation) constraint_;
            }
            return context.ContextOuterClass.Constraint_EndPointLocation.getDefaultInstance();
        }

        /**
         * <code>.context.Constraint_EndPointLocation endpoint_location = 4;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.Constraint_EndPointLocationOrBuilder getEndpointLocationOrBuilder() {
            if (constraintCase_ == 4) {
                return (context.ContextOuterClass.Constraint_EndPointLocation) constraint_;
            }
            return context.ContextOuterClass.Constraint_EndPointLocation.getDefaultInstance();
        }

        public static final int ENDPOINT_PRIORITY_FIELD_NUMBER = 5;

        /**
         * <code>.context.Constraint_EndPointPriority endpoint_priority = 5;</code>
         * @return Whether the endpointPriority field is set.
         */
        @java.lang.Override
        public boolean hasEndpointPriority() {
            return constraintCase_ == 5;
        }

        /**
         * <code>.context.Constraint_EndPointPriority endpoint_priority = 5;</code>
         * @return The endpointPriority.
         */
        @java.lang.Override
        public context.ContextOuterClass.Constraint_EndPointPriority getEndpointPriority() {
            if (constraintCase_ == 5) {
                return (context.ContextOuterClass.Constraint_EndPointPriority) constraint_;
            }
            return context.ContextOuterClass.Constraint_EndPointPriority.getDefaultInstance();
        }

        /**
         * <code>.context.Constraint_EndPointPriority endpoint_priority = 5;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.Constraint_EndPointPriorityOrBuilder getEndpointPriorityOrBuilder() {
            if (constraintCase_ == 5) {
                return (context.ContextOuterClass.Constraint_EndPointPriority) constraint_;
            }
            return context.ContextOuterClass.Constraint_EndPointPriority.getDefaultInstance();
        }

        public static final int SLA_CAPACITY_FIELD_NUMBER = 6;

        /**
         * <code>.context.Constraint_SLA_Capacity sla_capacity = 6;</code>
         * @return Whether the slaCapacity field is set.
         */
        @java.lang.Override
        public boolean hasSlaCapacity() {
            return constraintCase_ == 6;
        }

        /**
         * <code>.context.Constraint_SLA_Capacity sla_capacity = 6;</code>
         * @return The slaCapacity.
         */
        @java.lang.Override
        public context.ContextOuterClass.Constraint_SLA_Capacity getSlaCapacity() {
            if (constraintCase_ == 6) {
                return (context.ContextOuterClass.Constraint_SLA_Capacity) constraint_;
            }
            return context.ContextOuterClass.Constraint_SLA_Capacity.getDefaultInstance();
        }

        /**
         * <code>.context.Constraint_SLA_Capacity sla_capacity = 6;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.Constraint_SLA_CapacityOrBuilder getSlaCapacityOrBuilder() {
            if (constraintCase_ == 6) {
                return (context.ContextOuterClass.Constraint_SLA_Capacity) constraint_;
            }
            return context.ContextOuterClass.Constraint_SLA_Capacity.getDefaultInstance();
        }

        public static final int SLA_LATENCY_FIELD_NUMBER = 7;

        /**
         * <code>.context.Constraint_SLA_Latency sla_latency = 7;</code>
         * @return Whether the slaLatency field is set.
         */
        @java.lang.Override
        public boolean hasSlaLatency() {
            return constraintCase_ == 7;
        }

        /**
         * <code>.context.Constraint_SLA_Latency sla_latency = 7;</code>
         * @return The slaLatency.
         */
        @java.lang.Override
        public context.ContextOuterClass.Constraint_SLA_Latency getSlaLatency() {
            if (constraintCase_ == 7) {
                return (context.ContextOuterClass.Constraint_SLA_Latency) constraint_;
            }
            return context.ContextOuterClass.Constraint_SLA_Latency.getDefaultInstance();
        }

        /**
         * <code>.context.Constraint_SLA_Latency sla_latency = 7;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.Constraint_SLA_LatencyOrBuilder getSlaLatencyOrBuilder() {
            if (constraintCase_ == 7) {
                return (context.ContextOuterClass.Constraint_SLA_Latency) constraint_;
            }
            return context.ContextOuterClass.Constraint_SLA_Latency.getDefaultInstance();
        }

        public static final int SLA_AVAILABILITY_FIELD_NUMBER = 8;

        /**
         * <code>.context.Constraint_SLA_Availability sla_availability = 8;</code>
         * @return Whether the slaAvailability field is set.
         */
        @java.lang.Override
        public boolean hasSlaAvailability() {
            return constraintCase_ == 8;
        }

        /**
         * <code>.context.Constraint_SLA_Availability sla_availability = 8;</code>
         * @return The slaAvailability.
         */
        @java.lang.Override
        public context.ContextOuterClass.Constraint_SLA_Availability getSlaAvailability() {
            if (constraintCase_ == 8) {
                return (context.ContextOuterClass.Constraint_SLA_Availability) constraint_;
            }
            return context.ContextOuterClass.Constraint_SLA_Availability.getDefaultInstance();
        }

        /**
         * <code>.context.Constraint_SLA_Availability sla_availability = 8;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.Constraint_SLA_AvailabilityOrBuilder getSlaAvailabilityOrBuilder() {
            if (constraintCase_ == 8) {
                return (context.ContextOuterClass.Constraint_SLA_Availability) constraint_;
            }
            return context.ContextOuterClass.Constraint_SLA_Availability.getDefaultInstance();
        }

        public static final int SLA_ISOLATION_FIELD_NUMBER = 9;

        /**
         * <code>.context.Constraint_SLA_Isolation_level sla_isolation = 9;</code>
         * @return Whether the slaIsolation field is set.
         */
        @java.lang.Override
        public boolean hasSlaIsolation() {
            return constraintCase_ == 9;
        }

        /**
         * <code>.context.Constraint_SLA_Isolation_level sla_isolation = 9;</code>
         * @return The slaIsolation.
         */
        @java.lang.Override
        public context.ContextOuterClass.Constraint_SLA_Isolation_level getSlaIsolation() {
            if (constraintCase_ == 9) {
                return (context.ContextOuterClass.Constraint_SLA_Isolation_level) constraint_;
            }
            return context.ContextOuterClass.Constraint_SLA_Isolation_level.getDefaultInstance();
        }

        /**
         * <code>.context.Constraint_SLA_Isolation_level sla_isolation = 9;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.Constraint_SLA_Isolation_levelOrBuilder getSlaIsolationOrBuilder() {
            if (constraintCase_ == 9) {
                return (context.ContextOuterClass.Constraint_SLA_Isolation_level) constraint_;
            }
            return context.ContextOuterClass.Constraint_SLA_Isolation_level.getDefaultInstance();
        }

        public static final int EXCLUSIONS_FIELD_NUMBER = 10;

        /**
         * <code>.context.Constraint_Exclusions exclusions = 10;</code>
         * @return Whether the exclusions field is set.
         */
        @java.lang.Override
        public boolean hasExclusions() {
            return constraintCase_ == 10;
        }

        /**
         * <code>.context.Constraint_Exclusions exclusions = 10;</code>
         * @return The exclusions.
         */
        @java.lang.Override
        public context.ContextOuterClass.Constraint_Exclusions getExclusions() {
            if (constraintCase_ == 10) {
                return (context.ContextOuterClass.Constraint_Exclusions) constraint_;
            }
            return context.ContextOuterClass.Constraint_Exclusions.getDefaultInstance();
        }

        /**
         * <code>.context.Constraint_Exclusions exclusions = 10;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.Constraint_ExclusionsOrBuilder getExclusionsOrBuilder() {
            if (constraintCase_ == 10) {
                return (context.ContextOuterClass.Constraint_Exclusions) constraint_;
            }
            return context.ContextOuterClass.Constraint_Exclusions.getDefaultInstance();
        }

        public static final int QOS_PROFILE_FIELD_NUMBER = 11;

        /**
         * <code>.context.Constraint_QoSProfile qos_profile = 11;</code>
         * @return Whether the qosProfile field is set.
         */
        @java.lang.Override
        public boolean hasQosProfile() {
            return constraintCase_ == 11;
        }

        /**
         * <code>.context.Constraint_QoSProfile qos_profile = 11;</code>
         * @return The qosProfile.
         */
        @java.lang.Override
        public context.ContextOuterClass.Constraint_QoSProfile getQosProfile() {
            if (constraintCase_ == 11) {
                return (context.ContextOuterClass.Constraint_QoSProfile) constraint_;
            }
            return context.ContextOuterClass.Constraint_QoSProfile.getDefaultInstance();
        }

        /**
         * <code>.context.Constraint_QoSProfile qos_profile = 11;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.Constraint_QoSProfileOrBuilder getQosProfileOrBuilder() {
            if (constraintCase_ == 11) {
                return (context.ContextOuterClass.Constraint_QoSProfile) constraint_;
            }
            return context.ContextOuterClass.Constraint_QoSProfile.getDefaultInstance();
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            if (action_ != context.ContextOuterClass.ConstraintActionEnum.CONSTRAINTACTION_UNDEFINED.getNumber()) {
                output.writeEnum(1, action_);
            }
            if (constraintCase_ == 2) {
                output.writeMessage(2, (context.ContextOuterClass.Constraint_Custom) constraint_);
            }
            if (constraintCase_ == 3) {
                output.writeMessage(3, (context.ContextOuterClass.Constraint_Schedule) constraint_);
            }
            if (constraintCase_ == 4) {
                output.writeMessage(4, (context.ContextOuterClass.Constraint_EndPointLocation) constraint_);
            }
            if (constraintCase_ == 5) {
                output.writeMessage(5, (context.ContextOuterClass.Constraint_EndPointPriority) constraint_);
            }
            if (constraintCase_ == 6) {
                output.writeMessage(6, (context.ContextOuterClass.Constraint_SLA_Capacity) constraint_);
            }
            if (constraintCase_ == 7) {
                output.writeMessage(7, (context.ContextOuterClass.Constraint_SLA_Latency) constraint_);
            }
            if (constraintCase_ == 8) {
                output.writeMessage(8, (context.ContextOuterClass.Constraint_SLA_Availability) constraint_);
            }
            if (constraintCase_ == 9) {
                output.writeMessage(9, (context.ContextOuterClass.Constraint_SLA_Isolation_level) constraint_);
            }
            if (constraintCase_ == 10) {
                output.writeMessage(10, (context.ContextOuterClass.Constraint_Exclusions) constraint_);
            }
            if (constraintCase_ == 11) {
                output.writeMessage(11, (context.ContextOuterClass.Constraint_QoSProfile) constraint_);
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            if (action_ != context.ContextOuterClass.ConstraintActionEnum.CONSTRAINTACTION_UNDEFINED.getNumber()) {
                size += com.google.protobuf.CodedOutputStream.computeEnumSize(1, action_);
            }
            if (constraintCase_ == 2) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, (context.ContextOuterClass.Constraint_Custom) constraint_);
            }
            if (constraintCase_ == 3) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, (context.ContextOuterClass.Constraint_Schedule) constraint_);
            }
            if (constraintCase_ == 4) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, (context.ContextOuterClass.Constraint_EndPointLocation) constraint_);
            }
            if (constraintCase_ == 5) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(5, (context.ContextOuterClass.Constraint_EndPointPriority) constraint_);
            }
            if (constraintCase_ == 6) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(6, (context.ContextOuterClass.Constraint_SLA_Capacity) constraint_);
            }
            if (constraintCase_ == 7) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(7, (context.ContextOuterClass.Constraint_SLA_Latency) constraint_);
            }
            if (constraintCase_ == 8) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(8, (context.ContextOuterClass.Constraint_SLA_Availability) constraint_);
            }
            if (constraintCase_ == 9) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(9, (context.ContextOuterClass.Constraint_SLA_Isolation_level) constraint_);
            }
            if (constraintCase_ == 10) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(10, (context.ContextOuterClass.Constraint_Exclusions) constraint_);
            }
            if (constraintCase_ == 11) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(11, (context.ContextOuterClass.Constraint_QoSProfile) constraint_);
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.Constraint)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.Constraint other = (context.ContextOuterClass.Constraint) obj;
            if (action_ != other.action_)
                return false;
            if (!getConstraintCase().equals(other.getConstraintCase()))
                return false;
            switch(constraintCase_) {
                case 2:
                    if (!getCustom().equals(other.getCustom()))
                        return false;
                    break;
                case 3:
                    if (!getSchedule().equals(other.getSchedule()))
                        return false;
                    break;
                case 4:
                    if (!getEndpointLocation().equals(other.getEndpointLocation()))
                        return false;
                    break;
                case 5:
                    if (!getEndpointPriority().equals(other.getEndpointPriority()))
                        return false;
                    break;
                case 6:
                    if (!getSlaCapacity().equals(other.getSlaCapacity()))
                        return false;
                    break;
                case 7:
                    if (!getSlaLatency().equals(other.getSlaLatency()))
                        return false;
                    break;
                case 8:
                    if (!getSlaAvailability().equals(other.getSlaAvailability()))
                        return false;
                    break;
                case 9:
                    if (!getSlaIsolation().equals(other.getSlaIsolation()))
                        return false;
                    break;
                case 10:
                    if (!getExclusions().equals(other.getExclusions()))
                        return false;
                    break;
                case 11:
                    if (!getQosProfile().equals(other.getQosProfile()))
                        return false;
                    break;
                case 0:
                default:
            }
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            hash = (37 * hash) + ACTION_FIELD_NUMBER;
            hash = (53 * hash) + action_;
            switch(constraintCase_) {
                case 2:
                    hash = (37 * hash) + CUSTOM_FIELD_NUMBER;
                    hash = (53 * hash) + getCustom().hashCode();
                    break;
                case 3:
                    hash = (37 * hash) + SCHEDULE_FIELD_NUMBER;
                    hash = (53 * hash) + getSchedule().hashCode();
                    break;
                case 4:
                    hash = (37 * hash) + ENDPOINT_LOCATION_FIELD_NUMBER;
                    hash = (53 * hash) + getEndpointLocation().hashCode();
                    break;
                case 5:
                    hash = (37 * hash) + ENDPOINT_PRIORITY_FIELD_NUMBER;
                    hash = (53 * hash) + getEndpointPriority().hashCode();
                    break;
                case 6:
                    hash = (37 * hash) + SLA_CAPACITY_FIELD_NUMBER;
                    hash = (53 * hash) + getSlaCapacity().hashCode();
                    break;
                case 7:
                    hash = (37 * hash) + SLA_LATENCY_FIELD_NUMBER;
                    hash = (53 * hash) + getSlaLatency().hashCode();
                    break;
                case 8:
                    hash = (37 * hash) + SLA_AVAILABILITY_FIELD_NUMBER;
                    hash = (53 * hash) + getSlaAvailability().hashCode();
                    break;
                case 9:
                    hash = (37 * hash) + SLA_ISOLATION_FIELD_NUMBER;
                    hash = (53 * hash) + getSlaIsolation().hashCode();
                    break;
                case 10:
                    hash = (37 * hash) + EXCLUSIONS_FIELD_NUMBER;
                    hash = (53 * hash) + getExclusions().hashCode();
                    break;
                case 11:
                    hash = (37 * hash) + QOS_PROFILE_FIELD_NUMBER;
                    hash = (53 * hash) + getQosProfile().hashCode();
                    break;
                case 0:
                default:
            }
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.Constraint parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.Constraint parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.Constraint parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.Constraint parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.Constraint parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.Constraint parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.Constraint parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.Constraint parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.Constraint parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.Constraint parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.Constraint parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.Constraint parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.Constraint prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code context.Constraint}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.Constraint)
        context.ContextOuterClass.ConstraintOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_Constraint_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_Constraint_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.Constraint.class, context.ContextOuterClass.Constraint.Builder.class);
            }

            // Construct using context.ContextOuterClass.Constraint.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                action_ = 0;
                if (customBuilder_ != null) {
                    customBuilder_.clear();
                }
                if (scheduleBuilder_ != null) {
                    scheduleBuilder_.clear();
                }
                if (endpointLocationBuilder_ != null) {
                    endpointLocationBuilder_.clear();
                }
                if (endpointPriorityBuilder_ != null) {
                    endpointPriorityBuilder_.clear();
                }
                if (slaCapacityBuilder_ != null) {
                    slaCapacityBuilder_.clear();
                }
                if (slaLatencyBuilder_ != null) {
                    slaLatencyBuilder_.clear();
                }
                if (slaAvailabilityBuilder_ != null) {
                    slaAvailabilityBuilder_.clear();
                }
                if (slaIsolationBuilder_ != null) {
                    slaIsolationBuilder_.clear();
                }
                if (exclusionsBuilder_ != null) {
                    exclusionsBuilder_.clear();
                }
                if (qosProfileBuilder_ != null) {
                    qosProfileBuilder_.clear();
                }
                constraintCase_ = 0;
                constraint_ = null;
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_Constraint_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.Constraint getDefaultInstanceForType() {
                return context.ContextOuterClass.Constraint.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.Constraint build() {
                context.ContextOuterClass.Constraint result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.Constraint buildPartial() {
                context.ContextOuterClass.Constraint result = new context.ContextOuterClass.Constraint(this);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                buildPartialOneofs(result);
                onBuilt();
                return result;
            }

            private void buildPartial0(context.ContextOuterClass.Constraint result) {
                int from_bitField0_ = bitField0_;
                if (((from_bitField0_ & 0x00000001) != 0)) {
                    result.action_ = action_;
                }
            }

            private void buildPartialOneofs(context.ContextOuterClass.Constraint result) {
                result.constraintCase_ = constraintCase_;
                result.constraint_ = this.constraint_;
                if (constraintCase_ == 2 && customBuilder_ != null) {
                    result.constraint_ = customBuilder_.build();
                }
                if (constraintCase_ == 3 && scheduleBuilder_ != null) {
                    result.constraint_ = scheduleBuilder_.build();
                }
                if (constraintCase_ == 4 && endpointLocationBuilder_ != null) {
                    result.constraint_ = endpointLocationBuilder_.build();
                }
                if (constraintCase_ == 5 && endpointPriorityBuilder_ != null) {
                    result.constraint_ = endpointPriorityBuilder_.build();
                }
                if (constraintCase_ == 6 && slaCapacityBuilder_ != null) {
                    result.constraint_ = slaCapacityBuilder_.build();
                }
                if (constraintCase_ == 7 && slaLatencyBuilder_ != null) {
                    result.constraint_ = slaLatencyBuilder_.build();
                }
                if (constraintCase_ == 8 && slaAvailabilityBuilder_ != null) {
                    result.constraint_ = slaAvailabilityBuilder_.build();
                }
                if (constraintCase_ == 9 && slaIsolationBuilder_ != null) {
                    result.constraint_ = slaIsolationBuilder_.build();
                }
                if (constraintCase_ == 10 && exclusionsBuilder_ != null) {
                    result.constraint_ = exclusionsBuilder_.build();
                }
                if (constraintCase_ == 11 && qosProfileBuilder_ != null) {
                    result.constraint_ = qosProfileBuilder_.build();
                }
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.Constraint) {
                    return mergeFrom((context.ContextOuterClass.Constraint) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.Constraint other) {
                if (other == context.ContextOuterClass.Constraint.getDefaultInstance())
                    return this;
                if (other.action_ != 0) {
                    setActionValue(other.getActionValue());
                }
                switch(other.getConstraintCase()) {
                    case CUSTOM:
                        {
                            mergeCustom(other.getCustom());
                            break;
                        }
                    case SCHEDULE:
                        {
                            mergeSchedule(other.getSchedule());
                            break;
                        }
                    case ENDPOINT_LOCATION:
                        {
                            mergeEndpointLocation(other.getEndpointLocation());
                            break;
                        }
                    case ENDPOINT_PRIORITY:
                        {
                            mergeEndpointPriority(other.getEndpointPriority());
                            break;
                        }
                    case SLA_CAPACITY:
                        {
                            mergeSlaCapacity(other.getSlaCapacity());
                            break;
                        }
                    case SLA_LATENCY:
                        {
                            mergeSlaLatency(other.getSlaLatency());
                            break;
                        }
                    case SLA_AVAILABILITY:
                        {
                            mergeSlaAvailability(other.getSlaAvailability());
                            break;
                        }
                    case SLA_ISOLATION:
                        {
                            mergeSlaIsolation(other.getSlaIsolation());
                            break;
                        }
                    case EXCLUSIONS:
                        {
                            mergeExclusions(other.getExclusions());
                            break;
                        }
                    case QOS_PROFILE:
                        {
                            mergeQosProfile(other.getQosProfile());
                            break;
                        }
                    case CONSTRAINT_NOT_SET:
                        {
                            break;
                        }
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 8:
                                {
                                    action_ = input.readEnum();
                                    bitField0_ |= 0x00000001;
                                    break;
                                }
                            // case 8
                            case 18:
                                {
                                    input.readMessage(getCustomFieldBuilder().getBuilder(), extensionRegistry);
                                    constraintCase_ = 2;
                                    break;
                                }
                            // case 18
                            case 26:
                                {
                                    input.readMessage(getScheduleFieldBuilder().getBuilder(), extensionRegistry);
                                    constraintCase_ = 3;
                                    break;
                                }
                            // case 26
                            case 34:
                                {
                                    input.readMessage(getEndpointLocationFieldBuilder().getBuilder(), extensionRegistry);
                                    constraintCase_ = 4;
                                    break;
                                }
                            // case 34
                            case 42:
                                {
                                    input.readMessage(getEndpointPriorityFieldBuilder().getBuilder(), extensionRegistry);
                                    constraintCase_ = 5;
                                    break;
                                }
                            // case 42
                            case 50:
                                {
                                    input.readMessage(getSlaCapacityFieldBuilder().getBuilder(), extensionRegistry);
                                    constraintCase_ = 6;
                                    break;
                                }
                            // case 50
                            case 58:
                                {
                                    input.readMessage(getSlaLatencyFieldBuilder().getBuilder(), extensionRegistry);
                                    constraintCase_ = 7;
                                    break;
                                }
                            // case 58
                            case 66:
                                {
                                    input.readMessage(getSlaAvailabilityFieldBuilder().getBuilder(), extensionRegistry);
                                    constraintCase_ = 8;
                                    break;
                                }
                            // case 66
                            case 74:
                                {
                                    input.readMessage(getSlaIsolationFieldBuilder().getBuilder(), extensionRegistry);
                                    constraintCase_ = 9;
                                    break;
                                }
                            // case 74
                            case 82:
                                {
                                    input.readMessage(getExclusionsFieldBuilder().getBuilder(), extensionRegistry);
                                    constraintCase_ = 10;
                                    break;
                                }
                            // case 82
                            case 90:
                                {
                                    input.readMessage(getQosProfileFieldBuilder().getBuilder(), extensionRegistry);
                                    constraintCase_ = 11;
                                    break;
                                }
                            // case 90
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int constraintCase_ = 0;

            private java.lang.Object constraint_;

            public ConstraintCase getConstraintCase() {
                return ConstraintCase.forNumber(constraintCase_);
            }

            public Builder clearConstraint() {
                constraintCase_ = 0;
                constraint_ = null;
                onChanged();
                return this;
            }

            private int bitField0_;

            private int action_ = 0;

            /**
             * <code>.context.ConstraintActionEnum action = 1;</code>
             * @return The enum numeric value on the wire for action.
             */
            @java.lang.Override
            public int getActionValue() {
                return action_;
            }

            /**
             * <code>.context.ConstraintActionEnum action = 1;</code>
             * @param value The enum numeric value on the wire for action to set.
             * @return This builder for chaining.
             */
            public Builder setActionValue(int value) {
                action_ = value;
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.ConstraintActionEnum action = 1;</code>
             * @return The action.
             */
            @java.lang.Override
            public context.ContextOuterClass.ConstraintActionEnum getAction() {
                context.ContextOuterClass.ConstraintActionEnum result = context.ContextOuterClass.ConstraintActionEnum.forNumber(action_);
                return result == null ? context.ContextOuterClass.ConstraintActionEnum.UNRECOGNIZED : result;
            }

            /**
             * <code>.context.ConstraintActionEnum action = 1;</code>
             * @param value The action to set.
             * @return This builder for chaining.
             */
            public Builder setAction(context.ContextOuterClass.ConstraintActionEnum value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                bitField0_ |= 0x00000001;
                action_ = value.getNumber();
                onChanged();
                return this;
            }

            /**
             * <code>.context.ConstraintActionEnum action = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearAction() {
                bitField0_ = (bitField0_ & ~0x00000001);
                action_ = 0;
                onChanged();
                return this;
            }

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Constraint_Custom, context.ContextOuterClass.Constraint_Custom.Builder, context.ContextOuterClass.Constraint_CustomOrBuilder> customBuilder_;

            /**
             * <code>.context.Constraint_Custom custom = 2;</code>
             * @return Whether the custom field is set.
             */
            @java.lang.Override
            public boolean hasCustom() {
                return constraintCase_ == 2;
            }

            /**
             * <code>.context.Constraint_Custom custom = 2;</code>
             * @return The custom.
             */
            @java.lang.Override
            public context.ContextOuterClass.Constraint_Custom getCustom() {
                if (customBuilder_ == null) {
                    if (constraintCase_ == 2) {
                        return (context.ContextOuterClass.Constraint_Custom) constraint_;
                    }
                    return context.ContextOuterClass.Constraint_Custom.getDefaultInstance();
                } else {
                    if (constraintCase_ == 2) {
                        return customBuilder_.getMessage();
                    }
                    return context.ContextOuterClass.Constraint_Custom.getDefaultInstance();
                }
            }

            /**
             * <code>.context.Constraint_Custom custom = 2;</code>
             */
            public Builder setCustom(context.ContextOuterClass.Constraint_Custom value) {
                if (customBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    constraint_ = value;
                    onChanged();
                } else {
                    customBuilder_.setMessage(value);
                }
                constraintCase_ = 2;
                return this;
            }

            /**
             * <code>.context.Constraint_Custom custom = 2;</code>
             */
            public Builder setCustom(context.ContextOuterClass.Constraint_Custom.Builder builderForValue) {
                if (customBuilder_ == null) {
                    constraint_ = builderForValue.build();
                    onChanged();
                } else {
                    customBuilder_.setMessage(builderForValue.build());
                }
                constraintCase_ = 2;
                return this;
            }

            /**
             * <code>.context.Constraint_Custom custom = 2;</code>
             */
            public Builder mergeCustom(context.ContextOuterClass.Constraint_Custom value) {
                if (customBuilder_ == null) {
                    if (constraintCase_ == 2 && constraint_ != context.ContextOuterClass.Constraint_Custom.getDefaultInstance()) {
                        constraint_ = context.ContextOuterClass.Constraint_Custom.newBuilder((context.ContextOuterClass.Constraint_Custom) constraint_).mergeFrom(value).buildPartial();
                    } else {
                        constraint_ = value;
                    }
                    onChanged();
                } else {
                    if (constraintCase_ == 2) {
                        customBuilder_.mergeFrom(value);
                    } else {
                        customBuilder_.setMessage(value);
                    }
                }
                constraintCase_ = 2;
                return this;
            }

            /**
             * <code>.context.Constraint_Custom custom = 2;</code>
             */
            public Builder clearCustom() {
                if (customBuilder_ == null) {
                    if (constraintCase_ == 2) {
                        constraintCase_ = 0;
                        constraint_ = null;
                        onChanged();
                    }
                } else {
                    if (constraintCase_ == 2) {
                        constraintCase_ = 0;
                        constraint_ = null;
                    }
                    customBuilder_.clear();
                }
                return this;
            }

            /**
             * <code>.context.Constraint_Custom custom = 2;</code>
             */
            public context.ContextOuterClass.Constraint_Custom.Builder getCustomBuilder() {
                return getCustomFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.Constraint_Custom custom = 2;</code>
             */
            @java.lang.Override
            public context.ContextOuterClass.Constraint_CustomOrBuilder getCustomOrBuilder() {
                if ((constraintCase_ == 2) && (customBuilder_ != null)) {
                    return customBuilder_.getMessageOrBuilder();
                } else {
                    if (constraintCase_ == 2) {
                        return (context.ContextOuterClass.Constraint_Custom) constraint_;
                    }
                    return context.ContextOuterClass.Constraint_Custom.getDefaultInstance();
                }
            }

            /**
             * <code>.context.Constraint_Custom custom = 2;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Constraint_Custom, context.ContextOuterClass.Constraint_Custom.Builder, context.ContextOuterClass.Constraint_CustomOrBuilder> getCustomFieldBuilder() {
                if (customBuilder_ == null) {
                    if (!(constraintCase_ == 2)) {
                        constraint_ = context.ContextOuterClass.Constraint_Custom.getDefaultInstance();
                    }
                    customBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Constraint_Custom, context.ContextOuterClass.Constraint_Custom.Builder, context.ContextOuterClass.Constraint_CustomOrBuilder>((context.ContextOuterClass.Constraint_Custom) constraint_, getParentForChildren(), isClean());
                    constraint_ = null;
                }
                constraintCase_ = 2;
                onChanged();
                return customBuilder_;
            }

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Constraint_Schedule, context.ContextOuterClass.Constraint_Schedule.Builder, context.ContextOuterClass.Constraint_ScheduleOrBuilder> scheduleBuilder_;

            /**
             * <code>.context.Constraint_Schedule schedule = 3;</code>
             * @return Whether the schedule field is set.
             */
            @java.lang.Override
            public boolean hasSchedule() {
                return constraintCase_ == 3;
            }

            /**
             * <code>.context.Constraint_Schedule schedule = 3;</code>
             * @return The schedule.
             */
            @java.lang.Override
            public context.ContextOuterClass.Constraint_Schedule getSchedule() {
                if (scheduleBuilder_ == null) {
                    if (constraintCase_ == 3) {
                        return (context.ContextOuterClass.Constraint_Schedule) constraint_;
                    }
                    return context.ContextOuterClass.Constraint_Schedule.getDefaultInstance();
                } else {
                    if (constraintCase_ == 3) {
                        return scheduleBuilder_.getMessage();
                    }
                    return context.ContextOuterClass.Constraint_Schedule.getDefaultInstance();
                }
            }

            /**
             * <code>.context.Constraint_Schedule schedule = 3;</code>
             */
            public Builder setSchedule(context.ContextOuterClass.Constraint_Schedule value) {
                if (scheduleBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    constraint_ = value;
                    onChanged();
                } else {
                    scheduleBuilder_.setMessage(value);
                }
                constraintCase_ = 3;
                return this;
            }

            /**
             * <code>.context.Constraint_Schedule schedule = 3;</code>
             */
            public Builder setSchedule(context.ContextOuterClass.Constraint_Schedule.Builder builderForValue) {
                if (scheduleBuilder_ == null) {
                    constraint_ = builderForValue.build();
                    onChanged();
                } else {
                    scheduleBuilder_.setMessage(builderForValue.build());
                }
                constraintCase_ = 3;
                return this;
            }

            /**
             * <code>.context.Constraint_Schedule schedule = 3;</code>
             */
            public Builder mergeSchedule(context.ContextOuterClass.Constraint_Schedule value) {
                if (scheduleBuilder_ == null) {
                    if (constraintCase_ == 3 && constraint_ != context.ContextOuterClass.Constraint_Schedule.getDefaultInstance()) {
                        constraint_ = context.ContextOuterClass.Constraint_Schedule.newBuilder((context.ContextOuterClass.Constraint_Schedule) constraint_).mergeFrom(value).buildPartial();
                    } else {
                        constraint_ = value;
                    }
                    onChanged();
                } else {
                    if (constraintCase_ == 3) {
                        scheduleBuilder_.mergeFrom(value);
                    } else {
                        scheduleBuilder_.setMessage(value);
                    }
                }
                constraintCase_ = 3;
                return this;
            }

            /**
             * <code>.context.Constraint_Schedule schedule = 3;</code>
             */
            public Builder clearSchedule() {
                if (scheduleBuilder_ == null) {
                    if (constraintCase_ == 3) {
                        constraintCase_ = 0;
                        constraint_ = null;
                        onChanged();
                    }
                } else {
                    if (constraintCase_ == 3) {
                        constraintCase_ = 0;
                        constraint_ = null;
                    }
                    scheduleBuilder_.clear();
                }
                return this;
            }

            /**
             * <code>.context.Constraint_Schedule schedule = 3;</code>
             */
            public context.ContextOuterClass.Constraint_Schedule.Builder getScheduleBuilder() {
                return getScheduleFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.Constraint_Schedule schedule = 3;</code>
             */
            @java.lang.Override
            public context.ContextOuterClass.Constraint_ScheduleOrBuilder getScheduleOrBuilder() {
                if ((constraintCase_ == 3) && (scheduleBuilder_ != null)) {
                    return scheduleBuilder_.getMessageOrBuilder();
                } else {
                    if (constraintCase_ == 3) {
                        return (context.ContextOuterClass.Constraint_Schedule) constraint_;
                    }
                    return context.ContextOuterClass.Constraint_Schedule.getDefaultInstance();
                }
            }

            /**
             * <code>.context.Constraint_Schedule schedule = 3;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Constraint_Schedule, context.ContextOuterClass.Constraint_Schedule.Builder, context.ContextOuterClass.Constraint_ScheduleOrBuilder> getScheduleFieldBuilder() {
                if (scheduleBuilder_ == null) {
                    if (!(constraintCase_ == 3)) {
                        constraint_ = context.ContextOuterClass.Constraint_Schedule.getDefaultInstance();
                    }
                    scheduleBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Constraint_Schedule, context.ContextOuterClass.Constraint_Schedule.Builder, context.ContextOuterClass.Constraint_ScheduleOrBuilder>((context.ContextOuterClass.Constraint_Schedule) constraint_, getParentForChildren(), isClean());
                    constraint_ = null;
                }
                constraintCase_ = 3;
                onChanged();
                return scheduleBuilder_;
            }

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Constraint_EndPointLocation, context.ContextOuterClass.Constraint_EndPointLocation.Builder, context.ContextOuterClass.Constraint_EndPointLocationOrBuilder> endpointLocationBuilder_;

            /**
             * <code>.context.Constraint_EndPointLocation endpoint_location = 4;</code>
             * @return Whether the endpointLocation field is set.
             */
            @java.lang.Override
            public boolean hasEndpointLocation() {
                return constraintCase_ == 4;
            }

            /**
             * <code>.context.Constraint_EndPointLocation endpoint_location = 4;</code>
             * @return The endpointLocation.
             */
            @java.lang.Override
            public context.ContextOuterClass.Constraint_EndPointLocation getEndpointLocation() {
                if (endpointLocationBuilder_ == null) {
                    if (constraintCase_ == 4) {
                        return (context.ContextOuterClass.Constraint_EndPointLocation) constraint_;
                    }
                    return context.ContextOuterClass.Constraint_EndPointLocation.getDefaultInstance();
                } else {
                    if (constraintCase_ == 4) {
                        return endpointLocationBuilder_.getMessage();
                    }
                    return context.ContextOuterClass.Constraint_EndPointLocation.getDefaultInstance();
                }
            }

            /**
             * <code>.context.Constraint_EndPointLocation endpoint_location = 4;</code>
             */
            public Builder setEndpointLocation(context.ContextOuterClass.Constraint_EndPointLocation value) {
                if (endpointLocationBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    constraint_ = value;
                    onChanged();
                } else {
                    endpointLocationBuilder_.setMessage(value);
                }
                constraintCase_ = 4;
                return this;
            }

            /**
             * <code>.context.Constraint_EndPointLocation endpoint_location = 4;</code>
             */
            public Builder setEndpointLocation(context.ContextOuterClass.Constraint_EndPointLocation.Builder builderForValue) {
                if (endpointLocationBuilder_ == null) {
                    constraint_ = builderForValue.build();
                    onChanged();
                } else {
                    endpointLocationBuilder_.setMessage(builderForValue.build());
                }
                constraintCase_ = 4;
                return this;
            }

            /**
             * <code>.context.Constraint_EndPointLocation endpoint_location = 4;</code>
             */
            public Builder mergeEndpointLocation(context.ContextOuterClass.Constraint_EndPointLocation value) {
                if (endpointLocationBuilder_ == null) {
                    if (constraintCase_ == 4 && constraint_ != context.ContextOuterClass.Constraint_EndPointLocation.getDefaultInstance()) {
                        constraint_ = context.ContextOuterClass.Constraint_EndPointLocation.newBuilder((context.ContextOuterClass.Constraint_EndPointLocation) constraint_).mergeFrom(value).buildPartial();
                    } else {
                        constraint_ = value;
                    }
                    onChanged();
                } else {
                    if (constraintCase_ == 4) {
                        endpointLocationBuilder_.mergeFrom(value);
                    } else {
                        endpointLocationBuilder_.setMessage(value);
                    }
                }
                constraintCase_ = 4;
                return this;
            }

            /**
             * <code>.context.Constraint_EndPointLocation endpoint_location = 4;</code>
             */
            public Builder clearEndpointLocation() {
                if (endpointLocationBuilder_ == null) {
                    if (constraintCase_ == 4) {
                        constraintCase_ = 0;
                        constraint_ = null;
                        onChanged();
                    }
                } else {
                    if (constraintCase_ == 4) {
                        constraintCase_ = 0;
                        constraint_ = null;
                    }
                    endpointLocationBuilder_.clear();
                }
                return this;
            }

            /**
             * <code>.context.Constraint_EndPointLocation endpoint_location = 4;</code>
             */
            public context.ContextOuterClass.Constraint_EndPointLocation.Builder getEndpointLocationBuilder() {
                return getEndpointLocationFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.Constraint_EndPointLocation endpoint_location = 4;</code>
             */
            @java.lang.Override
            public context.ContextOuterClass.Constraint_EndPointLocationOrBuilder getEndpointLocationOrBuilder() {
                if ((constraintCase_ == 4) && (endpointLocationBuilder_ != null)) {
                    return endpointLocationBuilder_.getMessageOrBuilder();
                } else {
                    if (constraintCase_ == 4) {
                        return (context.ContextOuterClass.Constraint_EndPointLocation) constraint_;
                    }
                    return context.ContextOuterClass.Constraint_EndPointLocation.getDefaultInstance();
                }
            }

            /**
             * <code>.context.Constraint_EndPointLocation endpoint_location = 4;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Constraint_EndPointLocation, context.ContextOuterClass.Constraint_EndPointLocation.Builder, context.ContextOuterClass.Constraint_EndPointLocationOrBuilder> getEndpointLocationFieldBuilder() {
                if (endpointLocationBuilder_ == null) {
                    if (!(constraintCase_ == 4)) {
                        constraint_ = context.ContextOuterClass.Constraint_EndPointLocation.getDefaultInstance();
                    }
                    endpointLocationBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Constraint_EndPointLocation, context.ContextOuterClass.Constraint_EndPointLocation.Builder, context.ContextOuterClass.Constraint_EndPointLocationOrBuilder>((context.ContextOuterClass.Constraint_EndPointLocation) constraint_, getParentForChildren(), isClean());
                    constraint_ = null;
                }
                constraintCase_ = 4;
                onChanged();
                return endpointLocationBuilder_;
            }

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Constraint_EndPointPriority, context.ContextOuterClass.Constraint_EndPointPriority.Builder, context.ContextOuterClass.Constraint_EndPointPriorityOrBuilder> endpointPriorityBuilder_;

            /**
             * <code>.context.Constraint_EndPointPriority endpoint_priority = 5;</code>
             * @return Whether the endpointPriority field is set.
             */
            @java.lang.Override
            public boolean hasEndpointPriority() {
                return constraintCase_ == 5;
            }

            /**
             * <code>.context.Constraint_EndPointPriority endpoint_priority = 5;</code>
             * @return The endpointPriority.
             */
            @java.lang.Override
            public context.ContextOuterClass.Constraint_EndPointPriority getEndpointPriority() {
                if (endpointPriorityBuilder_ == null) {
                    if (constraintCase_ == 5) {
                        return (context.ContextOuterClass.Constraint_EndPointPriority) constraint_;
                    }
                    return context.ContextOuterClass.Constraint_EndPointPriority.getDefaultInstance();
                } else {
                    if (constraintCase_ == 5) {
                        return endpointPriorityBuilder_.getMessage();
                    }
                    return context.ContextOuterClass.Constraint_EndPointPriority.getDefaultInstance();
                }
            }

            /**
             * <code>.context.Constraint_EndPointPriority endpoint_priority = 5;</code>
             */
            public Builder setEndpointPriority(context.ContextOuterClass.Constraint_EndPointPriority value) {
                if (endpointPriorityBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    constraint_ = value;
                    onChanged();
                } else {
                    endpointPriorityBuilder_.setMessage(value);
                }
                constraintCase_ = 5;
                return this;
            }

            /**
             * <code>.context.Constraint_EndPointPriority endpoint_priority = 5;</code>
             */
            public Builder setEndpointPriority(context.ContextOuterClass.Constraint_EndPointPriority.Builder builderForValue) {
                if (endpointPriorityBuilder_ == null) {
                    constraint_ = builderForValue.build();
                    onChanged();
                } else {
                    endpointPriorityBuilder_.setMessage(builderForValue.build());
                }
                constraintCase_ = 5;
                return this;
            }

            /**
             * <code>.context.Constraint_EndPointPriority endpoint_priority = 5;</code>
             */
            public Builder mergeEndpointPriority(context.ContextOuterClass.Constraint_EndPointPriority value) {
                if (endpointPriorityBuilder_ == null) {
                    if (constraintCase_ == 5 && constraint_ != context.ContextOuterClass.Constraint_EndPointPriority.getDefaultInstance()) {
                        constraint_ = context.ContextOuterClass.Constraint_EndPointPriority.newBuilder((context.ContextOuterClass.Constraint_EndPointPriority) constraint_).mergeFrom(value).buildPartial();
                    } else {
                        constraint_ = value;
                    }
                    onChanged();
                } else {
                    if (constraintCase_ == 5) {
                        endpointPriorityBuilder_.mergeFrom(value);
                    } else {
                        endpointPriorityBuilder_.setMessage(value);
                    }
                }
                constraintCase_ = 5;
                return this;
            }

            /**
             * <code>.context.Constraint_EndPointPriority endpoint_priority = 5;</code>
             */
            public Builder clearEndpointPriority() {
                if (endpointPriorityBuilder_ == null) {
                    if (constraintCase_ == 5) {
                        constraintCase_ = 0;
                        constraint_ = null;
                        onChanged();
                    }
                } else {
                    if (constraintCase_ == 5) {
                        constraintCase_ = 0;
                        constraint_ = null;
                    }
                    endpointPriorityBuilder_.clear();
                }
                return this;
            }

            /**
             * <code>.context.Constraint_EndPointPriority endpoint_priority = 5;</code>
             */
            public context.ContextOuterClass.Constraint_EndPointPriority.Builder getEndpointPriorityBuilder() {
                return getEndpointPriorityFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.Constraint_EndPointPriority endpoint_priority = 5;</code>
             */
            @java.lang.Override
            public context.ContextOuterClass.Constraint_EndPointPriorityOrBuilder getEndpointPriorityOrBuilder() {
                if ((constraintCase_ == 5) && (endpointPriorityBuilder_ != null)) {
                    return endpointPriorityBuilder_.getMessageOrBuilder();
                } else {
                    if (constraintCase_ == 5) {
                        return (context.ContextOuterClass.Constraint_EndPointPriority) constraint_;
                    }
                    return context.ContextOuterClass.Constraint_EndPointPriority.getDefaultInstance();
                }
            }

            /**
             * <code>.context.Constraint_EndPointPriority endpoint_priority = 5;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Constraint_EndPointPriority, context.ContextOuterClass.Constraint_EndPointPriority.Builder, context.ContextOuterClass.Constraint_EndPointPriorityOrBuilder> getEndpointPriorityFieldBuilder() {
                if (endpointPriorityBuilder_ == null) {
                    if (!(constraintCase_ == 5)) {
                        constraint_ = context.ContextOuterClass.Constraint_EndPointPriority.getDefaultInstance();
                    }
                    endpointPriorityBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Constraint_EndPointPriority, context.ContextOuterClass.Constraint_EndPointPriority.Builder, context.ContextOuterClass.Constraint_EndPointPriorityOrBuilder>((context.ContextOuterClass.Constraint_EndPointPriority) constraint_, getParentForChildren(), isClean());
                    constraint_ = null;
                }
                constraintCase_ = 5;
                onChanged();
                return endpointPriorityBuilder_;
            }

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Constraint_SLA_Capacity, context.ContextOuterClass.Constraint_SLA_Capacity.Builder, context.ContextOuterClass.Constraint_SLA_CapacityOrBuilder> slaCapacityBuilder_;

            /**
             * <code>.context.Constraint_SLA_Capacity sla_capacity = 6;</code>
             * @return Whether the slaCapacity field is set.
             */
            @java.lang.Override
            public boolean hasSlaCapacity() {
                return constraintCase_ == 6;
            }

            /**
             * <code>.context.Constraint_SLA_Capacity sla_capacity = 6;</code>
             * @return The slaCapacity.
             */
            @java.lang.Override
            public context.ContextOuterClass.Constraint_SLA_Capacity getSlaCapacity() {
                if (slaCapacityBuilder_ == null) {
                    if (constraintCase_ == 6) {
                        return (context.ContextOuterClass.Constraint_SLA_Capacity) constraint_;
                    }
                    return context.ContextOuterClass.Constraint_SLA_Capacity.getDefaultInstance();
                } else {
                    if (constraintCase_ == 6) {
                        return slaCapacityBuilder_.getMessage();
                    }
                    return context.ContextOuterClass.Constraint_SLA_Capacity.getDefaultInstance();
                }
            }

            /**
             * <code>.context.Constraint_SLA_Capacity sla_capacity = 6;</code>
             */
            public Builder setSlaCapacity(context.ContextOuterClass.Constraint_SLA_Capacity value) {
                if (slaCapacityBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    constraint_ = value;
                    onChanged();
                } else {
                    slaCapacityBuilder_.setMessage(value);
                }
                constraintCase_ = 6;
                return this;
            }

            /**
             * <code>.context.Constraint_SLA_Capacity sla_capacity = 6;</code>
             */
            public Builder setSlaCapacity(context.ContextOuterClass.Constraint_SLA_Capacity.Builder builderForValue) {
                if (slaCapacityBuilder_ == null) {
                    constraint_ = builderForValue.build();
                    onChanged();
                } else {
                    slaCapacityBuilder_.setMessage(builderForValue.build());
                }
                constraintCase_ = 6;
                return this;
            }

            /**
             * <code>.context.Constraint_SLA_Capacity sla_capacity = 6;</code>
             */
            public Builder mergeSlaCapacity(context.ContextOuterClass.Constraint_SLA_Capacity value) {
                if (slaCapacityBuilder_ == null) {
                    if (constraintCase_ == 6 && constraint_ != context.ContextOuterClass.Constraint_SLA_Capacity.getDefaultInstance()) {
                        constraint_ = context.ContextOuterClass.Constraint_SLA_Capacity.newBuilder((context.ContextOuterClass.Constraint_SLA_Capacity) constraint_).mergeFrom(value).buildPartial();
                    } else {
                        constraint_ = value;
                    }
                    onChanged();
                } else {
                    if (constraintCase_ == 6) {
                        slaCapacityBuilder_.mergeFrom(value);
                    } else {
                        slaCapacityBuilder_.setMessage(value);
                    }
                }
                constraintCase_ = 6;
                return this;
            }

            /**
             * <code>.context.Constraint_SLA_Capacity sla_capacity = 6;</code>
             */
            public Builder clearSlaCapacity() {
                if (slaCapacityBuilder_ == null) {
                    if (constraintCase_ == 6) {
                        constraintCase_ = 0;
                        constraint_ = null;
                        onChanged();
                    }
                } else {
                    if (constraintCase_ == 6) {
                        constraintCase_ = 0;
                        constraint_ = null;
                    }
                    slaCapacityBuilder_.clear();
                }
                return this;
            }

            /**
             * <code>.context.Constraint_SLA_Capacity sla_capacity = 6;</code>
             */
            public context.ContextOuterClass.Constraint_SLA_Capacity.Builder getSlaCapacityBuilder() {
                return getSlaCapacityFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.Constraint_SLA_Capacity sla_capacity = 6;</code>
             */
            @java.lang.Override
            public context.ContextOuterClass.Constraint_SLA_CapacityOrBuilder getSlaCapacityOrBuilder() {
                if ((constraintCase_ == 6) && (slaCapacityBuilder_ != null)) {
                    return slaCapacityBuilder_.getMessageOrBuilder();
                } else {
                    if (constraintCase_ == 6) {
                        return (context.ContextOuterClass.Constraint_SLA_Capacity) constraint_;
                    }
                    return context.ContextOuterClass.Constraint_SLA_Capacity.getDefaultInstance();
                }
            }

            /**
             * <code>.context.Constraint_SLA_Capacity sla_capacity = 6;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Constraint_SLA_Capacity, context.ContextOuterClass.Constraint_SLA_Capacity.Builder, context.ContextOuterClass.Constraint_SLA_CapacityOrBuilder> getSlaCapacityFieldBuilder() {
                if (slaCapacityBuilder_ == null) {
                    if (!(constraintCase_ == 6)) {
                        constraint_ = context.ContextOuterClass.Constraint_SLA_Capacity.getDefaultInstance();
                    }
                    slaCapacityBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Constraint_SLA_Capacity, context.ContextOuterClass.Constraint_SLA_Capacity.Builder, context.ContextOuterClass.Constraint_SLA_CapacityOrBuilder>((context.ContextOuterClass.Constraint_SLA_Capacity) constraint_, getParentForChildren(), isClean());
                    constraint_ = null;
                }
                constraintCase_ = 6;
                onChanged();
                return slaCapacityBuilder_;
            }

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Constraint_SLA_Latency, context.ContextOuterClass.Constraint_SLA_Latency.Builder, context.ContextOuterClass.Constraint_SLA_LatencyOrBuilder> slaLatencyBuilder_;

            /**
             * <code>.context.Constraint_SLA_Latency sla_latency = 7;</code>
             * @return Whether the slaLatency field is set.
             */
            @java.lang.Override
            public boolean hasSlaLatency() {
                return constraintCase_ == 7;
            }

            /**
             * <code>.context.Constraint_SLA_Latency sla_latency = 7;</code>
             * @return The slaLatency.
             */
            @java.lang.Override
            public context.ContextOuterClass.Constraint_SLA_Latency getSlaLatency() {
                if (slaLatencyBuilder_ == null) {
                    if (constraintCase_ == 7) {
                        return (context.ContextOuterClass.Constraint_SLA_Latency) constraint_;
                    }
                    return context.ContextOuterClass.Constraint_SLA_Latency.getDefaultInstance();
                } else {
                    if (constraintCase_ == 7) {
                        return slaLatencyBuilder_.getMessage();
                    }
                    return context.ContextOuterClass.Constraint_SLA_Latency.getDefaultInstance();
                }
            }

            /**
             * <code>.context.Constraint_SLA_Latency sla_latency = 7;</code>
             */
            public Builder setSlaLatency(context.ContextOuterClass.Constraint_SLA_Latency value) {
                if (slaLatencyBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    constraint_ = value;
                    onChanged();
                } else {
                    slaLatencyBuilder_.setMessage(value);
                }
                constraintCase_ = 7;
                return this;
            }

            /**
             * <code>.context.Constraint_SLA_Latency sla_latency = 7;</code>
             */
            public Builder setSlaLatency(context.ContextOuterClass.Constraint_SLA_Latency.Builder builderForValue) {
                if (slaLatencyBuilder_ == null) {
                    constraint_ = builderForValue.build();
                    onChanged();
                } else {
                    slaLatencyBuilder_.setMessage(builderForValue.build());
                }
                constraintCase_ = 7;
                return this;
            }

            /**
             * <code>.context.Constraint_SLA_Latency sla_latency = 7;</code>
             */
            public Builder mergeSlaLatency(context.ContextOuterClass.Constraint_SLA_Latency value) {
                if (slaLatencyBuilder_ == null) {
                    if (constraintCase_ == 7 && constraint_ != context.ContextOuterClass.Constraint_SLA_Latency.getDefaultInstance()) {
                        constraint_ = context.ContextOuterClass.Constraint_SLA_Latency.newBuilder((context.ContextOuterClass.Constraint_SLA_Latency) constraint_).mergeFrom(value).buildPartial();
                    } else {
                        constraint_ = value;
                    }
                    onChanged();
                } else {
                    if (constraintCase_ == 7) {
                        slaLatencyBuilder_.mergeFrom(value);
                    } else {
                        slaLatencyBuilder_.setMessage(value);
                    }
                }
                constraintCase_ = 7;
                return this;
            }

            /**
             * <code>.context.Constraint_SLA_Latency sla_latency = 7;</code>
             */
            public Builder clearSlaLatency() {
                if (slaLatencyBuilder_ == null) {
                    if (constraintCase_ == 7) {
                        constraintCase_ = 0;
                        constraint_ = null;
                        onChanged();
                    }
                } else {
                    if (constraintCase_ == 7) {
                        constraintCase_ = 0;
                        constraint_ = null;
                    }
                    slaLatencyBuilder_.clear();
                }
                return this;
            }

            /**
             * <code>.context.Constraint_SLA_Latency sla_latency = 7;</code>
             */
            public context.ContextOuterClass.Constraint_SLA_Latency.Builder getSlaLatencyBuilder() {
                return getSlaLatencyFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.Constraint_SLA_Latency sla_latency = 7;</code>
             */
            @java.lang.Override
            public context.ContextOuterClass.Constraint_SLA_LatencyOrBuilder getSlaLatencyOrBuilder() {
                if ((constraintCase_ == 7) && (slaLatencyBuilder_ != null)) {
                    return slaLatencyBuilder_.getMessageOrBuilder();
                } else {
                    if (constraintCase_ == 7) {
                        return (context.ContextOuterClass.Constraint_SLA_Latency) constraint_;
                    }
                    return context.ContextOuterClass.Constraint_SLA_Latency.getDefaultInstance();
                }
            }

            /**
             * <code>.context.Constraint_SLA_Latency sla_latency = 7;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Constraint_SLA_Latency, context.ContextOuterClass.Constraint_SLA_Latency.Builder, context.ContextOuterClass.Constraint_SLA_LatencyOrBuilder> getSlaLatencyFieldBuilder() {
                if (slaLatencyBuilder_ == null) {
                    if (!(constraintCase_ == 7)) {
                        constraint_ = context.ContextOuterClass.Constraint_SLA_Latency.getDefaultInstance();
                    }
                    slaLatencyBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Constraint_SLA_Latency, context.ContextOuterClass.Constraint_SLA_Latency.Builder, context.ContextOuterClass.Constraint_SLA_LatencyOrBuilder>((context.ContextOuterClass.Constraint_SLA_Latency) constraint_, getParentForChildren(), isClean());
                    constraint_ = null;
                }
                constraintCase_ = 7;
                onChanged();
                return slaLatencyBuilder_;
            }

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Constraint_SLA_Availability, context.ContextOuterClass.Constraint_SLA_Availability.Builder, context.ContextOuterClass.Constraint_SLA_AvailabilityOrBuilder> slaAvailabilityBuilder_;

            /**
             * <code>.context.Constraint_SLA_Availability sla_availability = 8;</code>
             * @return Whether the slaAvailability field is set.
             */
            @java.lang.Override
            public boolean hasSlaAvailability() {
                return constraintCase_ == 8;
            }

            /**
             * <code>.context.Constraint_SLA_Availability sla_availability = 8;</code>
             * @return The slaAvailability.
             */
            @java.lang.Override
            public context.ContextOuterClass.Constraint_SLA_Availability getSlaAvailability() {
                if (slaAvailabilityBuilder_ == null) {
                    if (constraintCase_ == 8) {
                        return (context.ContextOuterClass.Constraint_SLA_Availability) constraint_;
                    }
                    return context.ContextOuterClass.Constraint_SLA_Availability.getDefaultInstance();
                } else {
                    if (constraintCase_ == 8) {
                        return slaAvailabilityBuilder_.getMessage();
                    }
                    return context.ContextOuterClass.Constraint_SLA_Availability.getDefaultInstance();
                }
            }

            /**
             * <code>.context.Constraint_SLA_Availability sla_availability = 8;</code>
             */
            public Builder setSlaAvailability(context.ContextOuterClass.Constraint_SLA_Availability value) {
                if (slaAvailabilityBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    constraint_ = value;
                    onChanged();
                } else {
                    slaAvailabilityBuilder_.setMessage(value);
                }
                constraintCase_ = 8;
                return this;
            }

            /**
             * <code>.context.Constraint_SLA_Availability sla_availability = 8;</code>
             */
            public Builder setSlaAvailability(context.ContextOuterClass.Constraint_SLA_Availability.Builder builderForValue) {
                if (slaAvailabilityBuilder_ == null) {
                    constraint_ = builderForValue.build();
                    onChanged();
                } else {
                    slaAvailabilityBuilder_.setMessage(builderForValue.build());
                }
                constraintCase_ = 8;
                return this;
            }

            /**
             * <code>.context.Constraint_SLA_Availability sla_availability = 8;</code>
             */
            public Builder mergeSlaAvailability(context.ContextOuterClass.Constraint_SLA_Availability value) {
                if (slaAvailabilityBuilder_ == null) {
                    if (constraintCase_ == 8 && constraint_ != context.ContextOuterClass.Constraint_SLA_Availability.getDefaultInstance()) {
                        constraint_ = context.ContextOuterClass.Constraint_SLA_Availability.newBuilder((context.ContextOuterClass.Constraint_SLA_Availability) constraint_).mergeFrom(value).buildPartial();
                    } else {
                        constraint_ = value;
                    }
                    onChanged();
                } else {
                    if (constraintCase_ == 8) {
                        slaAvailabilityBuilder_.mergeFrom(value);
                    } else {
                        slaAvailabilityBuilder_.setMessage(value);
                    }
                }
                constraintCase_ = 8;
                return this;
            }

            /**
             * <code>.context.Constraint_SLA_Availability sla_availability = 8;</code>
             */
            public Builder clearSlaAvailability() {
                if (slaAvailabilityBuilder_ == null) {
                    if (constraintCase_ == 8) {
                        constraintCase_ = 0;
                        constraint_ = null;
                        onChanged();
                    }
                } else {
                    if (constraintCase_ == 8) {
                        constraintCase_ = 0;
                        constraint_ = null;
                    }
                    slaAvailabilityBuilder_.clear();
                }
                return this;
            }

            /**
             * <code>.context.Constraint_SLA_Availability sla_availability = 8;</code>
             */
            public context.ContextOuterClass.Constraint_SLA_Availability.Builder getSlaAvailabilityBuilder() {
                return getSlaAvailabilityFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.Constraint_SLA_Availability sla_availability = 8;</code>
             */
            @java.lang.Override
            public context.ContextOuterClass.Constraint_SLA_AvailabilityOrBuilder getSlaAvailabilityOrBuilder() {
                if ((constraintCase_ == 8) && (slaAvailabilityBuilder_ != null)) {
                    return slaAvailabilityBuilder_.getMessageOrBuilder();
                } else {
                    if (constraintCase_ == 8) {
                        return (context.ContextOuterClass.Constraint_SLA_Availability) constraint_;
                    }
                    return context.ContextOuterClass.Constraint_SLA_Availability.getDefaultInstance();
                }
            }

            /**
             * <code>.context.Constraint_SLA_Availability sla_availability = 8;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Constraint_SLA_Availability, context.ContextOuterClass.Constraint_SLA_Availability.Builder, context.ContextOuterClass.Constraint_SLA_AvailabilityOrBuilder> getSlaAvailabilityFieldBuilder() {
                if (slaAvailabilityBuilder_ == null) {
                    if (!(constraintCase_ == 8)) {
                        constraint_ = context.ContextOuterClass.Constraint_SLA_Availability.getDefaultInstance();
                    }
                    slaAvailabilityBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Constraint_SLA_Availability, context.ContextOuterClass.Constraint_SLA_Availability.Builder, context.ContextOuterClass.Constraint_SLA_AvailabilityOrBuilder>((context.ContextOuterClass.Constraint_SLA_Availability) constraint_, getParentForChildren(), isClean());
                    constraint_ = null;
                }
                constraintCase_ = 8;
                onChanged();
                return slaAvailabilityBuilder_;
            }

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Constraint_SLA_Isolation_level, context.ContextOuterClass.Constraint_SLA_Isolation_level.Builder, context.ContextOuterClass.Constraint_SLA_Isolation_levelOrBuilder> slaIsolationBuilder_;

            /**
             * <code>.context.Constraint_SLA_Isolation_level sla_isolation = 9;</code>
             * @return Whether the slaIsolation field is set.
             */
            @java.lang.Override
            public boolean hasSlaIsolation() {
                return constraintCase_ == 9;
            }

            /**
             * <code>.context.Constraint_SLA_Isolation_level sla_isolation = 9;</code>
             * @return The slaIsolation.
             */
            @java.lang.Override
            public context.ContextOuterClass.Constraint_SLA_Isolation_level getSlaIsolation() {
                if (slaIsolationBuilder_ == null) {
                    if (constraintCase_ == 9) {
                        return (context.ContextOuterClass.Constraint_SLA_Isolation_level) constraint_;
                    }
                    return context.ContextOuterClass.Constraint_SLA_Isolation_level.getDefaultInstance();
                } else {
                    if (constraintCase_ == 9) {
                        return slaIsolationBuilder_.getMessage();
                    }
                    return context.ContextOuterClass.Constraint_SLA_Isolation_level.getDefaultInstance();
                }
            }

            /**
             * <code>.context.Constraint_SLA_Isolation_level sla_isolation = 9;</code>
             */
            public Builder setSlaIsolation(context.ContextOuterClass.Constraint_SLA_Isolation_level value) {
                if (slaIsolationBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    constraint_ = value;
                    onChanged();
                } else {
                    slaIsolationBuilder_.setMessage(value);
                }
                constraintCase_ = 9;
                return this;
            }

            /**
             * <code>.context.Constraint_SLA_Isolation_level sla_isolation = 9;</code>
             */
            public Builder setSlaIsolation(context.ContextOuterClass.Constraint_SLA_Isolation_level.Builder builderForValue) {
                if (slaIsolationBuilder_ == null) {
                    constraint_ = builderForValue.build();
                    onChanged();
                } else {
                    slaIsolationBuilder_.setMessage(builderForValue.build());
                }
                constraintCase_ = 9;
                return this;
            }

            /**
             * <code>.context.Constraint_SLA_Isolation_level sla_isolation = 9;</code>
             */
            public Builder mergeSlaIsolation(context.ContextOuterClass.Constraint_SLA_Isolation_level value) {
                if (slaIsolationBuilder_ == null) {
                    if (constraintCase_ == 9 && constraint_ != context.ContextOuterClass.Constraint_SLA_Isolation_level.getDefaultInstance()) {
                        constraint_ = context.ContextOuterClass.Constraint_SLA_Isolation_level.newBuilder((context.ContextOuterClass.Constraint_SLA_Isolation_level) constraint_).mergeFrom(value).buildPartial();
                    } else {
                        constraint_ = value;
                    }
                    onChanged();
                } else {
                    if (constraintCase_ == 9) {
                        slaIsolationBuilder_.mergeFrom(value);
                    } else {
                        slaIsolationBuilder_.setMessage(value);
                    }
                }
                constraintCase_ = 9;
                return this;
            }

            /**
             * <code>.context.Constraint_SLA_Isolation_level sla_isolation = 9;</code>
             */
            public Builder clearSlaIsolation() {
                if (slaIsolationBuilder_ == null) {
                    if (constraintCase_ == 9) {
                        constraintCase_ = 0;
                        constraint_ = null;
                        onChanged();
                    }
                } else {
                    if (constraintCase_ == 9) {
                        constraintCase_ = 0;
                        constraint_ = null;
                    }
                    slaIsolationBuilder_.clear();
                }
                return this;
            }

            /**
             * <code>.context.Constraint_SLA_Isolation_level sla_isolation = 9;</code>
             */
            public context.ContextOuterClass.Constraint_SLA_Isolation_level.Builder getSlaIsolationBuilder() {
                return getSlaIsolationFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.Constraint_SLA_Isolation_level sla_isolation = 9;</code>
             */
            @java.lang.Override
            public context.ContextOuterClass.Constraint_SLA_Isolation_levelOrBuilder getSlaIsolationOrBuilder() {
                if ((constraintCase_ == 9) && (slaIsolationBuilder_ != null)) {
                    return slaIsolationBuilder_.getMessageOrBuilder();
                } else {
                    if (constraintCase_ == 9) {
                        return (context.ContextOuterClass.Constraint_SLA_Isolation_level) constraint_;
                    }
                    return context.ContextOuterClass.Constraint_SLA_Isolation_level.getDefaultInstance();
                }
            }

            /**
             * <code>.context.Constraint_SLA_Isolation_level sla_isolation = 9;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Constraint_SLA_Isolation_level, context.ContextOuterClass.Constraint_SLA_Isolation_level.Builder, context.ContextOuterClass.Constraint_SLA_Isolation_levelOrBuilder> getSlaIsolationFieldBuilder() {
                if (slaIsolationBuilder_ == null) {
                    if (!(constraintCase_ == 9)) {
                        constraint_ = context.ContextOuterClass.Constraint_SLA_Isolation_level.getDefaultInstance();
                    }
                    slaIsolationBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Constraint_SLA_Isolation_level, context.ContextOuterClass.Constraint_SLA_Isolation_level.Builder, context.ContextOuterClass.Constraint_SLA_Isolation_levelOrBuilder>((context.ContextOuterClass.Constraint_SLA_Isolation_level) constraint_, getParentForChildren(), isClean());
                    constraint_ = null;
                }
                constraintCase_ = 9;
                onChanged();
                return slaIsolationBuilder_;
            }

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Constraint_Exclusions, context.ContextOuterClass.Constraint_Exclusions.Builder, context.ContextOuterClass.Constraint_ExclusionsOrBuilder> exclusionsBuilder_;

            /**
             * <code>.context.Constraint_Exclusions exclusions = 10;</code>
             * @return Whether the exclusions field is set.
             */
            @java.lang.Override
            public boolean hasExclusions() {
                return constraintCase_ == 10;
            }

            /**
             * <code>.context.Constraint_Exclusions exclusions = 10;</code>
             * @return The exclusions.
             */
            @java.lang.Override
            public context.ContextOuterClass.Constraint_Exclusions getExclusions() {
                if (exclusionsBuilder_ == null) {
                    if (constraintCase_ == 10) {
                        return (context.ContextOuterClass.Constraint_Exclusions) constraint_;
                    }
                    return context.ContextOuterClass.Constraint_Exclusions.getDefaultInstance();
                } else {
                    if (constraintCase_ == 10) {
                        return exclusionsBuilder_.getMessage();
                    }
                    return context.ContextOuterClass.Constraint_Exclusions.getDefaultInstance();
                }
            }

            /**
             * <code>.context.Constraint_Exclusions exclusions = 10;</code>
             */
            public Builder setExclusions(context.ContextOuterClass.Constraint_Exclusions value) {
                if (exclusionsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    constraint_ = value;
                    onChanged();
                } else {
                    exclusionsBuilder_.setMessage(value);
                }
                constraintCase_ = 10;
                return this;
            }

            /**
             * <code>.context.Constraint_Exclusions exclusions = 10;</code>
             */
            public Builder setExclusions(context.ContextOuterClass.Constraint_Exclusions.Builder builderForValue) {
                if (exclusionsBuilder_ == null) {
                    constraint_ = builderForValue.build();
                    onChanged();
                } else {
                    exclusionsBuilder_.setMessage(builderForValue.build());
                }
                constraintCase_ = 10;
                return this;
            }

            /**
             * <code>.context.Constraint_Exclusions exclusions = 10;</code>
             */
            public Builder mergeExclusions(context.ContextOuterClass.Constraint_Exclusions value) {
                if (exclusionsBuilder_ == null) {
                    if (constraintCase_ == 10 && constraint_ != context.ContextOuterClass.Constraint_Exclusions.getDefaultInstance()) {
                        constraint_ = context.ContextOuterClass.Constraint_Exclusions.newBuilder((context.ContextOuterClass.Constraint_Exclusions) constraint_).mergeFrom(value).buildPartial();
                    } else {
                        constraint_ = value;
                    }
                    onChanged();
                } else {
                    if (constraintCase_ == 10) {
                        exclusionsBuilder_.mergeFrom(value);
                    } else {
                        exclusionsBuilder_.setMessage(value);
                    }
                }
                constraintCase_ = 10;
                return this;
            }

            /**
             * <code>.context.Constraint_Exclusions exclusions = 10;</code>
             */
            public Builder clearExclusions() {
                if (exclusionsBuilder_ == null) {
                    if (constraintCase_ == 10) {
                        constraintCase_ = 0;
                        constraint_ = null;
                        onChanged();
                    }
                } else {
                    if (constraintCase_ == 10) {
                        constraintCase_ = 0;
                        constraint_ = null;
                    }
                    exclusionsBuilder_.clear();
                }
                return this;
            }

            /**
             * <code>.context.Constraint_Exclusions exclusions = 10;</code>
             */
            public context.ContextOuterClass.Constraint_Exclusions.Builder getExclusionsBuilder() {
                return getExclusionsFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.Constraint_Exclusions exclusions = 10;</code>
             */
            @java.lang.Override
            public context.ContextOuterClass.Constraint_ExclusionsOrBuilder getExclusionsOrBuilder() {
                if ((constraintCase_ == 10) && (exclusionsBuilder_ != null)) {
                    return exclusionsBuilder_.getMessageOrBuilder();
                } else {
                    if (constraintCase_ == 10) {
                        return (context.ContextOuterClass.Constraint_Exclusions) constraint_;
                    }
                    return context.ContextOuterClass.Constraint_Exclusions.getDefaultInstance();
                }
            }

            /**
             * <code>.context.Constraint_Exclusions exclusions = 10;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Constraint_Exclusions, context.ContextOuterClass.Constraint_Exclusions.Builder, context.ContextOuterClass.Constraint_ExclusionsOrBuilder> getExclusionsFieldBuilder() {
                if (exclusionsBuilder_ == null) {
                    if (!(constraintCase_ == 10)) {
                        constraint_ = context.ContextOuterClass.Constraint_Exclusions.getDefaultInstance();
                    }
                    exclusionsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Constraint_Exclusions, context.ContextOuterClass.Constraint_Exclusions.Builder, context.ContextOuterClass.Constraint_ExclusionsOrBuilder>((context.ContextOuterClass.Constraint_Exclusions) constraint_, getParentForChildren(), isClean());
                    constraint_ = null;
                }
                constraintCase_ = 10;
                onChanged();
                return exclusionsBuilder_;
            }

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Constraint_QoSProfile, context.ContextOuterClass.Constraint_QoSProfile.Builder, context.ContextOuterClass.Constraint_QoSProfileOrBuilder> qosProfileBuilder_;

            /**
             * <code>.context.Constraint_QoSProfile qos_profile = 11;</code>
             * @return Whether the qosProfile field is set.
             */
            @java.lang.Override
            public boolean hasQosProfile() {
                return constraintCase_ == 11;
            }

            /**
             * <code>.context.Constraint_QoSProfile qos_profile = 11;</code>
             * @return The qosProfile.
             */
            @java.lang.Override
            public context.ContextOuterClass.Constraint_QoSProfile getQosProfile() {
                if (qosProfileBuilder_ == null) {
                    if (constraintCase_ == 11) {
                        return (context.ContextOuterClass.Constraint_QoSProfile) constraint_;
                    }
                    return context.ContextOuterClass.Constraint_QoSProfile.getDefaultInstance();
                } else {
                    if (constraintCase_ == 11) {
                        return qosProfileBuilder_.getMessage();
                    }
                    return context.ContextOuterClass.Constraint_QoSProfile.getDefaultInstance();
                }
            }

            /**
             * <code>.context.Constraint_QoSProfile qos_profile = 11;</code>
             */
            public Builder setQosProfile(context.ContextOuterClass.Constraint_QoSProfile value) {
                if (qosProfileBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    constraint_ = value;
                    onChanged();
                } else {
                    qosProfileBuilder_.setMessage(value);
                }
                constraintCase_ = 11;
                return this;
            }

            /**
             * <code>.context.Constraint_QoSProfile qos_profile = 11;</code>
             */
            public Builder setQosProfile(context.ContextOuterClass.Constraint_QoSProfile.Builder builderForValue) {
                if (qosProfileBuilder_ == null) {
                    constraint_ = builderForValue.build();
                    onChanged();
                } else {
                    qosProfileBuilder_.setMessage(builderForValue.build());
                }
                constraintCase_ = 11;
                return this;
            }

            /**
             * <code>.context.Constraint_QoSProfile qos_profile = 11;</code>
             */
            public Builder mergeQosProfile(context.ContextOuterClass.Constraint_QoSProfile value) {
                if (qosProfileBuilder_ == null) {
                    if (constraintCase_ == 11 && constraint_ != context.ContextOuterClass.Constraint_QoSProfile.getDefaultInstance()) {
                        constraint_ = context.ContextOuterClass.Constraint_QoSProfile.newBuilder((context.ContextOuterClass.Constraint_QoSProfile) constraint_).mergeFrom(value).buildPartial();
                    } else {
                        constraint_ = value;
                    }
                    onChanged();
                } else {
                    if (constraintCase_ == 11) {
                        qosProfileBuilder_.mergeFrom(value);
                    } else {
                        qosProfileBuilder_.setMessage(value);
                    }
                }
                constraintCase_ = 11;
                return this;
            }

            /**
             * <code>.context.Constraint_QoSProfile qos_profile = 11;</code>
             */
            public Builder clearQosProfile() {
                if (qosProfileBuilder_ == null) {
                    if (constraintCase_ == 11) {
                        constraintCase_ = 0;
                        constraint_ = null;
                        onChanged();
                    }
                } else {
                    if (constraintCase_ == 11) {
                        constraintCase_ = 0;
                        constraint_ = null;
                    }
                    qosProfileBuilder_.clear();
                }
                return this;
            }

            /**
             * <code>.context.Constraint_QoSProfile qos_profile = 11;</code>
             */
            public context.ContextOuterClass.Constraint_QoSProfile.Builder getQosProfileBuilder() {
                return getQosProfileFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.Constraint_QoSProfile qos_profile = 11;</code>
             */
            @java.lang.Override
            public context.ContextOuterClass.Constraint_QoSProfileOrBuilder getQosProfileOrBuilder() {
                if ((constraintCase_ == 11) && (qosProfileBuilder_ != null)) {
                    return qosProfileBuilder_.getMessageOrBuilder();
                } else {
                    if (constraintCase_ == 11) {
                        return (context.ContextOuterClass.Constraint_QoSProfile) constraint_;
                    }
                    return context.ContextOuterClass.Constraint_QoSProfile.getDefaultInstance();
                }
            }

            /**
             * <code>.context.Constraint_QoSProfile qos_profile = 11;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Constraint_QoSProfile, context.ContextOuterClass.Constraint_QoSProfile.Builder, context.ContextOuterClass.Constraint_QoSProfileOrBuilder> getQosProfileFieldBuilder() {
                if (qosProfileBuilder_ == null) {
                    if (!(constraintCase_ == 11)) {
                        constraint_ = context.ContextOuterClass.Constraint_QoSProfile.getDefaultInstance();
                    }
                    qosProfileBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Constraint_QoSProfile, context.ContextOuterClass.Constraint_QoSProfile.Builder, context.ContextOuterClass.Constraint_QoSProfileOrBuilder>((context.ContextOuterClass.Constraint_QoSProfile) constraint_, getParentForChildren(), isClean());
                    constraint_ = null;
                }
                constraintCase_ = 11;
                onChanged();
                return qosProfileBuilder_;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.Constraint)
        }

        // @@protoc_insertion_point(class_scope:context.Constraint)
        private static final context.ContextOuterClass.Constraint DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.Constraint();
        }

        public static context.ContextOuterClass.Constraint getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<Constraint> PARSER = new com.google.protobuf.AbstractParser<Constraint>() {

            @java.lang.Override
            public Constraint parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<Constraint> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<Constraint> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.Constraint getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface TeraFlowControllerOrBuilder extends // @@protoc_insertion_point(interface_extends:context.TeraFlowController)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>.context.ContextId context_id = 1;</code>
         * @return Whether the contextId field is set.
         */
        boolean hasContextId();

        /**
         * <code>.context.ContextId context_id = 1;</code>
         * @return The contextId.
         */
        context.ContextOuterClass.ContextId getContextId();

        /**
         * <code>.context.ContextId context_id = 1;</code>
         */
        context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder();

        /**
         * <code>string ip_address = 2;</code>
         * @return The ipAddress.
         */
        java.lang.String getIpAddress();

        /**
         * <code>string ip_address = 2;</code>
         * @return The bytes for ipAddress.
         */
        com.google.protobuf.ByteString getIpAddressBytes();

        /**
         * <code>uint32 port = 3;</code>
         * @return The port.
         */
        int getPort();
    }

    /**
     * <pre>
     * ----- Miscellaneous -------------------------------------------------------------------------------------------------
     * </pre>
     *
     * Protobuf type {@code context.TeraFlowController}
     */
    public static final class TeraFlowController extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.TeraFlowController)
    TeraFlowControllerOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use TeraFlowController.newBuilder() to construct.
        private TeraFlowController(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private TeraFlowController() {
            ipAddress_ = "";
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new TeraFlowController();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_TeraFlowController_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_TeraFlowController_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.TeraFlowController.class, context.ContextOuterClass.TeraFlowController.Builder.class);
        }

        public static final int CONTEXT_ID_FIELD_NUMBER = 1;

        private context.ContextOuterClass.ContextId contextId_;

        /**
         * <code>.context.ContextId context_id = 1;</code>
         * @return Whether the contextId field is set.
         */
        @java.lang.Override
        public boolean hasContextId() {
            return contextId_ != null;
        }

        /**
         * <code>.context.ContextId context_id = 1;</code>
         * @return The contextId.
         */
        @java.lang.Override
        public context.ContextOuterClass.ContextId getContextId() {
            return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
        }

        /**
         * <code>.context.ContextId context_id = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
            return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
        }

        public static final int IP_ADDRESS_FIELD_NUMBER = 2;

        @SuppressWarnings("serial")
        private volatile java.lang.Object ipAddress_ = "";

        /**
         * <code>string ip_address = 2;</code>
         * @return The ipAddress.
         */
        @java.lang.Override
        public java.lang.String getIpAddress() {
            java.lang.Object ref = ipAddress_;
            if (ref instanceof java.lang.String) {
                return (java.lang.String) ref;
            } else {
                com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                java.lang.String s = bs.toStringUtf8();
                ipAddress_ = s;
                return s;
            }
        }

        /**
         * <code>string ip_address = 2;</code>
         * @return The bytes for ipAddress.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString getIpAddressBytes() {
            java.lang.Object ref = ipAddress_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                ipAddress_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int PORT_FIELD_NUMBER = 3;

        private int port_ = 0;

        /**
         * <code>uint32 port = 3;</code>
         * @return The port.
         */
        @java.lang.Override
        public int getPort() {
            return port_;
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            if (contextId_ != null) {
                output.writeMessage(1, getContextId());
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(ipAddress_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 2, ipAddress_);
            }
            if (port_ != 0) {
                output.writeUInt32(3, port_);
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            if (contextId_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getContextId());
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(ipAddress_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, ipAddress_);
            }
            if (port_ != 0) {
                size += com.google.protobuf.CodedOutputStream.computeUInt32Size(3, port_);
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.TeraFlowController)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.TeraFlowController other = (context.ContextOuterClass.TeraFlowController) obj;
            if (hasContextId() != other.hasContextId())
                return false;
            if (hasContextId()) {
                if (!getContextId().equals(other.getContextId()))
                    return false;
            }
            if (!getIpAddress().equals(other.getIpAddress()))
                return false;
            if (getPort() != other.getPort())
                return false;
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            if (hasContextId()) {
                hash = (37 * hash) + CONTEXT_ID_FIELD_NUMBER;
                hash = (53 * hash) + getContextId().hashCode();
            }
            hash = (37 * hash) + IP_ADDRESS_FIELD_NUMBER;
            hash = (53 * hash) + getIpAddress().hashCode();
            hash = (37 * hash) + PORT_FIELD_NUMBER;
            hash = (53 * hash) + getPort();
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.TeraFlowController parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.TeraFlowController parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.TeraFlowController parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.TeraFlowController parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.TeraFlowController parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.TeraFlowController parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.TeraFlowController parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.TeraFlowController parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.TeraFlowController parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.TeraFlowController parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.TeraFlowController parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.TeraFlowController parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.TeraFlowController prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * <pre>
         * ----- Miscellaneous -------------------------------------------------------------------------------------------------
         * </pre>
         *
         * Protobuf type {@code context.TeraFlowController}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.TeraFlowController)
        context.ContextOuterClass.TeraFlowControllerOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_TeraFlowController_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_TeraFlowController_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.TeraFlowController.class, context.ContextOuterClass.TeraFlowController.Builder.class);
            }

            // Construct using context.ContextOuterClass.TeraFlowController.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                contextId_ = null;
                if (contextIdBuilder_ != null) {
                    contextIdBuilder_.dispose();
                    contextIdBuilder_ = null;
                }
                ipAddress_ = "";
                port_ = 0;
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_TeraFlowController_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.TeraFlowController getDefaultInstanceForType() {
                return context.ContextOuterClass.TeraFlowController.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.TeraFlowController build() {
                context.ContextOuterClass.TeraFlowController result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.TeraFlowController buildPartial() {
                context.ContextOuterClass.TeraFlowController result = new context.ContextOuterClass.TeraFlowController(this);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartial0(context.ContextOuterClass.TeraFlowController result) {
                int from_bitField0_ = bitField0_;
                if (((from_bitField0_ & 0x00000001) != 0)) {
                    result.contextId_ = contextIdBuilder_ == null ? contextId_ : contextIdBuilder_.build();
                }
                if (((from_bitField0_ & 0x00000002) != 0)) {
                    result.ipAddress_ = ipAddress_;
                }
                if (((from_bitField0_ & 0x00000004) != 0)) {
                    result.port_ = port_;
                }
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.TeraFlowController) {
                    return mergeFrom((context.ContextOuterClass.TeraFlowController) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.TeraFlowController other) {
                if (other == context.ContextOuterClass.TeraFlowController.getDefaultInstance())
                    return this;
                if (other.hasContextId()) {
                    mergeContextId(other.getContextId());
                }
                if (!other.getIpAddress().isEmpty()) {
                    ipAddress_ = other.ipAddress_;
                    bitField0_ |= 0x00000002;
                    onChanged();
                }
                if (other.getPort() != 0) {
                    setPort(other.getPort());
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 10:
                                {
                                    input.readMessage(getContextIdFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000001;
                                    break;
                                }
                            // case 10
                            case 18:
                                {
                                    ipAddress_ = input.readStringRequireUtf8();
                                    bitField0_ |= 0x00000002;
                                    break;
                                }
                            // case 18
                            case 24:
                                {
                                    port_ = input.readUInt32();
                                    bitField0_ |= 0x00000004;
                                    break;
                                }
                            // case 24
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private context.ContextOuterClass.ContextId contextId_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> contextIdBuilder_;

            /**
             * <code>.context.ContextId context_id = 1;</code>
             * @return Whether the contextId field is set.
             */
            public boolean hasContextId() {
                return ((bitField0_ & 0x00000001) != 0);
            }

            /**
             * <code>.context.ContextId context_id = 1;</code>
             * @return The contextId.
             */
            public context.ContextOuterClass.ContextId getContextId() {
                if (contextIdBuilder_ == null) {
                    return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
                } else {
                    return contextIdBuilder_.getMessage();
                }
            }

            /**
             * <code>.context.ContextId context_id = 1;</code>
             */
            public Builder setContextId(context.ContextOuterClass.ContextId value) {
                if (contextIdBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    contextId_ = value;
                } else {
                    contextIdBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.ContextId context_id = 1;</code>
             */
            public Builder setContextId(context.ContextOuterClass.ContextId.Builder builderForValue) {
                if (contextIdBuilder_ == null) {
                    contextId_ = builderForValue.build();
                } else {
                    contextIdBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.ContextId context_id = 1;</code>
             */
            public Builder mergeContextId(context.ContextOuterClass.ContextId value) {
                if (contextIdBuilder_ == null) {
                    if (((bitField0_ & 0x00000001) != 0) && contextId_ != null && contextId_ != context.ContextOuterClass.ContextId.getDefaultInstance()) {
                        getContextIdBuilder().mergeFrom(value);
                    } else {
                        contextId_ = value;
                    }
                } else {
                    contextIdBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.ContextId context_id = 1;</code>
             */
            public Builder clearContextId() {
                bitField0_ = (bitField0_ & ~0x00000001);
                contextId_ = null;
                if (contextIdBuilder_ != null) {
                    contextIdBuilder_.dispose();
                    contextIdBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.ContextId context_id = 1;</code>
             */
            public context.ContextOuterClass.ContextId.Builder getContextIdBuilder() {
                bitField0_ |= 0x00000001;
                onChanged();
                return getContextIdFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.ContextId context_id = 1;</code>
             */
            public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
                if (contextIdBuilder_ != null) {
                    return contextIdBuilder_.getMessageOrBuilder();
                } else {
                    return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
                }
            }

            /**
             * <code>.context.ContextId context_id = 1;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> getContextIdFieldBuilder() {
                if (contextIdBuilder_ == null) {
                    contextIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder>(getContextId(), getParentForChildren(), isClean());
                    contextId_ = null;
                }
                return contextIdBuilder_;
            }

            private java.lang.Object ipAddress_ = "";

            /**
             * <code>string ip_address = 2;</code>
             * @return The ipAddress.
             */
            public java.lang.String getIpAddress() {
                java.lang.Object ref = ipAddress_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    ipAddress_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }

            /**
             * <code>string ip_address = 2;</code>
             * @return The bytes for ipAddress.
             */
            public com.google.protobuf.ByteString getIpAddressBytes() {
                java.lang.Object ref = ipAddress_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                    ipAddress_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }

            /**
             * <code>string ip_address = 2;</code>
             * @param value The ipAddress to set.
             * @return This builder for chaining.
             */
            public Builder setIpAddress(java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                ipAddress_ = value;
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>string ip_address = 2;</code>
             * @return This builder for chaining.
             */
            public Builder clearIpAddress() {
                ipAddress_ = getDefaultInstance().getIpAddress();
                bitField0_ = (bitField0_ & ~0x00000002);
                onChanged();
                return this;
            }

            /**
             * <code>string ip_address = 2;</code>
             * @param value The bytes for ipAddress to set.
             * @return This builder for chaining.
             */
            public Builder setIpAddressBytes(com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);
                ipAddress_ = value;
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            private int port_;

            /**
             * <code>uint32 port = 3;</code>
             * @return The port.
             */
            @java.lang.Override
            public int getPort() {
                return port_;
            }

            /**
             * <code>uint32 port = 3;</code>
             * @param value The port to set.
             * @return This builder for chaining.
             */
            public Builder setPort(int value) {
                port_ = value;
                bitField0_ |= 0x00000004;
                onChanged();
                return this;
            }

            /**
             * <code>uint32 port = 3;</code>
             * @return This builder for chaining.
             */
            public Builder clearPort() {
                bitField0_ = (bitField0_ & ~0x00000004);
                port_ = 0;
                onChanged();
                return this;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.TeraFlowController)
        }

        // @@protoc_insertion_point(class_scope:context.TeraFlowController)
        private static final context.ContextOuterClass.TeraFlowController DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.TeraFlowController();
        }

        public static context.ContextOuterClass.TeraFlowController getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<TeraFlowController> PARSER = new com.google.protobuf.AbstractParser<TeraFlowController>() {

            @java.lang.Override
            public TeraFlowController parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<TeraFlowController> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<TeraFlowController> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.TeraFlowController getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface AuthenticationResultOrBuilder extends // @@protoc_insertion_point(interface_extends:context.AuthenticationResult)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>.context.ContextId context_id = 1;</code>
         * @return Whether the contextId field is set.
         */
        boolean hasContextId();

        /**
         * <code>.context.ContextId context_id = 1;</code>
         * @return The contextId.
         */
        context.ContextOuterClass.ContextId getContextId();

        /**
         * <code>.context.ContextId context_id = 1;</code>
         */
        context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder();

        /**
         * <code>bool authenticated = 2;</code>
         * @return The authenticated.
         */
        boolean getAuthenticated();
    }

    /**
     * Protobuf type {@code context.AuthenticationResult}
     */
    public static final class AuthenticationResult extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.AuthenticationResult)
    AuthenticationResultOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use AuthenticationResult.newBuilder() to construct.
        private AuthenticationResult(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private AuthenticationResult() {
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new AuthenticationResult();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_AuthenticationResult_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_AuthenticationResult_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.AuthenticationResult.class, context.ContextOuterClass.AuthenticationResult.Builder.class);
        }

        public static final int CONTEXT_ID_FIELD_NUMBER = 1;

        private context.ContextOuterClass.ContextId contextId_;

        /**
         * <code>.context.ContextId context_id = 1;</code>
         * @return Whether the contextId field is set.
         */
        @java.lang.Override
        public boolean hasContextId() {
            return contextId_ != null;
        }

        /**
         * <code>.context.ContextId context_id = 1;</code>
         * @return The contextId.
         */
        @java.lang.Override
        public context.ContextOuterClass.ContextId getContextId() {
            return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
        }

        /**
         * <code>.context.ContextId context_id = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
            return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
        }

        public static final int AUTHENTICATED_FIELD_NUMBER = 2;

        private boolean authenticated_ = false;

        /**
         * <code>bool authenticated = 2;</code>
         * @return The authenticated.
         */
        @java.lang.Override
        public boolean getAuthenticated() {
            return authenticated_;
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            if (contextId_ != null) {
                output.writeMessage(1, getContextId());
            }
            if (authenticated_ != false) {
                output.writeBool(2, authenticated_);
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            if (contextId_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getContextId());
            }
            if (authenticated_ != false) {
                size += com.google.protobuf.CodedOutputStream.computeBoolSize(2, authenticated_);
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.AuthenticationResult)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.AuthenticationResult other = (context.ContextOuterClass.AuthenticationResult) obj;
            if (hasContextId() != other.hasContextId())
                return false;
            if (hasContextId()) {
                if (!getContextId().equals(other.getContextId()))
                    return false;
            }
            if (getAuthenticated() != other.getAuthenticated())
                return false;
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            if (hasContextId()) {
                hash = (37 * hash) + CONTEXT_ID_FIELD_NUMBER;
                hash = (53 * hash) + getContextId().hashCode();
            }
            hash = (37 * hash) + AUTHENTICATED_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getAuthenticated());
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.AuthenticationResult parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.AuthenticationResult parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.AuthenticationResult parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.AuthenticationResult parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.AuthenticationResult parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.AuthenticationResult parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.AuthenticationResult parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.AuthenticationResult parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.AuthenticationResult parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.AuthenticationResult parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.AuthenticationResult parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.AuthenticationResult parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.AuthenticationResult prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code context.AuthenticationResult}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.AuthenticationResult)
        context.ContextOuterClass.AuthenticationResultOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_AuthenticationResult_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_AuthenticationResult_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.AuthenticationResult.class, context.ContextOuterClass.AuthenticationResult.Builder.class);
            }

            // Construct using context.ContextOuterClass.AuthenticationResult.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                contextId_ = null;
                if (contextIdBuilder_ != null) {
                    contextIdBuilder_.dispose();
                    contextIdBuilder_ = null;
                }
                authenticated_ = false;
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_AuthenticationResult_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.AuthenticationResult getDefaultInstanceForType() {
                return context.ContextOuterClass.AuthenticationResult.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.AuthenticationResult build() {
                context.ContextOuterClass.AuthenticationResult result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.AuthenticationResult buildPartial() {
                context.ContextOuterClass.AuthenticationResult result = new context.ContextOuterClass.AuthenticationResult(this);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartial0(context.ContextOuterClass.AuthenticationResult result) {
                int from_bitField0_ = bitField0_;
                if (((from_bitField0_ & 0x00000001) != 0)) {
                    result.contextId_ = contextIdBuilder_ == null ? contextId_ : contextIdBuilder_.build();
                }
                if (((from_bitField0_ & 0x00000002) != 0)) {
                    result.authenticated_ = authenticated_;
                }
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.AuthenticationResult) {
                    return mergeFrom((context.ContextOuterClass.AuthenticationResult) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.AuthenticationResult other) {
                if (other == context.ContextOuterClass.AuthenticationResult.getDefaultInstance())
                    return this;
                if (other.hasContextId()) {
                    mergeContextId(other.getContextId());
                }
                if (other.getAuthenticated() != false) {
                    setAuthenticated(other.getAuthenticated());
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 10:
                                {
                                    input.readMessage(getContextIdFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000001;
                                    break;
                                }
                            // case 10
                            case 16:
                                {
                                    authenticated_ = input.readBool();
                                    bitField0_ |= 0x00000002;
                                    break;
                                }
                            // case 16
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private context.ContextOuterClass.ContextId contextId_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> contextIdBuilder_;

            /**
             * <code>.context.ContextId context_id = 1;</code>
             * @return Whether the contextId field is set.
             */
            public boolean hasContextId() {
                return ((bitField0_ & 0x00000001) != 0);
            }

            /**
             * <code>.context.ContextId context_id = 1;</code>
             * @return The contextId.
             */
            public context.ContextOuterClass.ContextId getContextId() {
                if (contextIdBuilder_ == null) {
                    return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
                } else {
                    return contextIdBuilder_.getMessage();
                }
            }

            /**
             * <code>.context.ContextId context_id = 1;</code>
             */
            public Builder setContextId(context.ContextOuterClass.ContextId value) {
                if (contextIdBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    contextId_ = value;
                } else {
                    contextIdBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.ContextId context_id = 1;</code>
             */
            public Builder setContextId(context.ContextOuterClass.ContextId.Builder builderForValue) {
                if (contextIdBuilder_ == null) {
                    contextId_ = builderForValue.build();
                } else {
                    contextIdBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.ContextId context_id = 1;</code>
             */
            public Builder mergeContextId(context.ContextOuterClass.ContextId value) {
                if (contextIdBuilder_ == null) {
                    if (((bitField0_ & 0x00000001) != 0) && contextId_ != null && contextId_ != context.ContextOuterClass.ContextId.getDefaultInstance()) {
                        getContextIdBuilder().mergeFrom(value);
                    } else {
                        contextId_ = value;
                    }
                } else {
                    contextIdBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.ContextId context_id = 1;</code>
             */
            public Builder clearContextId() {
                bitField0_ = (bitField0_ & ~0x00000001);
                contextId_ = null;
                if (contextIdBuilder_ != null) {
                    contextIdBuilder_.dispose();
                    contextIdBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.ContextId context_id = 1;</code>
             */
            public context.ContextOuterClass.ContextId.Builder getContextIdBuilder() {
                bitField0_ |= 0x00000001;
                onChanged();
                return getContextIdFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.ContextId context_id = 1;</code>
             */
            public context.ContextOuterClass.ContextIdOrBuilder getContextIdOrBuilder() {
                if (contextIdBuilder_ != null) {
                    return contextIdBuilder_.getMessageOrBuilder();
                } else {
                    return contextId_ == null ? context.ContextOuterClass.ContextId.getDefaultInstance() : contextId_;
                }
            }

            /**
             * <code>.context.ContextId context_id = 1;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder> getContextIdFieldBuilder() {
                if (contextIdBuilder_ == null) {
                    contextIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ContextId, context.ContextOuterClass.ContextId.Builder, context.ContextOuterClass.ContextIdOrBuilder>(getContextId(), getParentForChildren(), isClean());
                    contextId_ = null;
                }
                return contextIdBuilder_;
            }

            private boolean authenticated_;

            /**
             * <code>bool authenticated = 2;</code>
             * @return The authenticated.
             */
            @java.lang.Override
            public boolean getAuthenticated() {
                return authenticated_;
            }

            /**
             * <code>bool authenticated = 2;</code>
             * @param value The authenticated to set.
             * @return This builder for chaining.
             */
            public Builder setAuthenticated(boolean value) {
                authenticated_ = value;
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>bool authenticated = 2;</code>
             * @return This builder for chaining.
             */
            public Builder clearAuthenticated() {
                bitField0_ = (bitField0_ & ~0x00000002);
                authenticated_ = false;
                onChanged();
                return this;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.AuthenticationResult)
        }

        // @@protoc_insertion_point(class_scope:context.AuthenticationResult)
        private static final context.ContextOuterClass.AuthenticationResult DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.AuthenticationResult();
        }

        public static context.ContextOuterClass.AuthenticationResult getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<AuthenticationResult> PARSER = new com.google.protobuf.AbstractParser<AuthenticationResult>() {

            @java.lang.Override
            public AuthenticationResult parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<AuthenticationResult> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<AuthenticationResult> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.AuthenticationResult getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface OpticalConfigIdOrBuilder extends // @@protoc_insertion_point(interface_extends:context.OpticalConfigId)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>string opticalconfig_uuid = 1;</code>
         * @return The opticalconfigUuid.
         */
        java.lang.String getOpticalconfigUuid();

        /**
         * <code>string opticalconfig_uuid = 1;</code>
         * @return The bytes for opticalconfigUuid.
         */
        com.google.protobuf.ByteString getOpticalconfigUuidBytes();
    }

    /**
     * <pre>
     * ---------------- Experimental ------------------------
     * </pre>
     *
     * Protobuf type {@code context.OpticalConfigId}
     */
    public static final class OpticalConfigId extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.OpticalConfigId)
    OpticalConfigIdOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use OpticalConfigId.newBuilder() to construct.
        private OpticalConfigId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private OpticalConfigId() {
            opticalconfigUuid_ = "";
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new OpticalConfigId();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_OpticalConfigId_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_OpticalConfigId_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalConfigId.class, context.ContextOuterClass.OpticalConfigId.Builder.class);
        }

        public static final int OPTICALCONFIG_UUID_FIELD_NUMBER = 1;

        @SuppressWarnings("serial")
        private volatile java.lang.Object opticalconfigUuid_ = "";

        /**
         * <code>string opticalconfig_uuid = 1;</code>
         * @return The opticalconfigUuid.
         */
        @java.lang.Override
        public java.lang.String getOpticalconfigUuid() {
            java.lang.Object ref = opticalconfigUuid_;
            if (ref instanceof java.lang.String) {
                return (java.lang.String) ref;
            } else {
                com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                java.lang.String s = bs.toStringUtf8();
                opticalconfigUuid_ = s;
                return s;
            }
        }

        /**
         * <code>string opticalconfig_uuid = 1;</code>
         * @return The bytes for opticalconfigUuid.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString getOpticalconfigUuidBytes() {
            java.lang.Object ref = opticalconfigUuid_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                opticalconfigUuid_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(opticalconfigUuid_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 1, opticalconfigUuid_);
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(opticalconfigUuid_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, opticalconfigUuid_);
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.OpticalConfigId)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.OpticalConfigId other = (context.ContextOuterClass.OpticalConfigId) obj;
            if (!getOpticalconfigUuid().equals(other.getOpticalconfigUuid()))
                return false;
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            hash = (37 * hash) + OPTICALCONFIG_UUID_FIELD_NUMBER;
            hash = (53 * hash) + getOpticalconfigUuid().hashCode();
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.OpticalConfigId parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.OpticalConfigId parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.OpticalConfigId parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.OpticalConfigId parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.OpticalConfigId parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.OpticalConfigId parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.OpticalConfigId parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.OpticalConfigId parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.OpticalConfigId parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.OpticalConfigId parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.OpticalConfigId parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.OpticalConfigId parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.OpticalConfigId prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * <pre>
         * ---------------- Experimental ------------------------
         * </pre>
         *
         * Protobuf type {@code context.OpticalConfigId}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.OpticalConfigId)
        context.ContextOuterClass.OpticalConfigIdOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_OpticalConfigId_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_OpticalConfigId_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalConfigId.class, context.ContextOuterClass.OpticalConfigId.Builder.class);
            }

            // Construct using context.ContextOuterClass.OpticalConfigId.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                opticalconfigUuid_ = "";
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_OpticalConfigId_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.OpticalConfigId getDefaultInstanceForType() {
                return context.ContextOuterClass.OpticalConfigId.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.OpticalConfigId build() {
                context.ContextOuterClass.OpticalConfigId result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.OpticalConfigId buildPartial() {
                context.ContextOuterClass.OpticalConfigId result = new context.ContextOuterClass.OpticalConfigId(this);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartial0(context.ContextOuterClass.OpticalConfigId result) {
                int from_bitField0_ = bitField0_;
                if (((from_bitField0_ & 0x00000001) != 0)) {
                    result.opticalconfigUuid_ = opticalconfigUuid_;
                }
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.OpticalConfigId) {
                    return mergeFrom((context.ContextOuterClass.OpticalConfigId) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.OpticalConfigId other) {
                if (other == context.ContextOuterClass.OpticalConfigId.getDefaultInstance())
                    return this;
                if (!other.getOpticalconfigUuid().isEmpty()) {
                    opticalconfigUuid_ = other.opticalconfigUuid_;
                    bitField0_ |= 0x00000001;
                    onChanged();
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 10:
                                {
                                    opticalconfigUuid_ = input.readStringRequireUtf8();
                                    bitField0_ |= 0x00000001;
                                    break;
                                }
                            // case 10
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private java.lang.Object opticalconfigUuid_ = "";

            /**
             * <code>string opticalconfig_uuid = 1;</code>
             * @return The opticalconfigUuid.
             */
            public java.lang.String getOpticalconfigUuid() {
                java.lang.Object ref = opticalconfigUuid_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    opticalconfigUuid_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }

            /**
             * <code>string opticalconfig_uuid = 1;</code>
             * @return The bytes for opticalconfigUuid.
             */
            public com.google.protobuf.ByteString getOpticalconfigUuidBytes() {
                java.lang.Object ref = opticalconfigUuid_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                    opticalconfigUuid_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }

            /**
             * <code>string opticalconfig_uuid = 1;</code>
             * @param value The opticalconfigUuid to set.
             * @return This builder for chaining.
             */
            public Builder setOpticalconfigUuid(java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                opticalconfigUuid_ = value;
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>string opticalconfig_uuid = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearOpticalconfigUuid() {
                opticalconfigUuid_ = getDefaultInstance().getOpticalconfigUuid();
                bitField0_ = (bitField0_ & ~0x00000001);
                onChanged();
                return this;
            }

            /**
             * <code>string opticalconfig_uuid = 1;</code>
             * @param value The bytes for opticalconfigUuid to set.
             * @return This builder for chaining.
             */
            public Builder setOpticalconfigUuidBytes(com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);
                opticalconfigUuid_ = value;
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.OpticalConfigId)
        }

        // @@protoc_insertion_point(class_scope:context.OpticalConfigId)
        private static final context.ContextOuterClass.OpticalConfigId DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.OpticalConfigId();
        }

        public static context.ContextOuterClass.OpticalConfigId getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<OpticalConfigId> PARSER = new com.google.protobuf.AbstractParser<OpticalConfigId>() {

            @java.lang.Override
            public OpticalConfigId parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<OpticalConfigId> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<OpticalConfigId> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.OpticalConfigId getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface OpticalConfigOrBuilder extends // @@protoc_insertion_point(interface_extends:context.OpticalConfig)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>.context.OpticalConfigId opticalconfig_id = 1;</code>
         * @return Whether the opticalconfigId field is set.
         */
        boolean hasOpticalconfigId();

        /**
         * <code>.context.OpticalConfigId opticalconfig_id = 1;</code>
         * @return The opticalconfigId.
         */
        context.ContextOuterClass.OpticalConfigId getOpticalconfigId();

        /**
         * <code>.context.OpticalConfigId opticalconfig_id = 1;</code>
         */
        context.ContextOuterClass.OpticalConfigIdOrBuilder getOpticalconfigIdOrBuilder();

        /**
         * <code>string config = 2;</code>
         * @return The config.
         */
        java.lang.String getConfig();

        /**
         * <code>string config = 2;</code>
         * @return The bytes for config.
         */
        com.google.protobuf.ByteString getConfigBytes();

        /**
         * <code>.context.DeviceId device_id = 3;</code>
         * @return Whether the deviceId field is set.
         */
        boolean hasDeviceId();

        /**
         * <code>.context.DeviceId device_id = 3;</code>
         * @return The deviceId.
         */
        context.ContextOuterClass.DeviceId getDeviceId();

        /**
         * <code>.context.DeviceId device_id = 3;</code>
         */
        context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder();
    }

    /**
     * Protobuf type {@code context.OpticalConfig}
     */
    public static final class OpticalConfig extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.OpticalConfig)
    OpticalConfigOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use OpticalConfig.newBuilder() to construct.
        private OpticalConfig(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private OpticalConfig() {
            config_ = "";
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new OpticalConfig();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_OpticalConfig_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_OpticalConfig_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalConfig.class, context.ContextOuterClass.OpticalConfig.Builder.class);
        }

        public static final int OPTICALCONFIG_ID_FIELD_NUMBER = 1;

        private context.ContextOuterClass.OpticalConfigId opticalconfigId_;

        /**
         * <code>.context.OpticalConfigId opticalconfig_id = 1;</code>
         * @return Whether the opticalconfigId field is set.
         */
        @java.lang.Override
        public boolean hasOpticalconfigId() {
            return opticalconfigId_ != null;
        }

        /**
         * <code>.context.OpticalConfigId opticalconfig_id = 1;</code>
         * @return The opticalconfigId.
         */
        @java.lang.Override
        public context.ContextOuterClass.OpticalConfigId getOpticalconfigId() {
            return opticalconfigId_ == null ? context.ContextOuterClass.OpticalConfigId.getDefaultInstance() : opticalconfigId_;
        }

        /**
         * <code>.context.OpticalConfigId opticalconfig_id = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.OpticalConfigIdOrBuilder getOpticalconfigIdOrBuilder() {
            return opticalconfigId_ == null ? context.ContextOuterClass.OpticalConfigId.getDefaultInstance() : opticalconfigId_;
        }

        public static final int CONFIG_FIELD_NUMBER = 2;

        @SuppressWarnings("serial")
        private volatile java.lang.Object config_ = "";

        /**
         * <code>string config = 2;</code>
         * @return The config.
         */
        @java.lang.Override
        public java.lang.String getConfig() {
            java.lang.Object ref = config_;
            if (ref instanceof java.lang.String) {
                return (java.lang.String) ref;
            } else {
                com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                java.lang.String s = bs.toStringUtf8();
                config_ = s;
                return s;
            }
        }

        /**
         * <code>string config = 2;</code>
         * @return The bytes for config.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString getConfigBytes() {
            java.lang.Object ref = config_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                config_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int DEVICE_ID_FIELD_NUMBER = 3;

        private context.ContextOuterClass.DeviceId deviceId_;

        /**
         * <code>.context.DeviceId device_id = 3;</code>
         * @return Whether the deviceId field is set.
         */
        @java.lang.Override
        public boolean hasDeviceId() {
            return deviceId_ != null;
        }

        /**
         * <code>.context.DeviceId device_id = 3;</code>
         * @return The deviceId.
         */
        @java.lang.Override
        public context.ContextOuterClass.DeviceId getDeviceId() {
            return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
        }

        /**
         * <code>.context.DeviceId device_id = 3;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder() {
            return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            if (opticalconfigId_ != null) {
                output.writeMessage(1, getOpticalconfigId());
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(config_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 2, config_);
            }
            if (deviceId_ != null) {
                output.writeMessage(3, getDeviceId());
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            if (opticalconfigId_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getOpticalconfigId());
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(config_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, config_);
            }
            if (deviceId_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, getDeviceId());
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.OpticalConfig)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.OpticalConfig other = (context.ContextOuterClass.OpticalConfig) obj;
            if (hasOpticalconfigId() != other.hasOpticalconfigId())
                return false;
            if (hasOpticalconfigId()) {
                if (!getOpticalconfigId().equals(other.getOpticalconfigId()))
                    return false;
            }
            if (!getConfig().equals(other.getConfig()))
                return false;
            if (hasDeviceId() != other.hasDeviceId())
                return false;
            if (hasDeviceId()) {
                if (!getDeviceId().equals(other.getDeviceId()))
                    return false;
            }
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            if (hasOpticalconfigId()) {
                hash = (37 * hash) + OPTICALCONFIG_ID_FIELD_NUMBER;
                hash = (53 * hash) + getOpticalconfigId().hashCode();
            }
            hash = (37 * hash) + CONFIG_FIELD_NUMBER;
            hash = (53 * hash) + getConfig().hashCode();
            if (hasDeviceId()) {
                hash = (37 * hash) + DEVICE_ID_FIELD_NUMBER;
                hash = (53 * hash) + getDeviceId().hashCode();
            }
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.OpticalConfig parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.OpticalConfig parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.OpticalConfig parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.OpticalConfig parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.OpticalConfig parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.OpticalConfig parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.OpticalConfig parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.OpticalConfig parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.OpticalConfig parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.OpticalConfig parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.OpticalConfig parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.OpticalConfig parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.OpticalConfig prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code context.OpticalConfig}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.OpticalConfig)
        context.ContextOuterClass.OpticalConfigOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_OpticalConfig_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_OpticalConfig_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalConfig.class, context.ContextOuterClass.OpticalConfig.Builder.class);
            }

            // Construct using context.ContextOuterClass.OpticalConfig.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                opticalconfigId_ = null;
                if (opticalconfigIdBuilder_ != null) {
                    opticalconfigIdBuilder_.dispose();
                    opticalconfigIdBuilder_ = null;
                }
                config_ = "";
                deviceId_ = null;
                if (deviceIdBuilder_ != null) {
                    deviceIdBuilder_.dispose();
                    deviceIdBuilder_ = null;
                }
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_OpticalConfig_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.OpticalConfig getDefaultInstanceForType() {
                return context.ContextOuterClass.OpticalConfig.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.OpticalConfig build() {
                context.ContextOuterClass.OpticalConfig result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.OpticalConfig buildPartial() {
                context.ContextOuterClass.OpticalConfig result = new context.ContextOuterClass.OpticalConfig(this);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartial0(context.ContextOuterClass.OpticalConfig result) {
                int from_bitField0_ = bitField0_;
                if (((from_bitField0_ & 0x00000001) != 0)) {
                    result.opticalconfigId_ = opticalconfigIdBuilder_ == null ? opticalconfigId_ : opticalconfigIdBuilder_.build();
                }
                if (((from_bitField0_ & 0x00000002) != 0)) {
                    result.config_ = config_;
                }
                if (((from_bitField0_ & 0x00000004) != 0)) {
                    result.deviceId_ = deviceIdBuilder_ == null ? deviceId_ : deviceIdBuilder_.build();
                }
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.OpticalConfig) {
                    return mergeFrom((context.ContextOuterClass.OpticalConfig) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.OpticalConfig other) {
                if (other == context.ContextOuterClass.OpticalConfig.getDefaultInstance())
                    return this;
                if (other.hasOpticalconfigId()) {
                    mergeOpticalconfigId(other.getOpticalconfigId());
                }
                if (!other.getConfig().isEmpty()) {
                    config_ = other.config_;
                    bitField0_ |= 0x00000002;
                    onChanged();
                }
                if (other.hasDeviceId()) {
                    mergeDeviceId(other.getDeviceId());
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 10:
                                {
                                    input.readMessage(getOpticalconfigIdFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000001;
                                    break;
                                }
                            // case 10
                            case 18:
                                {
                                    config_ = input.readStringRequireUtf8();
                                    bitField0_ |= 0x00000002;
                                    break;
                                }
                            // case 18
                            case 26:
                                {
                                    input.readMessage(getDeviceIdFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000004;
                                    break;
                                }
                            // case 26
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private context.ContextOuterClass.OpticalConfigId opticalconfigId_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.OpticalConfigId, context.ContextOuterClass.OpticalConfigId.Builder, context.ContextOuterClass.OpticalConfigIdOrBuilder> opticalconfigIdBuilder_;

            /**
             * <code>.context.OpticalConfigId opticalconfig_id = 1;</code>
             * @return Whether the opticalconfigId field is set.
             */
            public boolean hasOpticalconfigId() {
                return ((bitField0_ & 0x00000001) != 0);
            }

            /**
             * <code>.context.OpticalConfigId opticalconfig_id = 1;</code>
             * @return The opticalconfigId.
             */
            public context.ContextOuterClass.OpticalConfigId getOpticalconfigId() {
                if (opticalconfigIdBuilder_ == null) {
                    return opticalconfigId_ == null ? context.ContextOuterClass.OpticalConfigId.getDefaultInstance() : opticalconfigId_;
                } else {
                    return opticalconfigIdBuilder_.getMessage();
                }
            }

            /**
             * <code>.context.OpticalConfigId opticalconfig_id = 1;</code>
             */
            public Builder setOpticalconfigId(context.ContextOuterClass.OpticalConfigId value) {
                if (opticalconfigIdBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    opticalconfigId_ = value;
                } else {
                    opticalconfigIdBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.OpticalConfigId opticalconfig_id = 1;</code>
             */
            public Builder setOpticalconfigId(context.ContextOuterClass.OpticalConfigId.Builder builderForValue) {
                if (opticalconfigIdBuilder_ == null) {
                    opticalconfigId_ = builderForValue.build();
                } else {
                    opticalconfigIdBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.OpticalConfigId opticalconfig_id = 1;</code>
             */
            public Builder mergeOpticalconfigId(context.ContextOuterClass.OpticalConfigId value) {
                if (opticalconfigIdBuilder_ == null) {
                    if (((bitField0_ & 0x00000001) != 0) && opticalconfigId_ != null && opticalconfigId_ != context.ContextOuterClass.OpticalConfigId.getDefaultInstance()) {
                        getOpticalconfigIdBuilder().mergeFrom(value);
                    } else {
                        opticalconfigId_ = value;
                    }
                } else {
                    opticalconfigIdBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.OpticalConfigId opticalconfig_id = 1;</code>
             */
            public Builder clearOpticalconfigId() {
                bitField0_ = (bitField0_ & ~0x00000001);
                opticalconfigId_ = null;
                if (opticalconfigIdBuilder_ != null) {
                    opticalconfigIdBuilder_.dispose();
                    opticalconfigIdBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.OpticalConfigId opticalconfig_id = 1;</code>
             */
            public context.ContextOuterClass.OpticalConfigId.Builder getOpticalconfigIdBuilder() {
                bitField0_ |= 0x00000001;
                onChanged();
                return getOpticalconfigIdFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.OpticalConfigId opticalconfig_id = 1;</code>
             */
            public context.ContextOuterClass.OpticalConfigIdOrBuilder getOpticalconfigIdOrBuilder() {
                if (opticalconfigIdBuilder_ != null) {
                    return opticalconfigIdBuilder_.getMessageOrBuilder();
                } else {
                    return opticalconfigId_ == null ? context.ContextOuterClass.OpticalConfigId.getDefaultInstance() : opticalconfigId_;
                }
            }

            /**
             * <code>.context.OpticalConfigId opticalconfig_id = 1;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.OpticalConfigId, context.ContextOuterClass.OpticalConfigId.Builder, context.ContextOuterClass.OpticalConfigIdOrBuilder> getOpticalconfigIdFieldBuilder() {
                if (opticalconfigIdBuilder_ == null) {
                    opticalconfigIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.OpticalConfigId, context.ContextOuterClass.OpticalConfigId.Builder, context.ContextOuterClass.OpticalConfigIdOrBuilder>(getOpticalconfigId(), getParentForChildren(), isClean());
                    opticalconfigId_ = null;
                }
                return opticalconfigIdBuilder_;
            }

            private java.lang.Object config_ = "";

            /**
             * <code>string config = 2;</code>
             * @return The config.
             */
            public java.lang.String getConfig() {
                java.lang.Object ref = config_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    config_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }

            /**
             * <code>string config = 2;</code>
             * @return The bytes for config.
             */
            public com.google.protobuf.ByteString getConfigBytes() {
                java.lang.Object ref = config_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                    config_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }

            /**
             * <code>string config = 2;</code>
             * @param value The config to set.
             * @return This builder for chaining.
             */
            public Builder setConfig(java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                config_ = value;
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>string config = 2;</code>
             * @return This builder for chaining.
             */
            public Builder clearConfig() {
                config_ = getDefaultInstance().getConfig();
                bitField0_ = (bitField0_ & ~0x00000002);
                onChanged();
                return this;
            }

            /**
             * <code>string config = 2;</code>
             * @param value The bytes for config to set.
             * @return This builder for chaining.
             */
            public Builder setConfigBytes(com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);
                config_ = value;
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            private context.ContextOuterClass.DeviceId deviceId_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> deviceIdBuilder_;

            /**
             * <code>.context.DeviceId device_id = 3;</code>
             * @return Whether the deviceId field is set.
             */
            public boolean hasDeviceId() {
                return ((bitField0_ & 0x00000004) != 0);
            }

            /**
             * <code>.context.DeviceId device_id = 3;</code>
             * @return The deviceId.
             */
            public context.ContextOuterClass.DeviceId getDeviceId() {
                if (deviceIdBuilder_ == null) {
                    return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
                } else {
                    return deviceIdBuilder_.getMessage();
                }
            }

            /**
             * <code>.context.DeviceId device_id = 3;</code>
             */
            public Builder setDeviceId(context.ContextOuterClass.DeviceId value) {
                if (deviceIdBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    deviceId_ = value;
                } else {
                    deviceIdBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000004;
                onChanged();
                return this;
            }

            /**
             * <code>.context.DeviceId device_id = 3;</code>
             */
            public Builder setDeviceId(context.ContextOuterClass.DeviceId.Builder builderForValue) {
                if (deviceIdBuilder_ == null) {
                    deviceId_ = builderForValue.build();
                } else {
                    deviceIdBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000004;
                onChanged();
                return this;
            }

            /**
             * <code>.context.DeviceId device_id = 3;</code>
             */
            public Builder mergeDeviceId(context.ContextOuterClass.DeviceId value) {
                if (deviceIdBuilder_ == null) {
                    if (((bitField0_ & 0x00000004) != 0) && deviceId_ != null && deviceId_ != context.ContextOuterClass.DeviceId.getDefaultInstance()) {
                        getDeviceIdBuilder().mergeFrom(value);
                    } else {
                        deviceId_ = value;
                    }
                } else {
                    deviceIdBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000004;
                onChanged();
                return this;
            }

            /**
             * <code>.context.DeviceId device_id = 3;</code>
             */
            public Builder clearDeviceId() {
                bitField0_ = (bitField0_ & ~0x00000004);
                deviceId_ = null;
                if (deviceIdBuilder_ != null) {
                    deviceIdBuilder_.dispose();
                    deviceIdBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.DeviceId device_id = 3;</code>
             */
            public context.ContextOuterClass.DeviceId.Builder getDeviceIdBuilder() {
                bitField0_ |= 0x00000004;
                onChanged();
                return getDeviceIdFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.DeviceId device_id = 3;</code>
             */
            public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder() {
                if (deviceIdBuilder_ != null) {
                    return deviceIdBuilder_.getMessageOrBuilder();
                } else {
                    return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
                }
            }

            /**
             * <code>.context.DeviceId device_id = 3;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> getDeviceIdFieldBuilder() {
                if (deviceIdBuilder_ == null) {
                    deviceIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder>(getDeviceId(), getParentForChildren(), isClean());
                    deviceId_ = null;
                }
                return deviceIdBuilder_;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.OpticalConfig)
        }

        // @@protoc_insertion_point(class_scope:context.OpticalConfig)
        private static final context.ContextOuterClass.OpticalConfig DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.OpticalConfig();
        }

        public static context.ContextOuterClass.OpticalConfig getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<OpticalConfig> PARSER = new com.google.protobuf.AbstractParser<OpticalConfig>() {

            @java.lang.Override
            public OpticalConfig parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<OpticalConfig> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<OpticalConfig> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.OpticalConfig getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface OpticalConfigListOrBuilder extends // @@protoc_insertion_point(interface_extends:context.OpticalConfigList)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
         */
        java.util.List<context.ContextOuterClass.OpticalConfig> getOpticalconfigsList();

        /**
         * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
         */
        context.ContextOuterClass.OpticalConfig getOpticalconfigs(int index);

        /**
         * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
         */
        int getOpticalconfigsCount();

        /**
         * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
         */
        java.util.List<? extends context.ContextOuterClass.OpticalConfigOrBuilder> getOpticalconfigsOrBuilderList();

        /**
         * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
         */
        context.ContextOuterClass.OpticalConfigOrBuilder getOpticalconfigsOrBuilder(int index);
    }

    /**
     * Protobuf type {@code context.OpticalConfigList}
     */
    public static final class OpticalConfigList extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.OpticalConfigList)
    OpticalConfigListOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use OpticalConfigList.newBuilder() to construct.
        private OpticalConfigList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private OpticalConfigList() {
            opticalconfigs_ = java.util.Collections.emptyList();
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new OpticalConfigList();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_OpticalConfigList_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_OpticalConfigList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalConfigList.class, context.ContextOuterClass.OpticalConfigList.Builder.class);
        }

        public static final int OPTICALCONFIGS_FIELD_NUMBER = 1;

        @SuppressWarnings("serial")
        private java.util.List<context.ContextOuterClass.OpticalConfig> opticalconfigs_;

        /**
         * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
         */
        @java.lang.Override
        public java.util.List<context.ContextOuterClass.OpticalConfig> getOpticalconfigsList() {
            return opticalconfigs_;
        }

        /**
         * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
         */
        @java.lang.Override
        public java.util.List<? extends context.ContextOuterClass.OpticalConfigOrBuilder> getOpticalconfigsOrBuilderList() {
            return opticalconfigs_;
        }

        /**
         * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
         */
        @java.lang.Override
        public int getOpticalconfigsCount() {
            return opticalconfigs_.size();
        }

        /**
         * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.OpticalConfig getOpticalconfigs(int index) {
            return opticalconfigs_.get(index);
        }

        /**
         * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.OpticalConfigOrBuilder getOpticalconfigsOrBuilder(int index) {
            return opticalconfigs_.get(index);
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            for (int i = 0; i < opticalconfigs_.size(); i++) {
                output.writeMessage(1, opticalconfigs_.get(i));
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            for (int i = 0; i < opticalconfigs_.size(); i++) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, opticalconfigs_.get(i));
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.OpticalConfigList)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.OpticalConfigList other = (context.ContextOuterClass.OpticalConfigList) obj;
            if (!getOpticalconfigsList().equals(other.getOpticalconfigsList()))
                return false;
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            if (getOpticalconfigsCount() > 0) {
                hash = (37 * hash) + OPTICALCONFIGS_FIELD_NUMBER;
                hash = (53 * hash) + getOpticalconfigsList().hashCode();
            }
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.OpticalConfigList parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.OpticalConfigList parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.OpticalConfigList parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.OpticalConfigList parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.OpticalConfigList parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.OpticalConfigList parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.OpticalConfigList parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.OpticalConfigList parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.OpticalConfigList parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.OpticalConfigList parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.OpticalConfigList parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.OpticalConfigList parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.OpticalConfigList prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code context.OpticalConfigList}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.OpticalConfigList)
        context.ContextOuterClass.OpticalConfigListOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_OpticalConfigList_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_OpticalConfigList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalConfigList.class, context.ContextOuterClass.OpticalConfigList.Builder.class);
            }

            // Construct using context.ContextOuterClass.OpticalConfigList.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                if (opticalconfigsBuilder_ == null) {
                    opticalconfigs_ = java.util.Collections.emptyList();
                } else {
                    opticalconfigs_ = null;
                    opticalconfigsBuilder_.clear();
                }
                bitField0_ = (bitField0_ & ~0x00000001);
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_OpticalConfigList_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.OpticalConfigList getDefaultInstanceForType() {
                return context.ContextOuterClass.OpticalConfigList.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.OpticalConfigList build() {
                context.ContextOuterClass.OpticalConfigList result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.OpticalConfigList buildPartial() {
                context.ContextOuterClass.OpticalConfigList result = new context.ContextOuterClass.OpticalConfigList(this);
                buildPartialRepeatedFields(result);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartialRepeatedFields(context.ContextOuterClass.OpticalConfigList result) {
                if (opticalconfigsBuilder_ == null) {
                    if (((bitField0_ & 0x00000001) != 0)) {
                        opticalconfigs_ = java.util.Collections.unmodifiableList(opticalconfigs_);
                        bitField0_ = (bitField0_ & ~0x00000001);
                    }
                    result.opticalconfigs_ = opticalconfigs_;
                } else {
                    result.opticalconfigs_ = opticalconfigsBuilder_.build();
                }
            }

            private void buildPartial0(context.ContextOuterClass.OpticalConfigList result) {
                int from_bitField0_ = bitField0_;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.OpticalConfigList) {
                    return mergeFrom((context.ContextOuterClass.OpticalConfigList) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.OpticalConfigList other) {
                if (other == context.ContextOuterClass.OpticalConfigList.getDefaultInstance())
                    return this;
                if (opticalconfigsBuilder_ == null) {
                    if (!other.opticalconfigs_.isEmpty()) {
                        if (opticalconfigs_.isEmpty()) {
                            opticalconfigs_ = other.opticalconfigs_;
                            bitField0_ = (bitField0_ & ~0x00000001);
                        } else {
                            ensureOpticalconfigsIsMutable();
                            opticalconfigs_.addAll(other.opticalconfigs_);
                        }
                        onChanged();
                    }
                } else {
                    if (!other.opticalconfigs_.isEmpty()) {
                        if (opticalconfigsBuilder_.isEmpty()) {
                            opticalconfigsBuilder_.dispose();
                            opticalconfigsBuilder_ = null;
                            opticalconfigs_ = other.opticalconfigs_;
                            bitField0_ = (bitField0_ & ~0x00000001);
                            opticalconfigsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getOpticalconfigsFieldBuilder() : null;
                        } else {
                            opticalconfigsBuilder_.addAllMessages(other.opticalconfigs_);
                        }
                    }
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 10:
                                {
                                    context.ContextOuterClass.OpticalConfig m = input.readMessage(context.ContextOuterClass.OpticalConfig.parser(), extensionRegistry);
                                    if (opticalconfigsBuilder_ == null) {
                                        ensureOpticalconfigsIsMutable();
                                        opticalconfigs_.add(m);
                                    } else {
                                        opticalconfigsBuilder_.addMessage(m);
                                    }
                                    break;
                                }
                            // case 10
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private java.util.List<context.ContextOuterClass.OpticalConfig> opticalconfigs_ = java.util.Collections.emptyList();

            private void ensureOpticalconfigsIsMutable() {
                if (!((bitField0_ & 0x00000001) != 0)) {
                    opticalconfigs_ = new java.util.ArrayList<context.ContextOuterClass.OpticalConfig>(opticalconfigs_);
                    bitField0_ |= 0x00000001;
                }
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.OpticalConfig, context.ContextOuterClass.OpticalConfig.Builder, context.ContextOuterClass.OpticalConfigOrBuilder> opticalconfigsBuilder_;

            /**
             * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
             */
            public java.util.List<context.ContextOuterClass.OpticalConfig> getOpticalconfigsList() {
                if (opticalconfigsBuilder_ == null) {
                    return java.util.Collections.unmodifiableList(opticalconfigs_);
                } else {
                    return opticalconfigsBuilder_.getMessageList();
                }
            }

            /**
             * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
             */
            public int getOpticalconfigsCount() {
                if (opticalconfigsBuilder_ == null) {
                    return opticalconfigs_.size();
                } else {
                    return opticalconfigsBuilder_.getCount();
                }
            }

            /**
             * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
             */
            public context.ContextOuterClass.OpticalConfig getOpticalconfigs(int index) {
                if (opticalconfigsBuilder_ == null) {
                    return opticalconfigs_.get(index);
                } else {
                    return opticalconfigsBuilder_.getMessage(index);
                }
            }

            /**
             * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
             */
            public Builder setOpticalconfigs(int index, context.ContextOuterClass.OpticalConfig value) {
                if (opticalconfigsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureOpticalconfigsIsMutable();
                    opticalconfigs_.set(index, value);
                    onChanged();
                } else {
                    opticalconfigsBuilder_.setMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
             */
            public Builder setOpticalconfigs(int index, context.ContextOuterClass.OpticalConfig.Builder builderForValue) {
                if (opticalconfigsBuilder_ == null) {
                    ensureOpticalconfigsIsMutable();
                    opticalconfigs_.set(index, builderForValue.build());
                    onChanged();
                } else {
                    opticalconfigsBuilder_.setMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
             */
            public Builder addOpticalconfigs(context.ContextOuterClass.OpticalConfig value) {
                if (opticalconfigsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureOpticalconfigsIsMutable();
                    opticalconfigs_.add(value);
                    onChanged();
                } else {
                    opticalconfigsBuilder_.addMessage(value);
                }
                return this;
            }

            /**
             * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
             */
            public Builder addOpticalconfigs(int index, context.ContextOuterClass.OpticalConfig value) {
                if (opticalconfigsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureOpticalconfigsIsMutable();
                    opticalconfigs_.add(index, value);
                    onChanged();
                } else {
                    opticalconfigsBuilder_.addMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
             */
            public Builder addOpticalconfigs(context.ContextOuterClass.OpticalConfig.Builder builderForValue) {
                if (opticalconfigsBuilder_ == null) {
                    ensureOpticalconfigsIsMutable();
                    opticalconfigs_.add(builderForValue.build());
                    onChanged();
                } else {
                    opticalconfigsBuilder_.addMessage(builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
             */
            public Builder addOpticalconfigs(int index, context.ContextOuterClass.OpticalConfig.Builder builderForValue) {
                if (opticalconfigsBuilder_ == null) {
                    ensureOpticalconfigsIsMutable();
                    opticalconfigs_.add(index, builderForValue.build());
                    onChanged();
                } else {
                    opticalconfigsBuilder_.addMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
             */
            public Builder addAllOpticalconfigs(java.lang.Iterable<? extends context.ContextOuterClass.OpticalConfig> values) {
                if (opticalconfigsBuilder_ == null) {
                    ensureOpticalconfigsIsMutable();
                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, opticalconfigs_);
                    onChanged();
                } else {
                    opticalconfigsBuilder_.addAllMessages(values);
                }
                return this;
            }

            /**
             * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
             */
            public Builder clearOpticalconfigs() {
                if (opticalconfigsBuilder_ == null) {
                    opticalconfigs_ = java.util.Collections.emptyList();
                    bitField0_ = (bitField0_ & ~0x00000001);
                    onChanged();
                } else {
                    opticalconfigsBuilder_.clear();
                }
                return this;
            }

            /**
             * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
             */
            public Builder removeOpticalconfigs(int index) {
                if (opticalconfigsBuilder_ == null) {
                    ensureOpticalconfigsIsMutable();
                    opticalconfigs_.remove(index);
                    onChanged();
                } else {
                    opticalconfigsBuilder_.remove(index);
                }
                return this;
            }

            /**
             * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
             */
            public context.ContextOuterClass.OpticalConfig.Builder getOpticalconfigsBuilder(int index) {
                return getOpticalconfigsFieldBuilder().getBuilder(index);
            }

            /**
             * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
             */
            public context.ContextOuterClass.OpticalConfigOrBuilder getOpticalconfigsOrBuilder(int index) {
                if (opticalconfigsBuilder_ == null) {
                    return opticalconfigs_.get(index);
                } else {
                    return opticalconfigsBuilder_.getMessageOrBuilder(index);
                }
            }

            /**
             * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
             */
            public java.util.List<? extends context.ContextOuterClass.OpticalConfigOrBuilder> getOpticalconfigsOrBuilderList() {
                if (opticalconfigsBuilder_ != null) {
                    return opticalconfigsBuilder_.getMessageOrBuilderList();
                } else {
                    return java.util.Collections.unmodifiableList(opticalconfigs_);
                }
            }

            /**
             * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
             */
            public context.ContextOuterClass.OpticalConfig.Builder addOpticalconfigsBuilder() {
                return getOpticalconfigsFieldBuilder().addBuilder(context.ContextOuterClass.OpticalConfig.getDefaultInstance());
            }

            /**
             * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
             */
            public context.ContextOuterClass.OpticalConfig.Builder addOpticalconfigsBuilder(int index) {
                return getOpticalconfigsFieldBuilder().addBuilder(index, context.ContextOuterClass.OpticalConfig.getDefaultInstance());
            }

            /**
             * <code>repeated .context.OpticalConfig opticalconfigs = 1;</code>
             */
            public java.util.List<context.ContextOuterClass.OpticalConfig.Builder> getOpticalconfigsBuilderList() {
                return getOpticalconfigsFieldBuilder().getBuilderList();
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.OpticalConfig, context.ContextOuterClass.OpticalConfig.Builder, context.ContextOuterClass.OpticalConfigOrBuilder> getOpticalconfigsFieldBuilder() {
                if (opticalconfigsBuilder_ == null) {
                    opticalconfigsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.OpticalConfig, context.ContextOuterClass.OpticalConfig.Builder, context.ContextOuterClass.OpticalConfigOrBuilder>(opticalconfigs_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
                    opticalconfigs_ = null;
                }
                return opticalconfigsBuilder_;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.OpticalConfigList)
        }

        // @@protoc_insertion_point(class_scope:context.OpticalConfigList)
        private static final context.ContextOuterClass.OpticalConfigList DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.OpticalConfigList();
        }

        public static context.ContextOuterClass.OpticalConfigList getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<OpticalConfigList> PARSER = new com.google.protobuf.AbstractParser<OpticalConfigList>() {

            @java.lang.Override
            public OpticalConfigList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<OpticalConfigList> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<OpticalConfigList> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.OpticalConfigList getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface OpticalConfigEventOrBuilder extends // @@protoc_insertion_point(interface_extends:context.OpticalConfigEvent)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>.context.Event event = 1;</code>
         * @return Whether the event field is set.
         */
        boolean hasEvent();

        /**
         * <code>.context.Event event = 1;</code>
         * @return The event.
         */
        context.ContextOuterClass.Event getEvent();

        /**
         * <code>.context.Event event = 1;</code>
         */
        context.ContextOuterClass.EventOrBuilder getEventOrBuilder();

        /**
         * <code>.context.OpticalConfigId opticalconfig_id = 2;</code>
         * @return Whether the opticalconfigId field is set.
         */
        boolean hasOpticalconfigId();

        /**
         * <code>.context.OpticalConfigId opticalconfig_id = 2;</code>
         * @return The opticalconfigId.
         */
        context.ContextOuterClass.OpticalConfigId getOpticalconfigId();

        /**
         * <code>.context.OpticalConfigId opticalconfig_id = 2;</code>
         */
        context.ContextOuterClass.OpticalConfigIdOrBuilder getOpticalconfigIdOrBuilder();
    }

    /**
     * Protobuf type {@code context.OpticalConfigEvent}
     */
    public static final class OpticalConfigEvent extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.OpticalConfigEvent)
    OpticalConfigEventOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use OpticalConfigEvent.newBuilder() to construct.
        private OpticalConfigEvent(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private OpticalConfigEvent() {
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new OpticalConfigEvent();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_OpticalConfigEvent_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_OpticalConfigEvent_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalConfigEvent.class, context.ContextOuterClass.OpticalConfigEvent.Builder.class);
        }

        public static final int EVENT_FIELD_NUMBER = 1;

        private context.ContextOuterClass.Event event_;

        /**
         * <code>.context.Event event = 1;</code>
         * @return Whether the event field is set.
         */
        @java.lang.Override
        public boolean hasEvent() {
            return event_ != null;
        }

        /**
         * <code>.context.Event event = 1;</code>
         * @return The event.
         */
        @java.lang.Override
        public context.ContextOuterClass.Event getEvent() {
            return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
        }

        /**
         * <code>.context.Event event = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
            return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
        }

        public static final int OPTICALCONFIG_ID_FIELD_NUMBER = 2;

        private context.ContextOuterClass.OpticalConfigId opticalconfigId_;

        /**
         * <code>.context.OpticalConfigId opticalconfig_id = 2;</code>
         * @return Whether the opticalconfigId field is set.
         */
        @java.lang.Override
        public boolean hasOpticalconfigId() {
            return opticalconfigId_ != null;
        }

        /**
         * <code>.context.OpticalConfigId opticalconfig_id = 2;</code>
         * @return The opticalconfigId.
         */
        @java.lang.Override
        public context.ContextOuterClass.OpticalConfigId getOpticalconfigId() {
            return opticalconfigId_ == null ? context.ContextOuterClass.OpticalConfigId.getDefaultInstance() : opticalconfigId_;
        }

        /**
         * <code>.context.OpticalConfigId opticalconfig_id = 2;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.OpticalConfigIdOrBuilder getOpticalconfigIdOrBuilder() {
            return opticalconfigId_ == null ? context.ContextOuterClass.OpticalConfigId.getDefaultInstance() : opticalconfigId_;
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            if (event_ != null) {
                output.writeMessage(1, getEvent());
            }
            if (opticalconfigId_ != null) {
                output.writeMessage(2, getOpticalconfigId());
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            if (event_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getEvent());
            }
            if (opticalconfigId_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getOpticalconfigId());
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.OpticalConfigEvent)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.OpticalConfigEvent other = (context.ContextOuterClass.OpticalConfigEvent) obj;
            if (hasEvent() != other.hasEvent())
                return false;
            if (hasEvent()) {
                if (!getEvent().equals(other.getEvent()))
                    return false;
            }
            if (hasOpticalconfigId() != other.hasOpticalconfigId())
                return false;
            if (hasOpticalconfigId()) {
                if (!getOpticalconfigId().equals(other.getOpticalconfigId()))
                    return false;
            }
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            if (hasEvent()) {
                hash = (37 * hash) + EVENT_FIELD_NUMBER;
                hash = (53 * hash) + getEvent().hashCode();
            }
            if (hasOpticalconfigId()) {
                hash = (37 * hash) + OPTICALCONFIG_ID_FIELD_NUMBER;
                hash = (53 * hash) + getOpticalconfigId().hashCode();
            }
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.OpticalConfigEvent parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.OpticalConfigEvent parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.OpticalConfigEvent parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.OpticalConfigEvent parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.OpticalConfigEvent parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.OpticalConfigEvent parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.OpticalConfigEvent parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.OpticalConfigEvent parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.OpticalConfigEvent parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.OpticalConfigEvent parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.OpticalConfigEvent parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.OpticalConfigEvent parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.OpticalConfigEvent prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code context.OpticalConfigEvent}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.OpticalConfigEvent)
        context.ContextOuterClass.OpticalConfigEventOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_OpticalConfigEvent_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_OpticalConfigEvent_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalConfigEvent.class, context.ContextOuterClass.OpticalConfigEvent.Builder.class);
            }

            // Construct using context.ContextOuterClass.OpticalConfigEvent.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                event_ = null;
                if (eventBuilder_ != null) {
                    eventBuilder_.dispose();
                    eventBuilder_ = null;
                }
                opticalconfigId_ = null;
                if (opticalconfigIdBuilder_ != null) {
                    opticalconfigIdBuilder_.dispose();
                    opticalconfigIdBuilder_ = null;
                }
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_OpticalConfigEvent_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.OpticalConfigEvent getDefaultInstanceForType() {
                return context.ContextOuterClass.OpticalConfigEvent.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.OpticalConfigEvent build() {
                context.ContextOuterClass.OpticalConfigEvent result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.OpticalConfigEvent buildPartial() {
                context.ContextOuterClass.OpticalConfigEvent result = new context.ContextOuterClass.OpticalConfigEvent(this);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartial0(context.ContextOuterClass.OpticalConfigEvent result) {
                int from_bitField0_ = bitField0_;
                if (((from_bitField0_ & 0x00000001) != 0)) {
                    result.event_ = eventBuilder_ == null ? event_ : eventBuilder_.build();
                }
                if (((from_bitField0_ & 0x00000002) != 0)) {
                    result.opticalconfigId_ = opticalconfigIdBuilder_ == null ? opticalconfigId_ : opticalconfigIdBuilder_.build();
                }
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.OpticalConfigEvent) {
                    return mergeFrom((context.ContextOuterClass.OpticalConfigEvent) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.OpticalConfigEvent other) {
                if (other == context.ContextOuterClass.OpticalConfigEvent.getDefaultInstance())
                    return this;
                if (other.hasEvent()) {
                    mergeEvent(other.getEvent());
                }
                if (other.hasOpticalconfigId()) {
                    mergeOpticalconfigId(other.getOpticalconfigId());
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 10:
                                {
                                    input.readMessage(getEventFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000001;
                                    break;
                                }
                            // case 10
                            case 18:
                                {
                                    input.readMessage(getOpticalconfigIdFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000002;
                                    break;
                                }
                            // case 18
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private context.ContextOuterClass.Event event_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> eventBuilder_;

            /**
             * <code>.context.Event event = 1;</code>
             * @return Whether the event field is set.
             */
            public boolean hasEvent() {
                return ((bitField0_ & 0x00000001) != 0);
            }

            /**
             * <code>.context.Event event = 1;</code>
             * @return The event.
             */
            public context.ContextOuterClass.Event getEvent() {
                if (eventBuilder_ == null) {
                    return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
                } else {
                    return eventBuilder_.getMessage();
                }
            }

            /**
             * <code>.context.Event event = 1;</code>
             */
            public Builder setEvent(context.ContextOuterClass.Event value) {
                if (eventBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    event_ = value;
                } else {
                    eventBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.Event event = 1;</code>
             */
            public Builder setEvent(context.ContextOuterClass.Event.Builder builderForValue) {
                if (eventBuilder_ == null) {
                    event_ = builderForValue.build();
                } else {
                    eventBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.Event event = 1;</code>
             */
            public Builder mergeEvent(context.ContextOuterClass.Event value) {
                if (eventBuilder_ == null) {
                    if (((bitField0_ & 0x00000001) != 0) && event_ != null && event_ != context.ContextOuterClass.Event.getDefaultInstance()) {
                        getEventBuilder().mergeFrom(value);
                    } else {
                        event_ = value;
                    }
                } else {
                    eventBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.Event event = 1;</code>
             */
            public Builder clearEvent() {
                bitField0_ = (bitField0_ & ~0x00000001);
                event_ = null;
                if (eventBuilder_ != null) {
                    eventBuilder_.dispose();
                    eventBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.Event event = 1;</code>
             */
            public context.ContextOuterClass.Event.Builder getEventBuilder() {
                bitField0_ |= 0x00000001;
                onChanged();
                return getEventFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.Event event = 1;</code>
             */
            public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
                if (eventBuilder_ != null) {
                    return eventBuilder_.getMessageOrBuilder();
                } else {
                    return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
                }
            }

            /**
             * <code>.context.Event event = 1;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> getEventFieldBuilder() {
                if (eventBuilder_ == null) {
                    eventBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder>(getEvent(), getParentForChildren(), isClean());
                    event_ = null;
                }
                return eventBuilder_;
            }

            private context.ContextOuterClass.OpticalConfigId opticalconfigId_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.OpticalConfigId, context.ContextOuterClass.OpticalConfigId.Builder, context.ContextOuterClass.OpticalConfigIdOrBuilder> opticalconfigIdBuilder_;

            /**
             * <code>.context.OpticalConfigId opticalconfig_id = 2;</code>
             * @return Whether the opticalconfigId field is set.
             */
            public boolean hasOpticalconfigId() {
                return ((bitField0_ & 0x00000002) != 0);
            }

            /**
             * <code>.context.OpticalConfigId opticalconfig_id = 2;</code>
             * @return The opticalconfigId.
             */
            public context.ContextOuterClass.OpticalConfigId getOpticalconfigId() {
                if (opticalconfigIdBuilder_ == null) {
                    return opticalconfigId_ == null ? context.ContextOuterClass.OpticalConfigId.getDefaultInstance() : opticalconfigId_;
                } else {
                    return opticalconfigIdBuilder_.getMessage();
                }
            }

            /**
             * <code>.context.OpticalConfigId opticalconfig_id = 2;</code>
             */
            public Builder setOpticalconfigId(context.ContextOuterClass.OpticalConfigId value) {
                if (opticalconfigIdBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    opticalconfigId_ = value;
                } else {
                    opticalconfigIdBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>.context.OpticalConfigId opticalconfig_id = 2;</code>
             */
            public Builder setOpticalconfigId(context.ContextOuterClass.OpticalConfigId.Builder builderForValue) {
                if (opticalconfigIdBuilder_ == null) {
                    opticalconfigId_ = builderForValue.build();
                } else {
                    opticalconfigIdBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>.context.OpticalConfigId opticalconfig_id = 2;</code>
             */
            public Builder mergeOpticalconfigId(context.ContextOuterClass.OpticalConfigId value) {
                if (opticalconfigIdBuilder_ == null) {
                    if (((bitField0_ & 0x00000002) != 0) && opticalconfigId_ != null && opticalconfigId_ != context.ContextOuterClass.OpticalConfigId.getDefaultInstance()) {
                        getOpticalconfigIdBuilder().mergeFrom(value);
                    } else {
                        opticalconfigId_ = value;
                    }
                } else {
                    opticalconfigIdBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>.context.OpticalConfigId opticalconfig_id = 2;</code>
             */
            public Builder clearOpticalconfigId() {
                bitField0_ = (bitField0_ & ~0x00000002);
                opticalconfigId_ = null;
                if (opticalconfigIdBuilder_ != null) {
                    opticalconfigIdBuilder_.dispose();
                    opticalconfigIdBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.OpticalConfigId opticalconfig_id = 2;</code>
             */
            public context.ContextOuterClass.OpticalConfigId.Builder getOpticalconfigIdBuilder() {
                bitField0_ |= 0x00000002;
                onChanged();
                return getOpticalconfigIdFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.OpticalConfigId opticalconfig_id = 2;</code>
             */
            public context.ContextOuterClass.OpticalConfigIdOrBuilder getOpticalconfigIdOrBuilder() {
                if (opticalconfigIdBuilder_ != null) {
                    return opticalconfigIdBuilder_.getMessageOrBuilder();
                } else {
                    return opticalconfigId_ == null ? context.ContextOuterClass.OpticalConfigId.getDefaultInstance() : opticalconfigId_;
                }
            }

            /**
             * <code>.context.OpticalConfigId opticalconfig_id = 2;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.OpticalConfigId, context.ContextOuterClass.OpticalConfigId.Builder, context.ContextOuterClass.OpticalConfigIdOrBuilder> getOpticalconfigIdFieldBuilder() {
                if (opticalconfigIdBuilder_ == null) {
                    opticalconfigIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.OpticalConfigId, context.ContextOuterClass.OpticalConfigId.Builder, context.ContextOuterClass.OpticalConfigIdOrBuilder>(getOpticalconfigId(), getParentForChildren(), isClean());
                    opticalconfigId_ = null;
                }
                return opticalconfigIdBuilder_;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.OpticalConfigEvent)
        }

        // @@protoc_insertion_point(class_scope:context.OpticalConfigEvent)
        private static final context.ContextOuterClass.OpticalConfigEvent DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.OpticalConfigEvent();
        }

        public static context.ContextOuterClass.OpticalConfigEvent getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<OpticalConfigEvent> PARSER = new com.google.protobuf.AbstractParser<OpticalConfigEvent>() {

            @java.lang.Override
            public OpticalConfigEvent parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<OpticalConfigEvent> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<OpticalConfigEvent> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.OpticalConfigEvent getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface OpticalEndPointIdOrBuilder extends // @@protoc_insertion_point(interface_extends:context.OpticalEndPointId)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>.context.DeviceId device_id = 2;</code>
         * @return Whether the deviceId field is set.
         */
        boolean hasDeviceId();

        /**
         * <code>.context.DeviceId device_id = 2;</code>
         * @return The deviceId.
         */
        context.ContextOuterClass.DeviceId getDeviceId();

        /**
         * <code>.context.DeviceId device_id = 2;</code>
         */
        context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder();

        /**
         * <code>.context.Uuid endpoint_uuid = 3;</code>
         * @return Whether the endpointUuid field is set.
         */
        boolean hasEndpointUuid();

        /**
         * <code>.context.Uuid endpoint_uuid = 3;</code>
         * @return The endpointUuid.
         */
        context.ContextOuterClass.Uuid getEndpointUuid();

        /**
         * <code>.context.Uuid endpoint_uuid = 3;</code>
         */
        context.ContextOuterClass.UuidOrBuilder getEndpointUuidOrBuilder();
    }

    /**
     * Protobuf type {@code context.OpticalEndPointId}
     */
    public static final class OpticalEndPointId extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.OpticalEndPointId)
    OpticalEndPointIdOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use OpticalEndPointId.newBuilder() to construct.
        private OpticalEndPointId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private OpticalEndPointId() {
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new OpticalEndPointId();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_OpticalEndPointId_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_OpticalEndPointId_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalEndPointId.class, context.ContextOuterClass.OpticalEndPointId.Builder.class);
        }

        public static final int DEVICE_ID_FIELD_NUMBER = 2;

        private context.ContextOuterClass.DeviceId deviceId_;

        /**
         * <code>.context.DeviceId device_id = 2;</code>
         * @return Whether the deviceId field is set.
         */
        @java.lang.Override
        public boolean hasDeviceId() {
            return deviceId_ != null;
        }

        /**
         * <code>.context.DeviceId device_id = 2;</code>
         * @return The deviceId.
         */
        @java.lang.Override
        public context.ContextOuterClass.DeviceId getDeviceId() {
            return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
        }

        /**
         * <code>.context.DeviceId device_id = 2;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder() {
            return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
        }

        public static final int ENDPOINT_UUID_FIELD_NUMBER = 3;

        private context.ContextOuterClass.Uuid endpointUuid_;

        /**
         * <code>.context.Uuid endpoint_uuid = 3;</code>
         * @return Whether the endpointUuid field is set.
         */
        @java.lang.Override
        public boolean hasEndpointUuid() {
            return endpointUuid_ != null;
        }

        /**
         * <code>.context.Uuid endpoint_uuid = 3;</code>
         * @return The endpointUuid.
         */
        @java.lang.Override
        public context.ContextOuterClass.Uuid getEndpointUuid() {
            return endpointUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : endpointUuid_;
        }

        /**
         * <code>.context.Uuid endpoint_uuid = 3;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.UuidOrBuilder getEndpointUuidOrBuilder() {
            return endpointUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : endpointUuid_;
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            if (deviceId_ != null) {
                output.writeMessage(2, getDeviceId());
            }
            if (endpointUuid_ != null) {
                output.writeMessage(3, getEndpointUuid());
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            if (deviceId_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getDeviceId());
            }
            if (endpointUuid_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, getEndpointUuid());
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.OpticalEndPointId)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.OpticalEndPointId other = (context.ContextOuterClass.OpticalEndPointId) obj;
            if (hasDeviceId() != other.hasDeviceId())
                return false;
            if (hasDeviceId()) {
                if (!getDeviceId().equals(other.getDeviceId()))
                    return false;
            }
            if (hasEndpointUuid() != other.hasEndpointUuid())
                return false;
            if (hasEndpointUuid()) {
                if (!getEndpointUuid().equals(other.getEndpointUuid()))
                    return false;
            }
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            if (hasDeviceId()) {
                hash = (37 * hash) + DEVICE_ID_FIELD_NUMBER;
                hash = (53 * hash) + getDeviceId().hashCode();
            }
            if (hasEndpointUuid()) {
                hash = (37 * hash) + ENDPOINT_UUID_FIELD_NUMBER;
                hash = (53 * hash) + getEndpointUuid().hashCode();
            }
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.OpticalEndPointId parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.OpticalEndPointId parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.OpticalEndPointId parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.OpticalEndPointId parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.OpticalEndPointId parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.OpticalEndPointId parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.OpticalEndPointId parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.OpticalEndPointId parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.OpticalEndPointId parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.OpticalEndPointId parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.OpticalEndPointId parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.OpticalEndPointId parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.OpticalEndPointId prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code context.OpticalEndPointId}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.OpticalEndPointId)
        context.ContextOuterClass.OpticalEndPointIdOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_OpticalEndPointId_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_OpticalEndPointId_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalEndPointId.class, context.ContextOuterClass.OpticalEndPointId.Builder.class);
            }

            // Construct using context.ContextOuterClass.OpticalEndPointId.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                deviceId_ = null;
                if (deviceIdBuilder_ != null) {
                    deviceIdBuilder_.dispose();
                    deviceIdBuilder_ = null;
                }
                endpointUuid_ = null;
                if (endpointUuidBuilder_ != null) {
                    endpointUuidBuilder_.dispose();
                    endpointUuidBuilder_ = null;
                }
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_OpticalEndPointId_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.OpticalEndPointId getDefaultInstanceForType() {
                return context.ContextOuterClass.OpticalEndPointId.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.OpticalEndPointId build() {
                context.ContextOuterClass.OpticalEndPointId result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.OpticalEndPointId buildPartial() {
                context.ContextOuterClass.OpticalEndPointId result = new context.ContextOuterClass.OpticalEndPointId(this);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartial0(context.ContextOuterClass.OpticalEndPointId result) {
                int from_bitField0_ = bitField0_;
                if (((from_bitField0_ & 0x00000001) != 0)) {
                    result.deviceId_ = deviceIdBuilder_ == null ? deviceId_ : deviceIdBuilder_.build();
                }
                if (((from_bitField0_ & 0x00000002) != 0)) {
                    result.endpointUuid_ = endpointUuidBuilder_ == null ? endpointUuid_ : endpointUuidBuilder_.build();
                }
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.OpticalEndPointId) {
                    return mergeFrom((context.ContextOuterClass.OpticalEndPointId) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.OpticalEndPointId other) {
                if (other == context.ContextOuterClass.OpticalEndPointId.getDefaultInstance())
                    return this;
                if (other.hasDeviceId()) {
                    mergeDeviceId(other.getDeviceId());
                }
                if (other.hasEndpointUuid()) {
                    mergeEndpointUuid(other.getEndpointUuid());
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 18:
                                {
                                    input.readMessage(getDeviceIdFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000001;
                                    break;
                                }
                            // case 18
                            case 26:
                                {
                                    input.readMessage(getEndpointUuidFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000002;
                                    break;
                                }
                            // case 26
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private context.ContextOuterClass.DeviceId deviceId_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> deviceIdBuilder_;

            /**
             * <code>.context.DeviceId device_id = 2;</code>
             * @return Whether the deviceId field is set.
             */
            public boolean hasDeviceId() {
                return ((bitField0_ & 0x00000001) != 0);
            }

            /**
             * <code>.context.DeviceId device_id = 2;</code>
             * @return The deviceId.
             */
            public context.ContextOuterClass.DeviceId getDeviceId() {
                if (deviceIdBuilder_ == null) {
                    return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
                } else {
                    return deviceIdBuilder_.getMessage();
                }
            }

            /**
             * <code>.context.DeviceId device_id = 2;</code>
             */
            public Builder setDeviceId(context.ContextOuterClass.DeviceId value) {
                if (deviceIdBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    deviceId_ = value;
                } else {
                    deviceIdBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.DeviceId device_id = 2;</code>
             */
            public Builder setDeviceId(context.ContextOuterClass.DeviceId.Builder builderForValue) {
                if (deviceIdBuilder_ == null) {
                    deviceId_ = builderForValue.build();
                } else {
                    deviceIdBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.DeviceId device_id = 2;</code>
             */
            public Builder mergeDeviceId(context.ContextOuterClass.DeviceId value) {
                if (deviceIdBuilder_ == null) {
                    if (((bitField0_ & 0x00000001) != 0) && deviceId_ != null && deviceId_ != context.ContextOuterClass.DeviceId.getDefaultInstance()) {
                        getDeviceIdBuilder().mergeFrom(value);
                    } else {
                        deviceId_ = value;
                    }
                } else {
                    deviceIdBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.DeviceId device_id = 2;</code>
             */
            public Builder clearDeviceId() {
                bitField0_ = (bitField0_ & ~0x00000001);
                deviceId_ = null;
                if (deviceIdBuilder_ != null) {
                    deviceIdBuilder_.dispose();
                    deviceIdBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.DeviceId device_id = 2;</code>
             */
            public context.ContextOuterClass.DeviceId.Builder getDeviceIdBuilder() {
                bitField0_ |= 0x00000001;
                onChanged();
                return getDeviceIdFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.DeviceId device_id = 2;</code>
             */
            public context.ContextOuterClass.DeviceIdOrBuilder getDeviceIdOrBuilder() {
                if (deviceIdBuilder_ != null) {
                    return deviceIdBuilder_.getMessageOrBuilder();
                } else {
                    return deviceId_ == null ? context.ContextOuterClass.DeviceId.getDefaultInstance() : deviceId_;
                }
            }

            /**
             * <code>.context.DeviceId device_id = 2;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder> getDeviceIdFieldBuilder() {
                if (deviceIdBuilder_ == null) {
                    deviceIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.DeviceId, context.ContextOuterClass.DeviceId.Builder, context.ContextOuterClass.DeviceIdOrBuilder>(getDeviceId(), getParentForChildren(), isClean());
                    deviceId_ = null;
                }
                return deviceIdBuilder_;
            }

            private context.ContextOuterClass.Uuid endpointUuid_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> endpointUuidBuilder_;

            /**
             * <code>.context.Uuid endpoint_uuid = 3;</code>
             * @return Whether the endpointUuid field is set.
             */
            public boolean hasEndpointUuid() {
                return ((bitField0_ & 0x00000002) != 0);
            }

            /**
             * <code>.context.Uuid endpoint_uuid = 3;</code>
             * @return The endpointUuid.
             */
            public context.ContextOuterClass.Uuid getEndpointUuid() {
                if (endpointUuidBuilder_ == null) {
                    return endpointUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : endpointUuid_;
                } else {
                    return endpointUuidBuilder_.getMessage();
                }
            }

            /**
             * <code>.context.Uuid endpoint_uuid = 3;</code>
             */
            public Builder setEndpointUuid(context.ContextOuterClass.Uuid value) {
                if (endpointUuidBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    endpointUuid_ = value;
                } else {
                    endpointUuidBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>.context.Uuid endpoint_uuid = 3;</code>
             */
            public Builder setEndpointUuid(context.ContextOuterClass.Uuid.Builder builderForValue) {
                if (endpointUuidBuilder_ == null) {
                    endpointUuid_ = builderForValue.build();
                } else {
                    endpointUuidBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>.context.Uuid endpoint_uuid = 3;</code>
             */
            public Builder mergeEndpointUuid(context.ContextOuterClass.Uuid value) {
                if (endpointUuidBuilder_ == null) {
                    if (((bitField0_ & 0x00000002) != 0) && endpointUuid_ != null && endpointUuid_ != context.ContextOuterClass.Uuid.getDefaultInstance()) {
                        getEndpointUuidBuilder().mergeFrom(value);
                    } else {
                        endpointUuid_ = value;
                    }
                } else {
                    endpointUuidBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>.context.Uuid endpoint_uuid = 3;</code>
             */
            public Builder clearEndpointUuid() {
                bitField0_ = (bitField0_ & ~0x00000002);
                endpointUuid_ = null;
                if (endpointUuidBuilder_ != null) {
                    endpointUuidBuilder_.dispose();
                    endpointUuidBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.Uuid endpoint_uuid = 3;</code>
             */
            public context.ContextOuterClass.Uuid.Builder getEndpointUuidBuilder() {
                bitField0_ |= 0x00000002;
                onChanged();
                return getEndpointUuidFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.Uuid endpoint_uuid = 3;</code>
             */
            public context.ContextOuterClass.UuidOrBuilder getEndpointUuidOrBuilder() {
                if (endpointUuidBuilder_ != null) {
                    return endpointUuidBuilder_.getMessageOrBuilder();
                } else {
                    return endpointUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : endpointUuid_;
                }
            }

            /**
             * <code>.context.Uuid endpoint_uuid = 3;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> getEndpointUuidFieldBuilder() {
                if (endpointUuidBuilder_ == null) {
                    endpointUuidBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder>(getEndpointUuid(), getParentForChildren(), isClean());
                    endpointUuid_ = null;
                }
                return endpointUuidBuilder_;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.OpticalEndPointId)
        }

        // @@protoc_insertion_point(class_scope:context.OpticalEndPointId)
        private static final context.ContextOuterClass.OpticalEndPointId DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.OpticalEndPointId();
        }

        public static context.ContextOuterClass.OpticalEndPointId getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<OpticalEndPointId> PARSER = new com.google.protobuf.AbstractParser<OpticalEndPointId>() {

            @java.lang.Override
            public OpticalEndPointId parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<OpticalEndPointId> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<OpticalEndPointId> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.OpticalEndPointId getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface OpticalLinkListOrBuilder extends // @@protoc_insertion_point(interface_extends:context.OpticalLinkList)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>repeated .context.OpticalLink optical_links = 1;</code>
         */
        java.util.List<context.ContextOuterClass.OpticalLink> getOpticalLinksList();

        /**
         * <code>repeated .context.OpticalLink optical_links = 1;</code>
         */
        context.ContextOuterClass.OpticalLink getOpticalLinks(int index);

        /**
         * <code>repeated .context.OpticalLink optical_links = 1;</code>
         */
        int getOpticalLinksCount();

        /**
         * <code>repeated .context.OpticalLink optical_links = 1;</code>
         */
        java.util.List<? extends context.ContextOuterClass.OpticalLinkOrBuilder> getOpticalLinksOrBuilderList();

        /**
         * <code>repeated .context.OpticalLink optical_links = 1;</code>
         */
        context.ContextOuterClass.OpticalLinkOrBuilder getOpticalLinksOrBuilder(int index);
    }

    /**
     * Protobuf type {@code context.OpticalLinkList}
     */
    public static final class OpticalLinkList extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.OpticalLinkList)
    OpticalLinkListOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use OpticalLinkList.newBuilder() to construct.
        private OpticalLinkList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private OpticalLinkList() {
            opticalLinks_ = java.util.Collections.emptyList();
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new OpticalLinkList();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_OpticalLinkList_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_OpticalLinkList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalLinkList.class, context.ContextOuterClass.OpticalLinkList.Builder.class);
        }

        public static final int OPTICAL_LINKS_FIELD_NUMBER = 1;

        @SuppressWarnings("serial")
        private java.util.List<context.ContextOuterClass.OpticalLink> opticalLinks_;

        /**
         * <code>repeated .context.OpticalLink optical_links = 1;</code>
         */
        @java.lang.Override
        public java.util.List<context.ContextOuterClass.OpticalLink> getOpticalLinksList() {
            return opticalLinks_;
        }

        /**
         * <code>repeated .context.OpticalLink optical_links = 1;</code>
         */
        @java.lang.Override
        public java.util.List<? extends context.ContextOuterClass.OpticalLinkOrBuilder> getOpticalLinksOrBuilderList() {
            return opticalLinks_;
        }

        /**
         * <code>repeated .context.OpticalLink optical_links = 1;</code>
         */
        @java.lang.Override
        public int getOpticalLinksCount() {
            return opticalLinks_.size();
        }

        /**
         * <code>repeated .context.OpticalLink optical_links = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.OpticalLink getOpticalLinks(int index) {
            return opticalLinks_.get(index);
        }

        /**
         * <code>repeated .context.OpticalLink optical_links = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.OpticalLinkOrBuilder getOpticalLinksOrBuilder(int index) {
            return opticalLinks_.get(index);
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            for (int i = 0; i < opticalLinks_.size(); i++) {
                output.writeMessage(1, opticalLinks_.get(i));
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            for (int i = 0; i < opticalLinks_.size(); i++) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, opticalLinks_.get(i));
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.OpticalLinkList)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.OpticalLinkList other = (context.ContextOuterClass.OpticalLinkList) obj;
            if (!getOpticalLinksList().equals(other.getOpticalLinksList()))
                return false;
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            if (getOpticalLinksCount() > 0) {
                hash = (37 * hash) + OPTICAL_LINKS_FIELD_NUMBER;
                hash = (53 * hash) + getOpticalLinksList().hashCode();
            }
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.OpticalLinkList parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.OpticalLinkList parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.OpticalLinkList parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.OpticalLinkList parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.OpticalLinkList parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.OpticalLinkList parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.OpticalLinkList parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.OpticalLinkList parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.OpticalLinkList parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.OpticalLinkList parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.OpticalLinkList parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.OpticalLinkList parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.OpticalLinkList prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code context.OpticalLinkList}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.OpticalLinkList)
        context.ContextOuterClass.OpticalLinkListOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_OpticalLinkList_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_OpticalLinkList_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalLinkList.class, context.ContextOuterClass.OpticalLinkList.Builder.class);
            }

            // Construct using context.ContextOuterClass.OpticalLinkList.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                if (opticalLinksBuilder_ == null) {
                    opticalLinks_ = java.util.Collections.emptyList();
                } else {
                    opticalLinks_ = null;
                    opticalLinksBuilder_.clear();
                }
                bitField0_ = (bitField0_ & ~0x00000001);
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_OpticalLinkList_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.OpticalLinkList getDefaultInstanceForType() {
                return context.ContextOuterClass.OpticalLinkList.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.OpticalLinkList build() {
                context.ContextOuterClass.OpticalLinkList result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.OpticalLinkList buildPartial() {
                context.ContextOuterClass.OpticalLinkList result = new context.ContextOuterClass.OpticalLinkList(this);
                buildPartialRepeatedFields(result);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartialRepeatedFields(context.ContextOuterClass.OpticalLinkList result) {
                if (opticalLinksBuilder_ == null) {
                    if (((bitField0_ & 0x00000001) != 0)) {
                        opticalLinks_ = java.util.Collections.unmodifiableList(opticalLinks_);
                        bitField0_ = (bitField0_ & ~0x00000001);
                    }
                    result.opticalLinks_ = opticalLinks_;
                } else {
                    result.opticalLinks_ = opticalLinksBuilder_.build();
                }
            }

            private void buildPartial0(context.ContextOuterClass.OpticalLinkList result) {
                int from_bitField0_ = bitField0_;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.OpticalLinkList) {
                    return mergeFrom((context.ContextOuterClass.OpticalLinkList) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.OpticalLinkList other) {
                if (other == context.ContextOuterClass.OpticalLinkList.getDefaultInstance())
                    return this;
                if (opticalLinksBuilder_ == null) {
                    if (!other.opticalLinks_.isEmpty()) {
                        if (opticalLinks_.isEmpty()) {
                            opticalLinks_ = other.opticalLinks_;
                            bitField0_ = (bitField0_ & ~0x00000001);
                        } else {
                            ensureOpticalLinksIsMutable();
                            opticalLinks_.addAll(other.opticalLinks_);
                        }
                        onChanged();
                    }
                } else {
                    if (!other.opticalLinks_.isEmpty()) {
                        if (opticalLinksBuilder_.isEmpty()) {
                            opticalLinksBuilder_.dispose();
                            opticalLinksBuilder_ = null;
                            opticalLinks_ = other.opticalLinks_;
                            bitField0_ = (bitField0_ & ~0x00000001);
                            opticalLinksBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getOpticalLinksFieldBuilder() : null;
                        } else {
                            opticalLinksBuilder_.addAllMessages(other.opticalLinks_);
                        }
                    }
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 10:
                                {
                                    context.ContextOuterClass.OpticalLink m = input.readMessage(context.ContextOuterClass.OpticalLink.parser(), extensionRegistry);
                                    if (opticalLinksBuilder_ == null) {
                                        ensureOpticalLinksIsMutable();
                                        opticalLinks_.add(m);
                                    } else {
                                        opticalLinksBuilder_.addMessage(m);
                                    }
                                    break;
                                }
                            // case 10
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private java.util.List<context.ContextOuterClass.OpticalLink> opticalLinks_ = java.util.Collections.emptyList();

            private void ensureOpticalLinksIsMutable() {
                if (!((bitField0_ & 0x00000001) != 0)) {
                    opticalLinks_ = new java.util.ArrayList<context.ContextOuterClass.OpticalLink>(opticalLinks_);
                    bitField0_ |= 0x00000001;
                }
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.OpticalLink, context.ContextOuterClass.OpticalLink.Builder, context.ContextOuterClass.OpticalLinkOrBuilder> opticalLinksBuilder_;

            /**
             * <code>repeated .context.OpticalLink optical_links = 1;</code>
             */
            public java.util.List<context.ContextOuterClass.OpticalLink> getOpticalLinksList() {
                if (opticalLinksBuilder_ == null) {
                    return java.util.Collections.unmodifiableList(opticalLinks_);
                } else {
                    return opticalLinksBuilder_.getMessageList();
                }
            }

            /**
             * <code>repeated .context.OpticalLink optical_links = 1;</code>
             */
            public int getOpticalLinksCount() {
                if (opticalLinksBuilder_ == null) {
                    return opticalLinks_.size();
                } else {
                    return opticalLinksBuilder_.getCount();
                }
            }

            /**
             * <code>repeated .context.OpticalLink optical_links = 1;</code>
             */
            public context.ContextOuterClass.OpticalLink getOpticalLinks(int index) {
                if (opticalLinksBuilder_ == null) {
                    return opticalLinks_.get(index);
                } else {
                    return opticalLinksBuilder_.getMessage(index);
                }
            }

            /**
             * <code>repeated .context.OpticalLink optical_links = 1;</code>
             */
            public Builder setOpticalLinks(int index, context.ContextOuterClass.OpticalLink value) {
                if (opticalLinksBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureOpticalLinksIsMutable();
                    opticalLinks_.set(index, value);
                    onChanged();
                } else {
                    opticalLinksBuilder_.setMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.OpticalLink optical_links = 1;</code>
             */
            public Builder setOpticalLinks(int index, context.ContextOuterClass.OpticalLink.Builder builderForValue) {
                if (opticalLinksBuilder_ == null) {
                    ensureOpticalLinksIsMutable();
                    opticalLinks_.set(index, builderForValue.build());
                    onChanged();
                } else {
                    opticalLinksBuilder_.setMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.OpticalLink optical_links = 1;</code>
             */
            public Builder addOpticalLinks(context.ContextOuterClass.OpticalLink value) {
                if (opticalLinksBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureOpticalLinksIsMutable();
                    opticalLinks_.add(value);
                    onChanged();
                } else {
                    opticalLinksBuilder_.addMessage(value);
                }
                return this;
            }

            /**
             * <code>repeated .context.OpticalLink optical_links = 1;</code>
             */
            public Builder addOpticalLinks(int index, context.ContextOuterClass.OpticalLink value) {
                if (opticalLinksBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureOpticalLinksIsMutable();
                    opticalLinks_.add(index, value);
                    onChanged();
                } else {
                    opticalLinksBuilder_.addMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.OpticalLink optical_links = 1;</code>
             */
            public Builder addOpticalLinks(context.ContextOuterClass.OpticalLink.Builder builderForValue) {
                if (opticalLinksBuilder_ == null) {
                    ensureOpticalLinksIsMutable();
                    opticalLinks_.add(builderForValue.build());
                    onChanged();
                } else {
                    opticalLinksBuilder_.addMessage(builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.OpticalLink optical_links = 1;</code>
             */
            public Builder addOpticalLinks(int index, context.ContextOuterClass.OpticalLink.Builder builderForValue) {
                if (opticalLinksBuilder_ == null) {
                    ensureOpticalLinksIsMutable();
                    opticalLinks_.add(index, builderForValue.build());
                    onChanged();
                } else {
                    opticalLinksBuilder_.addMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.OpticalLink optical_links = 1;</code>
             */
            public Builder addAllOpticalLinks(java.lang.Iterable<? extends context.ContextOuterClass.OpticalLink> values) {
                if (opticalLinksBuilder_ == null) {
                    ensureOpticalLinksIsMutable();
                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, opticalLinks_);
                    onChanged();
                } else {
                    opticalLinksBuilder_.addAllMessages(values);
                }
                return this;
            }

            /**
             * <code>repeated .context.OpticalLink optical_links = 1;</code>
             */
            public Builder clearOpticalLinks() {
                if (opticalLinksBuilder_ == null) {
                    opticalLinks_ = java.util.Collections.emptyList();
                    bitField0_ = (bitField0_ & ~0x00000001);
                    onChanged();
                } else {
                    opticalLinksBuilder_.clear();
                }
                return this;
            }

            /**
             * <code>repeated .context.OpticalLink optical_links = 1;</code>
             */
            public Builder removeOpticalLinks(int index) {
                if (opticalLinksBuilder_ == null) {
                    ensureOpticalLinksIsMutable();
                    opticalLinks_.remove(index);
                    onChanged();
                } else {
                    opticalLinksBuilder_.remove(index);
                }
                return this;
            }

            /**
             * <code>repeated .context.OpticalLink optical_links = 1;</code>
             */
            public context.ContextOuterClass.OpticalLink.Builder getOpticalLinksBuilder(int index) {
                return getOpticalLinksFieldBuilder().getBuilder(index);
            }

            /**
             * <code>repeated .context.OpticalLink optical_links = 1;</code>
             */
            public context.ContextOuterClass.OpticalLinkOrBuilder getOpticalLinksOrBuilder(int index) {
                if (opticalLinksBuilder_ == null) {
                    return opticalLinks_.get(index);
                } else {
                    return opticalLinksBuilder_.getMessageOrBuilder(index);
                }
            }

            /**
             * <code>repeated .context.OpticalLink optical_links = 1;</code>
             */
            public java.util.List<? extends context.ContextOuterClass.OpticalLinkOrBuilder> getOpticalLinksOrBuilderList() {
                if (opticalLinksBuilder_ != null) {
                    return opticalLinksBuilder_.getMessageOrBuilderList();
                } else {
                    return java.util.Collections.unmodifiableList(opticalLinks_);
                }
            }

            /**
             * <code>repeated .context.OpticalLink optical_links = 1;</code>
             */
            public context.ContextOuterClass.OpticalLink.Builder addOpticalLinksBuilder() {
                return getOpticalLinksFieldBuilder().addBuilder(context.ContextOuterClass.OpticalLink.getDefaultInstance());
            }

            /**
             * <code>repeated .context.OpticalLink optical_links = 1;</code>
             */
            public context.ContextOuterClass.OpticalLink.Builder addOpticalLinksBuilder(int index) {
                return getOpticalLinksFieldBuilder().addBuilder(index, context.ContextOuterClass.OpticalLink.getDefaultInstance());
            }

            /**
             * <code>repeated .context.OpticalLink optical_links = 1;</code>
             */
            public java.util.List<context.ContextOuterClass.OpticalLink.Builder> getOpticalLinksBuilderList() {
                return getOpticalLinksFieldBuilder().getBuilderList();
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.OpticalLink, context.ContextOuterClass.OpticalLink.Builder, context.ContextOuterClass.OpticalLinkOrBuilder> getOpticalLinksFieldBuilder() {
                if (opticalLinksBuilder_ == null) {
                    opticalLinksBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.OpticalLink, context.ContextOuterClass.OpticalLink.Builder, context.ContextOuterClass.OpticalLinkOrBuilder>(opticalLinks_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), isClean());
                    opticalLinks_ = null;
                }
                return opticalLinksBuilder_;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.OpticalLinkList)
        }

        // @@protoc_insertion_point(class_scope:context.OpticalLinkList)
        private static final context.ContextOuterClass.OpticalLinkList DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.OpticalLinkList();
        }

        public static context.ContextOuterClass.OpticalLinkList getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<OpticalLinkList> PARSER = new com.google.protobuf.AbstractParser<OpticalLinkList>() {

            @java.lang.Override
            public OpticalLinkList parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<OpticalLinkList> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<OpticalLinkList> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.OpticalLinkList getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface OpticalLinkDetailsOrBuilder extends // @@protoc_insertion_point(interface_extends:context.OpticalLinkDetails)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>float length = 1;</code>
         * @return The length.
         */
        float getLength();

        /**
         * <code>string src_port = 2;</code>
         * @return The srcPort.
         */
        java.lang.String getSrcPort();

        /**
         * <code>string src_port = 2;</code>
         * @return The bytes for srcPort.
         */
        com.google.protobuf.ByteString getSrcPortBytes();

        /**
         * <code>string dst_port = 3;</code>
         * @return The dstPort.
         */
        java.lang.String getDstPort();

        /**
         * <code>string dst_port = 3;</code>
         * @return The bytes for dstPort.
         */
        com.google.protobuf.ByteString getDstPortBytes();

        /**
         * <code>string local_peer_port = 4;</code>
         * @return The localPeerPort.
         */
        java.lang.String getLocalPeerPort();

        /**
         * <code>string local_peer_port = 4;</code>
         * @return The bytes for localPeerPort.
         */
        com.google.protobuf.ByteString getLocalPeerPortBytes();

        /**
         * <code>string remote_peer_port = 5;</code>
         * @return The remotePeerPort.
         */
        java.lang.String getRemotePeerPort();

        /**
         * <code>string remote_peer_port = 5;</code>
         * @return The bytes for remotePeerPort.
         */
        com.google.protobuf.ByteString getRemotePeerPortBytes();

        /**
         * <code>bool used = 6;</code>
         * @return The used.
         */
        boolean getUsed();

        /**
         * <code>map&lt;string, int32&gt; c_slots = 7;</code>
         */
        int getCSlotsCount();

        /**
         * <code>map&lt;string, int32&gt; c_slots = 7;</code>
         */
        boolean containsCSlots(java.lang.String key);

        /**
         * Use {@link #getCSlotsMap()} instead.
         */
        @java.lang.Deprecated
        java.util.Map<java.lang.String, java.lang.Integer> getCSlots();

        /**
         * <code>map&lt;string, int32&gt; c_slots = 7;</code>
         */
        java.util.Map<java.lang.String, java.lang.Integer> getCSlotsMap();

        /**
         * <code>map&lt;string, int32&gt; c_slots = 7;</code>
         */
        int getCSlotsOrDefault(java.lang.String key, int defaultValue);

        /**
         * <code>map&lt;string, int32&gt; c_slots = 7;</code>
         */
        int getCSlotsOrThrow(java.lang.String key);

        /**
         * <code>map&lt;string, int32&gt; l_slots = 8;</code>
         */
        int getLSlotsCount();

        /**
         * <code>map&lt;string, int32&gt; l_slots = 8;</code>
         */
        boolean containsLSlots(java.lang.String key);

        /**
         * Use {@link #getLSlotsMap()} instead.
         */
        @java.lang.Deprecated
        java.util.Map<java.lang.String, java.lang.Integer> getLSlots();

        /**
         * <code>map&lt;string, int32&gt; l_slots = 8;</code>
         */
        java.util.Map<java.lang.String, java.lang.Integer> getLSlotsMap();

        /**
         * <code>map&lt;string, int32&gt; l_slots = 8;</code>
         */
        int getLSlotsOrDefault(java.lang.String key, int defaultValue);

        /**
         * <code>map&lt;string, int32&gt; l_slots = 8;</code>
         */
        int getLSlotsOrThrow(java.lang.String key);

        /**
         * <code>map&lt;string, int32&gt; s_slots = 9;</code>
         */
        int getSSlotsCount();

        /**
         * <code>map&lt;string, int32&gt; s_slots = 9;</code>
         */
        boolean containsSSlots(java.lang.String key);

        /**
         * Use {@link #getSSlotsMap()} instead.
         */
        @java.lang.Deprecated
        java.util.Map<java.lang.String, java.lang.Integer> getSSlots();

        /**
         * <code>map&lt;string, int32&gt; s_slots = 9;</code>
         */
        java.util.Map<java.lang.String, java.lang.Integer> getSSlotsMap();

        /**
         * <code>map&lt;string, int32&gt; s_slots = 9;</code>
         */
        int getSSlotsOrDefault(java.lang.String key, int defaultValue);

        /**
         * <code>map&lt;string, int32&gt; s_slots = 9;</code>
         */
        int getSSlotsOrThrow(java.lang.String key);
    }

    /**
     * Protobuf type {@code context.OpticalLinkDetails}
     */
    public static final class OpticalLinkDetails extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.OpticalLinkDetails)
    OpticalLinkDetailsOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use OpticalLinkDetails.newBuilder() to construct.
        private OpticalLinkDetails(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private OpticalLinkDetails() {
            srcPort_ = "";
            dstPort_ = "";
            localPeerPort_ = "";
            remotePeerPort_ = "";
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new OpticalLinkDetails();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_OpticalLinkDetails_descriptor;
        }

        @SuppressWarnings({ "rawtypes" })
        @java.lang.Override
        protected com.google.protobuf.MapField internalGetMapField(int number) {
            switch(number) {
                case 7:
                    return internalGetCSlots();
                case 8:
                    return internalGetLSlots();
                case 9:
                    return internalGetSSlots();
                default:
                    throw new RuntimeException("Invalid map field number: " + number);
            }
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_OpticalLinkDetails_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalLinkDetails.class, context.ContextOuterClass.OpticalLinkDetails.Builder.class);
        }

        public static final int LENGTH_FIELD_NUMBER = 1;

        private float length_ = 0F;

        /**
         * <code>float length = 1;</code>
         * @return The length.
         */
        @java.lang.Override
        public float getLength() {
            return length_;
        }

        public static final int SRC_PORT_FIELD_NUMBER = 2;

        @SuppressWarnings("serial")
        private volatile java.lang.Object srcPort_ = "";

        /**
         * <code>string src_port = 2;</code>
         * @return The srcPort.
         */
        @java.lang.Override
        public java.lang.String getSrcPort() {
            java.lang.Object ref = srcPort_;
            if (ref instanceof java.lang.String) {
                return (java.lang.String) ref;
            } else {
                com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                java.lang.String s = bs.toStringUtf8();
                srcPort_ = s;
                return s;
            }
        }

        /**
         * <code>string src_port = 2;</code>
         * @return The bytes for srcPort.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString getSrcPortBytes() {
            java.lang.Object ref = srcPort_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                srcPort_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int DST_PORT_FIELD_NUMBER = 3;

        @SuppressWarnings("serial")
        private volatile java.lang.Object dstPort_ = "";

        /**
         * <code>string dst_port = 3;</code>
         * @return The dstPort.
         */
        @java.lang.Override
        public java.lang.String getDstPort() {
            java.lang.Object ref = dstPort_;
            if (ref instanceof java.lang.String) {
                return (java.lang.String) ref;
            } else {
                com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                java.lang.String s = bs.toStringUtf8();
                dstPort_ = s;
                return s;
            }
        }

        /**
         * <code>string dst_port = 3;</code>
         * @return The bytes for dstPort.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString getDstPortBytes() {
            java.lang.Object ref = dstPort_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                dstPort_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int LOCAL_PEER_PORT_FIELD_NUMBER = 4;

        @SuppressWarnings("serial")
        private volatile java.lang.Object localPeerPort_ = "";

        /**
         * <code>string local_peer_port = 4;</code>
         * @return The localPeerPort.
         */
        @java.lang.Override
        public java.lang.String getLocalPeerPort() {
            java.lang.Object ref = localPeerPort_;
            if (ref instanceof java.lang.String) {
                return (java.lang.String) ref;
            } else {
                com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                java.lang.String s = bs.toStringUtf8();
                localPeerPort_ = s;
                return s;
            }
        }

        /**
         * <code>string local_peer_port = 4;</code>
         * @return The bytes for localPeerPort.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString getLocalPeerPortBytes() {
            java.lang.Object ref = localPeerPort_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                localPeerPort_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int REMOTE_PEER_PORT_FIELD_NUMBER = 5;

        @SuppressWarnings("serial")
        private volatile java.lang.Object remotePeerPort_ = "";

        /**
         * <code>string remote_peer_port = 5;</code>
         * @return The remotePeerPort.
         */
        @java.lang.Override
        public java.lang.String getRemotePeerPort() {
            java.lang.Object ref = remotePeerPort_;
            if (ref instanceof java.lang.String) {
                return (java.lang.String) ref;
            } else {
                com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                java.lang.String s = bs.toStringUtf8();
                remotePeerPort_ = s;
                return s;
            }
        }

        /**
         * <code>string remote_peer_port = 5;</code>
         * @return The bytes for remotePeerPort.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString getRemotePeerPortBytes() {
            java.lang.Object ref = remotePeerPort_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                remotePeerPort_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int USED_FIELD_NUMBER = 6;

        private boolean used_ = false;

        /**
         * <code>bool used = 6;</code>
         * @return The used.
         */
        @java.lang.Override
        public boolean getUsed() {
            return used_;
        }

        public static final int C_SLOTS_FIELD_NUMBER = 7;

        private static final class CSlotsDefaultEntryHolder {

            static final com.google.protobuf.MapEntry<java.lang.String, java.lang.Integer> defaultEntry = com.google.protobuf.MapEntry.<java.lang.String, java.lang.Integer>newDefaultInstance(context.ContextOuterClass.internal_static_context_OpticalLinkDetails_CSlotsEntry_descriptor, com.google.protobuf.WireFormat.FieldType.STRING, "", com.google.protobuf.WireFormat.FieldType.INT32, 0);
        }

        @SuppressWarnings("serial")
        private com.google.protobuf.MapField<java.lang.String, java.lang.Integer> cSlots_;

        private com.google.protobuf.MapField<java.lang.String, java.lang.Integer> internalGetCSlots() {
            if (cSlots_ == null) {
                return com.google.protobuf.MapField.emptyMapField(CSlotsDefaultEntryHolder.defaultEntry);
            }
            return cSlots_;
        }

        public int getCSlotsCount() {
            return internalGetCSlots().getMap().size();
        }

        /**
         * <code>map&lt;string, int32&gt; c_slots = 7;</code>
         */
        @java.lang.Override
        public boolean containsCSlots(java.lang.String key) {
            if (key == null) {
                throw new NullPointerException("map key");
            }
            return internalGetCSlots().getMap().containsKey(key);
        }

        /**
         * Use {@link #getCSlotsMap()} instead.
         */
        @java.lang.Override
        @java.lang.Deprecated
        public java.util.Map<java.lang.String, java.lang.Integer> getCSlots() {
            return getCSlotsMap();
        }

        /**
         * <code>map&lt;string, int32&gt; c_slots = 7;</code>
         */
        @java.lang.Override
        public java.util.Map<java.lang.String, java.lang.Integer> getCSlotsMap() {
            return internalGetCSlots().getMap();
        }

        /**
         * <code>map&lt;string, int32&gt; c_slots = 7;</code>
         */
        @java.lang.Override
        public int getCSlotsOrDefault(java.lang.String key, int defaultValue) {
            if (key == null) {
                throw new NullPointerException("map key");
            }
            java.util.Map<java.lang.String, java.lang.Integer> map = internalGetCSlots().getMap();
            return map.containsKey(key) ? map.get(key) : defaultValue;
        }

        /**
         * <code>map&lt;string, int32&gt; c_slots = 7;</code>
         */
        @java.lang.Override
        public int getCSlotsOrThrow(java.lang.String key) {
            if (key == null) {
                throw new NullPointerException("map key");
            }
            java.util.Map<java.lang.String, java.lang.Integer> map = internalGetCSlots().getMap();
            if (!map.containsKey(key)) {
                throw new java.lang.IllegalArgumentException();
            }
            return map.get(key);
        }

        public static final int L_SLOTS_FIELD_NUMBER = 8;

        private static final class LSlotsDefaultEntryHolder {

            static final com.google.protobuf.MapEntry<java.lang.String, java.lang.Integer> defaultEntry = com.google.protobuf.MapEntry.<java.lang.String, java.lang.Integer>newDefaultInstance(context.ContextOuterClass.internal_static_context_OpticalLinkDetails_LSlotsEntry_descriptor, com.google.protobuf.WireFormat.FieldType.STRING, "", com.google.protobuf.WireFormat.FieldType.INT32, 0);
        }

        @SuppressWarnings("serial")
        private com.google.protobuf.MapField<java.lang.String, java.lang.Integer> lSlots_;

        private com.google.protobuf.MapField<java.lang.String, java.lang.Integer> internalGetLSlots() {
            if (lSlots_ == null) {
                return com.google.protobuf.MapField.emptyMapField(LSlotsDefaultEntryHolder.defaultEntry);
            }
            return lSlots_;
        }

        public int getLSlotsCount() {
            return internalGetLSlots().getMap().size();
        }

        /**
         * <code>map&lt;string, int32&gt; l_slots = 8;</code>
         */
        @java.lang.Override
        public boolean containsLSlots(java.lang.String key) {
            if (key == null) {
                throw new NullPointerException("map key");
            }
            return internalGetLSlots().getMap().containsKey(key);
        }

        /**
         * Use {@link #getLSlotsMap()} instead.
         */
        @java.lang.Override
        @java.lang.Deprecated
        public java.util.Map<java.lang.String, java.lang.Integer> getLSlots() {
            return getLSlotsMap();
        }

        /**
         * <code>map&lt;string, int32&gt; l_slots = 8;</code>
         */
        @java.lang.Override
        public java.util.Map<java.lang.String, java.lang.Integer> getLSlotsMap() {
            return internalGetLSlots().getMap();
        }

        /**
         * <code>map&lt;string, int32&gt; l_slots = 8;</code>
         */
        @java.lang.Override
        public int getLSlotsOrDefault(java.lang.String key, int defaultValue) {
            if (key == null) {
                throw new NullPointerException("map key");
            }
            java.util.Map<java.lang.String, java.lang.Integer> map = internalGetLSlots().getMap();
            return map.containsKey(key) ? map.get(key) : defaultValue;
        }

        /**
         * <code>map&lt;string, int32&gt; l_slots = 8;</code>
         */
        @java.lang.Override
        public int getLSlotsOrThrow(java.lang.String key) {
            if (key == null) {
                throw new NullPointerException("map key");
            }
            java.util.Map<java.lang.String, java.lang.Integer> map = internalGetLSlots().getMap();
            if (!map.containsKey(key)) {
                throw new java.lang.IllegalArgumentException();
            }
            return map.get(key);
        }

        public static final int S_SLOTS_FIELD_NUMBER = 9;

        private static final class SSlotsDefaultEntryHolder {

            static final com.google.protobuf.MapEntry<java.lang.String, java.lang.Integer> defaultEntry = com.google.protobuf.MapEntry.<java.lang.String, java.lang.Integer>newDefaultInstance(context.ContextOuterClass.internal_static_context_OpticalLinkDetails_SSlotsEntry_descriptor, com.google.protobuf.WireFormat.FieldType.STRING, "", com.google.protobuf.WireFormat.FieldType.INT32, 0);
        }

        @SuppressWarnings("serial")
        private com.google.protobuf.MapField<java.lang.String, java.lang.Integer> sSlots_;

        private com.google.protobuf.MapField<java.lang.String, java.lang.Integer> internalGetSSlots() {
            if (sSlots_ == null) {
                return com.google.protobuf.MapField.emptyMapField(SSlotsDefaultEntryHolder.defaultEntry);
            }
            return sSlots_;
        }

        public int getSSlotsCount() {
            return internalGetSSlots().getMap().size();
        }

        /**
         * <code>map&lt;string, int32&gt; s_slots = 9;</code>
         */
        @java.lang.Override
        public boolean containsSSlots(java.lang.String key) {
            if (key == null) {
                throw new NullPointerException("map key");
            }
            return internalGetSSlots().getMap().containsKey(key);
        }

        /**
         * Use {@link #getSSlotsMap()} instead.
         */
        @java.lang.Override
        @java.lang.Deprecated
        public java.util.Map<java.lang.String, java.lang.Integer> getSSlots() {
            return getSSlotsMap();
        }

        /**
         * <code>map&lt;string, int32&gt; s_slots = 9;</code>
         */
        @java.lang.Override
        public java.util.Map<java.lang.String, java.lang.Integer> getSSlotsMap() {
            return internalGetSSlots().getMap();
        }

        /**
         * <code>map&lt;string, int32&gt; s_slots = 9;</code>
         */
        @java.lang.Override
        public int getSSlotsOrDefault(java.lang.String key, int defaultValue) {
            if (key == null) {
                throw new NullPointerException("map key");
            }
            java.util.Map<java.lang.String, java.lang.Integer> map = internalGetSSlots().getMap();
            return map.containsKey(key) ? map.get(key) : defaultValue;
        }

        /**
         * <code>map&lt;string, int32&gt; s_slots = 9;</code>
         */
        @java.lang.Override
        public int getSSlotsOrThrow(java.lang.String key) {
            if (key == null) {
                throw new NullPointerException("map key");
            }
            java.util.Map<java.lang.String, java.lang.Integer> map = internalGetSSlots().getMap();
            if (!map.containsKey(key)) {
                throw new java.lang.IllegalArgumentException();
            }
            return map.get(key);
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            if (java.lang.Float.floatToRawIntBits(length_) != 0) {
                output.writeFloat(1, length_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(srcPort_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 2, srcPort_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(dstPort_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 3, dstPort_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(localPeerPort_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 4, localPeerPort_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(remotePeerPort_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 5, remotePeerPort_);
            }
            if (used_ != false) {
                output.writeBool(6, used_);
            }
            com.google.protobuf.GeneratedMessageV3.serializeStringMapTo(output, internalGetCSlots(), CSlotsDefaultEntryHolder.defaultEntry, 7);
            com.google.protobuf.GeneratedMessageV3.serializeStringMapTo(output, internalGetLSlots(), LSlotsDefaultEntryHolder.defaultEntry, 8);
            com.google.protobuf.GeneratedMessageV3.serializeStringMapTo(output, internalGetSSlots(), SSlotsDefaultEntryHolder.defaultEntry, 9);
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            if (java.lang.Float.floatToRawIntBits(length_) != 0) {
                size += com.google.protobuf.CodedOutputStream.computeFloatSize(1, length_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(srcPort_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, srcPort_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(dstPort_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, dstPort_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(localPeerPort_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, localPeerPort_);
            }
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(remotePeerPort_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, remotePeerPort_);
            }
            if (used_ != false) {
                size += com.google.protobuf.CodedOutputStream.computeBoolSize(6, used_);
            }
            for (java.util.Map.Entry<java.lang.String, java.lang.Integer> entry : internalGetCSlots().getMap().entrySet()) {
                com.google.protobuf.MapEntry<java.lang.String, java.lang.Integer> cSlots__ = CSlotsDefaultEntryHolder.defaultEntry.newBuilderForType().setKey(entry.getKey()).setValue(entry.getValue()).build();
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(7, cSlots__);
            }
            for (java.util.Map.Entry<java.lang.String, java.lang.Integer> entry : internalGetLSlots().getMap().entrySet()) {
                com.google.protobuf.MapEntry<java.lang.String, java.lang.Integer> lSlots__ = LSlotsDefaultEntryHolder.defaultEntry.newBuilderForType().setKey(entry.getKey()).setValue(entry.getValue()).build();
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(8, lSlots__);
            }
            for (java.util.Map.Entry<java.lang.String, java.lang.Integer> entry : internalGetSSlots().getMap().entrySet()) {
                com.google.protobuf.MapEntry<java.lang.String, java.lang.Integer> sSlots__ = SSlotsDefaultEntryHolder.defaultEntry.newBuilderForType().setKey(entry.getKey()).setValue(entry.getValue()).build();
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(9, sSlots__);
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.OpticalLinkDetails)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.OpticalLinkDetails other = (context.ContextOuterClass.OpticalLinkDetails) obj;
            if (java.lang.Float.floatToIntBits(getLength()) != java.lang.Float.floatToIntBits(other.getLength()))
                return false;
            if (!getSrcPort().equals(other.getSrcPort()))
                return false;
            if (!getDstPort().equals(other.getDstPort()))
                return false;
            if (!getLocalPeerPort().equals(other.getLocalPeerPort()))
                return false;
            if (!getRemotePeerPort().equals(other.getRemotePeerPort()))
                return false;
            if (getUsed() != other.getUsed())
                return false;
            if (!internalGetCSlots().equals(other.internalGetCSlots()))
                return false;
            if (!internalGetLSlots().equals(other.internalGetLSlots()))
                return false;
            if (!internalGetSSlots().equals(other.internalGetSSlots()))
                return false;
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            hash = (37 * hash) + LENGTH_FIELD_NUMBER;
            hash = (53 * hash) + java.lang.Float.floatToIntBits(getLength());
            hash = (37 * hash) + SRC_PORT_FIELD_NUMBER;
            hash = (53 * hash) + getSrcPort().hashCode();
            hash = (37 * hash) + DST_PORT_FIELD_NUMBER;
            hash = (53 * hash) + getDstPort().hashCode();
            hash = (37 * hash) + LOCAL_PEER_PORT_FIELD_NUMBER;
            hash = (53 * hash) + getLocalPeerPort().hashCode();
            hash = (37 * hash) + REMOTE_PEER_PORT_FIELD_NUMBER;
            hash = (53 * hash) + getRemotePeerPort().hashCode();
            hash = (37 * hash) + USED_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getUsed());
            if (!internalGetCSlots().getMap().isEmpty()) {
                hash = (37 * hash) + C_SLOTS_FIELD_NUMBER;
                hash = (53 * hash) + internalGetCSlots().hashCode();
            }
            if (!internalGetLSlots().getMap().isEmpty()) {
                hash = (37 * hash) + L_SLOTS_FIELD_NUMBER;
                hash = (53 * hash) + internalGetLSlots().hashCode();
            }
            if (!internalGetSSlots().getMap().isEmpty()) {
                hash = (37 * hash) + S_SLOTS_FIELD_NUMBER;
                hash = (53 * hash) + internalGetSSlots().hashCode();
            }
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.OpticalLinkDetails parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.OpticalLinkDetails parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.OpticalLinkDetails parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.OpticalLinkDetails parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.OpticalLinkDetails parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.OpticalLinkDetails parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.OpticalLinkDetails parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.OpticalLinkDetails parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.OpticalLinkDetails parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.OpticalLinkDetails parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.OpticalLinkDetails parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.OpticalLinkDetails parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.OpticalLinkDetails prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code context.OpticalLinkDetails}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.OpticalLinkDetails)
        context.ContextOuterClass.OpticalLinkDetailsOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_OpticalLinkDetails_descriptor;
            }

            @SuppressWarnings({ "rawtypes" })
            protected com.google.protobuf.MapField internalGetMapField(int number) {
                switch(number) {
                    case 7:
                        return internalGetCSlots();
                    case 8:
                        return internalGetLSlots();
                    case 9:
                        return internalGetSSlots();
                    default:
                        throw new RuntimeException("Invalid map field number: " + number);
                }
            }

            @SuppressWarnings({ "rawtypes" })
            protected com.google.protobuf.MapField internalGetMutableMapField(int number) {
                switch(number) {
                    case 7:
                        return internalGetMutableCSlots();
                    case 8:
                        return internalGetMutableLSlots();
                    case 9:
                        return internalGetMutableSSlots();
                    default:
                        throw new RuntimeException("Invalid map field number: " + number);
                }
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_OpticalLinkDetails_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalLinkDetails.class, context.ContextOuterClass.OpticalLinkDetails.Builder.class);
            }

            // Construct using context.ContextOuterClass.OpticalLinkDetails.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                length_ = 0F;
                srcPort_ = "";
                dstPort_ = "";
                localPeerPort_ = "";
                remotePeerPort_ = "";
                used_ = false;
                internalGetMutableCSlots().clear();
                internalGetMutableLSlots().clear();
                internalGetMutableSSlots().clear();
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_OpticalLinkDetails_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.OpticalLinkDetails getDefaultInstanceForType() {
                return context.ContextOuterClass.OpticalLinkDetails.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.OpticalLinkDetails build() {
                context.ContextOuterClass.OpticalLinkDetails result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.OpticalLinkDetails buildPartial() {
                context.ContextOuterClass.OpticalLinkDetails result = new context.ContextOuterClass.OpticalLinkDetails(this);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartial0(context.ContextOuterClass.OpticalLinkDetails result) {
                int from_bitField0_ = bitField0_;
                if (((from_bitField0_ & 0x00000001) != 0)) {
                    result.length_ = length_;
                }
                if (((from_bitField0_ & 0x00000002) != 0)) {
                    result.srcPort_ = srcPort_;
                }
                if (((from_bitField0_ & 0x00000004) != 0)) {
                    result.dstPort_ = dstPort_;
                }
                if (((from_bitField0_ & 0x00000008) != 0)) {
                    result.localPeerPort_ = localPeerPort_;
                }
                if (((from_bitField0_ & 0x00000010) != 0)) {
                    result.remotePeerPort_ = remotePeerPort_;
                }
                if (((from_bitField0_ & 0x00000020) != 0)) {
                    result.used_ = used_;
                }
                if (((from_bitField0_ & 0x00000040) != 0)) {
                    result.cSlots_ = internalGetCSlots();
                    result.cSlots_.makeImmutable();
                }
                if (((from_bitField0_ & 0x00000080) != 0)) {
                    result.lSlots_ = internalGetLSlots();
                    result.lSlots_.makeImmutable();
                }
                if (((from_bitField0_ & 0x00000100) != 0)) {
                    result.sSlots_ = internalGetSSlots();
                    result.sSlots_.makeImmutable();
                }
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.OpticalLinkDetails) {
                    return mergeFrom((context.ContextOuterClass.OpticalLinkDetails) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.OpticalLinkDetails other) {
                if (other == context.ContextOuterClass.OpticalLinkDetails.getDefaultInstance())
                    return this;
                if (other.getLength() != 0F) {
                    setLength(other.getLength());
                }
                if (!other.getSrcPort().isEmpty()) {
                    srcPort_ = other.srcPort_;
                    bitField0_ |= 0x00000002;
                    onChanged();
                }
                if (!other.getDstPort().isEmpty()) {
                    dstPort_ = other.dstPort_;
                    bitField0_ |= 0x00000004;
                    onChanged();
                }
                if (!other.getLocalPeerPort().isEmpty()) {
                    localPeerPort_ = other.localPeerPort_;
                    bitField0_ |= 0x00000008;
                    onChanged();
                }
                if (!other.getRemotePeerPort().isEmpty()) {
                    remotePeerPort_ = other.remotePeerPort_;
                    bitField0_ |= 0x00000010;
                    onChanged();
                }
                if (other.getUsed() != false) {
                    setUsed(other.getUsed());
                }
                internalGetMutableCSlots().mergeFrom(other.internalGetCSlots());
                bitField0_ |= 0x00000040;
                internalGetMutableLSlots().mergeFrom(other.internalGetLSlots());
                bitField0_ |= 0x00000080;
                internalGetMutableSSlots().mergeFrom(other.internalGetSSlots());
                bitField0_ |= 0x00000100;
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 13:
                                {
                                    length_ = input.readFloat();
                                    bitField0_ |= 0x00000001;
                                    break;
                                }
                            // case 13
                            case 18:
                                {
                                    srcPort_ = input.readStringRequireUtf8();
                                    bitField0_ |= 0x00000002;
                                    break;
                                }
                            // case 18
                            case 26:
                                {
                                    dstPort_ = input.readStringRequireUtf8();
                                    bitField0_ |= 0x00000004;
                                    break;
                                }
                            // case 26
                            case 34:
                                {
                                    localPeerPort_ = input.readStringRequireUtf8();
                                    bitField0_ |= 0x00000008;
                                    break;
                                }
                            // case 34
                            case 42:
                                {
                                    remotePeerPort_ = input.readStringRequireUtf8();
                                    bitField0_ |= 0x00000010;
                                    break;
                                }
                            // case 42
                            case 48:
                                {
                                    used_ = input.readBool();
                                    bitField0_ |= 0x00000020;
                                    break;
                                }
                            // case 48
                            case 58:
                                {
                                    com.google.protobuf.MapEntry<java.lang.String, java.lang.Integer> cSlots__ = input.readMessage(CSlotsDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                                    internalGetMutableCSlots().getMutableMap().put(cSlots__.getKey(), cSlots__.getValue());
                                    bitField0_ |= 0x00000040;
                                    break;
                                }
                            // case 58
                            case 66:
                                {
                                    com.google.protobuf.MapEntry<java.lang.String, java.lang.Integer> lSlots__ = input.readMessage(LSlotsDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                                    internalGetMutableLSlots().getMutableMap().put(lSlots__.getKey(), lSlots__.getValue());
                                    bitField0_ |= 0x00000080;
                                    break;
                                }
                            // case 66
                            case 74:
                                {
                                    com.google.protobuf.MapEntry<java.lang.String, java.lang.Integer> sSlots__ = input.readMessage(SSlotsDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                                    internalGetMutableSSlots().getMutableMap().put(sSlots__.getKey(), sSlots__.getValue());
                                    bitField0_ |= 0x00000100;
                                    break;
                                }
                            // case 74
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private float length_;

            /**
             * <code>float length = 1;</code>
             * @return The length.
             */
            @java.lang.Override
            public float getLength() {
                return length_;
            }

            /**
             * <code>float length = 1;</code>
             * @param value The length to set.
             * @return This builder for chaining.
             */
            public Builder setLength(float value) {
                length_ = value;
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>float length = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearLength() {
                bitField0_ = (bitField0_ & ~0x00000001);
                length_ = 0F;
                onChanged();
                return this;
            }

            private java.lang.Object srcPort_ = "";

            /**
             * <code>string src_port = 2;</code>
             * @return The srcPort.
             */
            public java.lang.String getSrcPort() {
                java.lang.Object ref = srcPort_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    srcPort_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }

            /**
             * <code>string src_port = 2;</code>
             * @return The bytes for srcPort.
             */
            public com.google.protobuf.ByteString getSrcPortBytes() {
                java.lang.Object ref = srcPort_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                    srcPort_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }

            /**
             * <code>string src_port = 2;</code>
             * @param value The srcPort to set.
             * @return This builder for chaining.
             */
            public Builder setSrcPort(java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                srcPort_ = value;
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>string src_port = 2;</code>
             * @return This builder for chaining.
             */
            public Builder clearSrcPort() {
                srcPort_ = getDefaultInstance().getSrcPort();
                bitField0_ = (bitField0_ & ~0x00000002);
                onChanged();
                return this;
            }

            /**
             * <code>string src_port = 2;</code>
             * @param value The bytes for srcPort to set.
             * @return This builder for chaining.
             */
            public Builder setSrcPortBytes(com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);
                srcPort_ = value;
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            private java.lang.Object dstPort_ = "";

            /**
             * <code>string dst_port = 3;</code>
             * @return The dstPort.
             */
            public java.lang.String getDstPort() {
                java.lang.Object ref = dstPort_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    dstPort_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }

            /**
             * <code>string dst_port = 3;</code>
             * @return The bytes for dstPort.
             */
            public com.google.protobuf.ByteString getDstPortBytes() {
                java.lang.Object ref = dstPort_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                    dstPort_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }

            /**
             * <code>string dst_port = 3;</code>
             * @param value The dstPort to set.
             * @return This builder for chaining.
             */
            public Builder setDstPort(java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                dstPort_ = value;
                bitField0_ |= 0x00000004;
                onChanged();
                return this;
            }

            /**
             * <code>string dst_port = 3;</code>
             * @return This builder for chaining.
             */
            public Builder clearDstPort() {
                dstPort_ = getDefaultInstance().getDstPort();
                bitField0_ = (bitField0_ & ~0x00000004);
                onChanged();
                return this;
            }

            /**
             * <code>string dst_port = 3;</code>
             * @param value The bytes for dstPort to set.
             * @return This builder for chaining.
             */
            public Builder setDstPortBytes(com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);
                dstPort_ = value;
                bitField0_ |= 0x00000004;
                onChanged();
                return this;
            }

            private java.lang.Object localPeerPort_ = "";

            /**
             * <code>string local_peer_port = 4;</code>
             * @return The localPeerPort.
             */
            public java.lang.String getLocalPeerPort() {
                java.lang.Object ref = localPeerPort_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    localPeerPort_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }

            /**
             * <code>string local_peer_port = 4;</code>
             * @return The bytes for localPeerPort.
             */
            public com.google.protobuf.ByteString getLocalPeerPortBytes() {
                java.lang.Object ref = localPeerPort_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                    localPeerPort_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }

            /**
             * <code>string local_peer_port = 4;</code>
             * @param value The localPeerPort to set.
             * @return This builder for chaining.
             */
            public Builder setLocalPeerPort(java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                localPeerPort_ = value;
                bitField0_ |= 0x00000008;
                onChanged();
                return this;
            }

            /**
             * <code>string local_peer_port = 4;</code>
             * @return This builder for chaining.
             */
            public Builder clearLocalPeerPort() {
                localPeerPort_ = getDefaultInstance().getLocalPeerPort();
                bitField0_ = (bitField0_ & ~0x00000008);
                onChanged();
                return this;
            }

            /**
             * <code>string local_peer_port = 4;</code>
             * @param value The bytes for localPeerPort to set.
             * @return This builder for chaining.
             */
            public Builder setLocalPeerPortBytes(com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);
                localPeerPort_ = value;
                bitField0_ |= 0x00000008;
                onChanged();
                return this;
            }

            private java.lang.Object remotePeerPort_ = "";

            /**
             * <code>string remote_peer_port = 5;</code>
             * @return The remotePeerPort.
             */
            public java.lang.String getRemotePeerPort() {
                java.lang.Object ref = remotePeerPort_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    remotePeerPort_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }

            /**
             * <code>string remote_peer_port = 5;</code>
             * @return The bytes for remotePeerPort.
             */
            public com.google.protobuf.ByteString getRemotePeerPortBytes() {
                java.lang.Object ref = remotePeerPort_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                    remotePeerPort_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }

            /**
             * <code>string remote_peer_port = 5;</code>
             * @param value The remotePeerPort to set.
             * @return This builder for chaining.
             */
            public Builder setRemotePeerPort(java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                remotePeerPort_ = value;
                bitField0_ |= 0x00000010;
                onChanged();
                return this;
            }

            /**
             * <code>string remote_peer_port = 5;</code>
             * @return This builder for chaining.
             */
            public Builder clearRemotePeerPort() {
                remotePeerPort_ = getDefaultInstance().getRemotePeerPort();
                bitField0_ = (bitField0_ & ~0x00000010);
                onChanged();
                return this;
            }

            /**
             * <code>string remote_peer_port = 5;</code>
             * @param value The bytes for remotePeerPort to set.
             * @return This builder for chaining.
             */
            public Builder setRemotePeerPortBytes(com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);
                remotePeerPort_ = value;
                bitField0_ |= 0x00000010;
                onChanged();
                return this;
            }

            private boolean used_;

            /**
             * <code>bool used = 6;</code>
             * @return The used.
             */
            @java.lang.Override
            public boolean getUsed() {
                return used_;
            }

            /**
             * <code>bool used = 6;</code>
             * @param value The used to set.
             * @return This builder for chaining.
             */
            public Builder setUsed(boolean value) {
                used_ = value;
                bitField0_ |= 0x00000020;
                onChanged();
                return this;
            }

            /**
             * <code>bool used = 6;</code>
             * @return This builder for chaining.
             */
            public Builder clearUsed() {
                bitField0_ = (bitField0_ & ~0x00000020);
                used_ = false;
                onChanged();
                return this;
            }

            private com.google.protobuf.MapField<java.lang.String, java.lang.Integer> cSlots_;

            private com.google.protobuf.MapField<java.lang.String, java.lang.Integer> internalGetCSlots() {
                if (cSlots_ == null) {
                    return com.google.protobuf.MapField.emptyMapField(CSlotsDefaultEntryHolder.defaultEntry);
                }
                return cSlots_;
            }

            private com.google.protobuf.MapField<java.lang.String, java.lang.Integer> internalGetMutableCSlots() {
                if (cSlots_ == null) {
                    cSlots_ = com.google.protobuf.MapField.newMapField(CSlotsDefaultEntryHolder.defaultEntry);
                }
                if (!cSlots_.isMutable()) {
                    cSlots_ = cSlots_.copy();
                }
                bitField0_ |= 0x00000040;
                onChanged();
                return cSlots_;
            }

            public int getCSlotsCount() {
                return internalGetCSlots().getMap().size();
            }

            /**
             * <code>map&lt;string, int32&gt; c_slots = 7;</code>
             */
            @java.lang.Override
            public boolean containsCSlots(java.lang.String key) {
                if (key == null) {
                    throw new NullPointerException("map key");
                }
                return internalGetCSlots().getMap().containsKey(key);
            }

            /**
             * Use {@link #getCSlotsMap()} instead.
             */
            @java.lang.Override
            @java.lang.Deprecated
            public java.util.Map<java.lang.String, java.lang.Integer> getCSlots() {
                return getCSlotsMap();
            }

            /**
             * <code>map&lt;string, int32&gt; c_slots = 7;</code>
             */
            @java.lang.Override
            public java.util.Map<java.lang.String, java.lang.Integer> getCSlotsMap() {
                return internalGetCSlots().getMap();
            }

            /**
             * <code>map&lt;string, int32&gt; c_slots = 7;</code>
             */
            @java.lang.Override
            public int getCSlotsOrDefault(java.lang.String key, int defaultValue) {
                if (key == null) {
                    throw new NullPointerException("map key");
                }
                java.util.Map<java.lang.String, java.lang.Integer> map = internalGetCSlots().getMap();
                return map.containsKey(key) ? map.get(key) : defaultValue;
            }

            /**
             * <code>map&lt;string, int32&gt; c_slots = 7;</code>
             */
            @java.lang.Override
            public int getCSlotsOrThrow(java.lang.String key) {
                if (key == null) {
                    throw new NullPointerException("map key");
                }
                java.util.Map<java.lang.String, java.lang.Integer> map = internalGetCSlots().getMap();
                if (!map.containsKey(key)) {
                    throw new java.lang.IllegalArgumentException();
                }
                return map.get(key);
            }

            public Builder clearCSlots() {
                bitField0_ = (bitField0_ & ~0x00000040);
                internalGetMutableCSlots().getMutableMap().clear();
                return this;
            }

            /**
             * <code>map&lt;string, int32&gt; c_slots = 7;</code>
             */
            public Builder removeCSlots(java.lang.String key) {
                if (key == null) {
                    throw new NullPointerException("map key");
                }
                internalGetMutableCSlots().getMutableMap().remove(key);
                return this;
            }

            /**
             * Use alternate mutation accessors instead.
             */
            @java.lang.Deprecated
            public java.util.Map<java.lang.String, java.lang.Integer> getMutableCSlots() {
                bitField0_ |= 0x00000040;
                return internalGetMutableCSlots().getMutableMap();
            }

            /**
             * <code>map&lt;string, int32&gt; c_slots = 7;</code>
             */
            public Builder putCSlots(java.lang.String key, int value) {
                if (key == null) {
                    throw new NullPointerException("map key");
                }
                internalGetMutableCSlots().getMutableMap().put(key, value);
                bitField0_ |= 0x00000040;
                return this;
            }

            /**
             * <code>map&lt;string, int32&gt; c_slots = 7;</code>
             */
            public Builder putAllCSlots(java.util.Map<java.lang.String, java.lang.Integer> values) {
                internalGetMutableCSlots().getMutableMap().putAll(values);
                bitField0_ |= 0x00000040;
                return this;
            }

            private com.google.protobuf.MapField<java.lang.String, java.lang.Integer> lSlots_;

            private com.google.protobuf.MapField<java.lang.String, java.lang.Integer> internalGetLSlots() {
                if (lSlots_ == null) {
                    return com.google.protobuf.MapField.emptyMapField(LSlotsDefaultEntryHolder.defaultEntry);
                }
                return lSlots_;
            }

            private com.google.protobuf.MapField<java.lang.String, java.lang.Integer> internalGetMutableLSlots() {
                if (lSlots_ == null) {
                    lSlots_ = com.google.protobuf.MapField.newMapField(LSlotsDefaultEntryHolder.defaultEntry);
                }
                if (!lSlots_.isMutable()) {
                    lSlots_ = lSlots_.copy();
                }
                bitField0_ |= 0x00000080;
                onChanged();
                return lSlots_;
            }

            public int getLSlotsCount() {
                return internalGetLSlots().getMap().size();
            }

            /**
             * <code>map&lt;string, int32&gt; l_slots = 8;</code>
             */
            @java.lang.Override
            public boolean containsLSlots(java.lang.String key) {
                if (key == null) {
                    throw new NullPointerException("map key");
                }
                return internalGetLSlots().getMap().containsKey(key);
            }

            /**
             * Use {@link #getLSlotsMap()} instead.
             */
            @java.lang.Override
            @java.lang.Deprecated
            public java.util.Map<java.lang.String, java.lang.Integer> getLSlots() {
                return getLSlotsMap();
            }

            /**
             * <code>map&lt;string, int32&gt; l_slots = 8;</code>
             */
            @java.lang.Override
            public java.util.Map<java.lang.String, java.lang.Integer> getLSlotsMap() {
                return internalGetLSlots().getMap();
            }

            /**
             * <code>map&lt;string, int32&gt; l_slots = 8;</code>
             */
            @java.lang.Override
            public int getLSlotsOrDefault(java.lang.String key, int defaultValue) {
                if (key == null) {
                    throw new NullPointerException("map key");
                }
                java.util.Map<java.lang.String, java.lang.Integer> map = internalGetLSlots().getMap();
                return map.containsKey(key) ? map.get(key) : defaultValue;
            }

            /**
             * <code>map&lt;string, int32&gt; l_slots = 8;</code>
             */
            @java.lang.Override
            public int getLSlotsOrThrow(java.lang.String key) {
                if (key == null) {
                    throw new NullPointerException("map key");
                }
                java.util.Map<java.lang.String, java.lang.Integer> map = internalGetLSlots().getMap();
                if (!map.containsKey(key)) {
                    throw new java.lang.IllegalArgumentException();
                }
                return map.get(key);
            }

            public Builder clearLSlots() {
                bitField0_ = (bitField0_ & ~0x00000080);
                internalGetMutableLSlots().getMutableMap().clear();
                return this;
            }

            /**
             * <code>map&lt;string, int32&gt; l_slots = 8;</code>
             */
            public Builder removeLSlots(java.lang.String key) {
                if (key == null) {
                    throw new NullPointerException("map key");
                }
                internalGetMutableLSlots().getMutableMap().remove(key);
                return this;
            }

            /**
             * Use alternate mutation accessors instead.
             */
            @java.lang.Deprecated
            public java.util.Map<java.lang.String, java.lang.Integer> getMutableLSlots() {
                bitField0_ |= 0x00000080;
                return internalGetMutableLSlots().getMutableMap();
            }

            /**
             * <code>map&lt;string, int32&gt; l_slots = 8;</code>
             */
            public Builder putLSlots(java.lang.String key, int value) {
                if (key == null) {
                    throw new NullPointerException("map key");
                }
                internalGetMutableLSlots().getMutableMap().put(key, value);
                bitField0_ |= 0x00000080;
                return this;
            }

            /**
             * <code>map&lt;string, int32&gt; l_slots = 8;</code>
             */
            public Builder putAllLSlots(java.util.Map<java.lang.String, java.lang.Integer> values) {
                internalGetMutableLSlots().getMutableMap().putAll(values);
                bitField0_ |= 0x00000080;
                return this;
            }

            private com.google.protobuf.MapField<java.lang.String, java.lang.Integer> sSlots_;

            private com.google.protobuf.MapField<java.lang.String, java.lang.Integer> internalGetSSlots() {
                if (sSlots_ == null) {
                    return com.google.protobuf.MapField.emptyMapField(SSlotsDefaultEntryHolder.defaultEntry);
                }
                return sSlots_;
            }

            private com.google.protobuf.MapField<java.lang.String, java.lang.Integer> internalGetMutableSSlots() {
                if (sSlots_ == null) {
                    sSlots_ = com.google.protobuf.MapField.newMapField(SSlotsDefaultEntryHolder.defaultEntry);
                }
                if (!sSlots_.isMutable()) {
                    sSlots_ = sSlots_.copy();
                }
                bitField0_ |= 0x00000100;
                onChanged();
                return sSlots_;
            }

            public int getSSlotsCount() {
                return internalGetSSlots().getMap().size();
            }

            /**
             * <code>map&lt;string, int32&gt; s_slots = 9;</code>
             */
            @java.lang.Override
            public boolean containsSSlots(java.lang.String key) {
                if (key == null) {
                    throw new NullPointerException("map key");
                }
                return internalGetSSlots().getMap().containsKey(key);
            }

            /**
             * Use {@link #getSSlotsMap()} instead.
             */
            @java.lang.Override
            @java.lang.Deprecated
            public java.util.Map<java.lang.String, java.lang.Integer> getSSlots() {
                return getSSlotsMap();
            }

            /**
             * <code>map&lt;string, int32&gt; s_slots = 9;</code>
             */
            @java.lang.Override
            public java.util.Map<java.lang.String, java.lang.Integer> getSSlotsMap() {
                return internalGetSSlots().getMap();
            }

            /**
             * <code>map&lt;string, int32&gt; s_slots = 9;</code>
             */
            @java.lang.Override
            public int getSSlotsOrDefault(java.lang.String key, int defaultValue) {
                if (key == null) {
                    throw new NullPointerException("map key");
                }
                java.util.Map<java.lang.String, java.lang.Integer> map = internalGetSSlots().getMap();
                return map.containsKey(key) ? map.get(key) : defaultValue;
            }

            /**
             * <code>map&lt;string, int32&gt; s_slots = 9;</code>
             */
            @java.lang.Override
            public int getSSlotsOrThrow(java.lang.String key) {
                if (key == null) {
                    throw new NullPointerException("map key");
                }
                java.util.Map<java.lang.String, java.lang.Integer> map = internalGetSSlots().getMap();
                if (!map.containsKey(key)) {
                    throw new java.lang.IllegalArgumentException();
                }
                return map.get(key);
            }

            public Builder clearSSlots() {
                bitField0_ = (bitField0_ & ~0x00000100);
                internalGetMutableSSlots().getMutableMap().clear();
                return this;
            }

            /**
             * <code>map&lt;string, int32&gt; s_slots = 9;</code>
             */
            public Builder removeSSlots(java.lang.String key) {
                if (key == null) {
                    throw new NullPointerException("map key");
                }
                internalGetMutableSSlots().getMutableMap().remove(key);
                return this;
            }

            /**
             * Use alternate mutation accessors instead.
             */
            @java.lang.Deprecated
            public java.util.Map<java.lang.String, java.lang.Integer> getMutableSSlots() {
                bitField0_ |= 0x00000100;
                return internalGetMutableSSlots().getMutableMap();
            }

            /**
             * <code>map&lt;string, int32&gt; s_slots = 9;</code>
             */
            public Builder putSSlots(java.lang.String key, int value) {
                if (key == null) {
                    throw new NullPointerException("map key");
                }
                internalGetMutableSSlots().getMutableMap().put(key, value);
                bitField0_ |= 0x00000100;
                return this;
            }

            /**
             * <code>map&lt;string, int32&gt; s_slots = 9;</code>
             */
            public Builder putAllSSlots(java.util.Map<java.lang.String, java.lang.Integer> values) {
                internalGetMutableSSlots().getMutableMap().putAll(values);
                bitField0_ |= 0x00000100;
                return this;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.OpticalLinkDetails)
        }

        // @@protoc_insertion_point(class_scope:context.OpticalLinkDetails)
        private static final context.ContextOuterClass.OpticalLinkDetails DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.OpticalLinkDetails();
        }

        public static context.ContextOuterClass.OpticalLinkDetails getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<OpticalLinkDetails> PARSER = new com.google.protobuf.AbstractParser<OpticalLinkDetails>() {

            @java.lang.Override
            public OpticalLinkDetails parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<OpticalLinkDetails> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<OpticalLinkDetails> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.OpticalLinkDetails getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface OpticalLinkOrBuilder extends // @@protoc_insertion_point(interface_extends:context.OpticalLink)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>string name = 1;</code>
         * @return The name.
         */
        java.lang.String getName();

        /**
         * <code>string name = 1;</code>
         * @return The bytes for name.
         */
        com.google.protobuf.ByteString getNameBytes();

        /**
         * <code>.context.OpticalLinkDetails optical_details = 2;</code>
         * @return Whether the opticalDetails field is set.
         */
        boolean hasOpticalDetails();

        /**
         * <code>.context.OpticalLinkDetails optical_details = 2;</code>
         * @return The opticalDetails.
         */
        context.ContextOuterClass.OpticalLinkDetails getOpticalDetails();

        /**
         * <code>.context.OpticalLinkDetails optical_details = 2;</code>
         */
        context.ContextOuterClass.OpticalLinkDetailsOrBuilder getOpticalDetailsOrBuilder();

        /**
         * <code>.context.LinkId link_id = 3;</code>
         * @return Whether the linkId field is set.
         */
        boolean hasLinkId();

        /**
         * <code>.context.LinkId link_id = 3;</code>
         * @return The linkId.
         */
        context.ContextOuterClass.LinkId getLinkId();

        /**
         * <code>.context.LinkId link_id = 3;</code>
         */
        context.ContextOuterClass.LinkIdOrBuilder getLinkIdOrBuilder();

        /**
         * <code>repeated .context.EndPointId link_endpoint_ids = 4;</code>
         */
        java.util.List<context.ContextOuterClass.EndPointId> getLinkEndpointIdsList();

        /**
         * <code>repeated .context.EndPointId link_endpoint_ids = 4;</code>
         */
        context.ContextOuterClass.EndPointId getLinkEndpointIds(int index);

        /**
         * <code>repeated .context.EndPointId link_endpoint_ids = 4;</code>
         */
        int getLinkEndpointIdsCount();

        /**
         * <code>repeated .context.EndPointId link_endpoint_ids = 4;</code>
         */
        java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> getLinkEndpointIdsOrBuilderList();

        /**
         * <code>repeated .context.EndPointId link_endpoint_ids = 4;</code>
         */
        context.ContextOuterClass.EndPointIdOrBuilder getLinkEndpointIdsOrBuilder(int index);
    }

    /**
     * Protobuf type {@code context.OpticalLink}
     */
    public static final class OpticalLink extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.OpticalLink)
    OpticalLinkOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use OpticalLink.newBuilder() to construct.
        private OpticalLink(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private OpticalLink() {
            name_ = "";
            linkEndpointIds_ = java.util.Collections.emptyList();
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new OpticalLink();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_OpticalLink_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_OpticalLink_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalLink.class, context.ContextOuterClass.OpticalLink.Builder.class);
        }

        public static final int NAME_FIELD_NUMBER = 1;

        @SuppressWarnings("serial")
        private volatile java.lang.Object name_ = "";

        /**
         * <code>string name = 1;</code>
         * @return The name.
         */
        @java.lang.Override
        public java.lang.String getName() {
            java.lang.Object ref = name_;
            if (ref instanceof java.lang.String) {
                return (java.lang.String) ref;
            } else {
                com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                java.lang.String s = bs.toStringUtf8();
                name_ = s;
                return s;
            }
        }

        /**
         * <code>string name = 1;</code>
         * @return The bytes for name.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString getNameBytes() {
            java.lang.Object ref = name_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                name_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int OPTICAL_DETAILS_FIELD_NUMBER = 2;

        private context.ContextOuterClass.OpticalLinkDetails opticalDetails_;

        /**
         * <code>.context.OpticalLinkDetails optical_details = 2;</code>
         * @return Whether the opticalDetails field is set.
         */
        @java.lang.Override
        public boolean hasOpticalDetails() {
            return opticalDetails_ != null;
        }

        /**
         * <code>.context.OpticalLinkDetails optical_details = 2;</code>
         * @return The opticalDetails.
         */
        @java.lang.Override
        public context.ContextOuterClass.OpticalLinkDetails getOpticalDetails() {
            return opticalDetails_ == null ? context.ContextOuterClass.OpticalLinkDetails.getDefaultInstance() : opticalDetails_;
        }

        /**
         * <code>.context.OpticalLinkDetails optical_details = 2;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.OpticalLinkDetailsOrBuilder getOpticalDetailsOrBuilder() {
            return opticalDetails_ == null ? context.ContextOuterClass.OpticalLinkDetails.getDefaultInstance() : opticalDetails_;
        }

        public static final int LINK_ID_FIELD_NUMBER = 3;

        private context.ContextOuterClass.LinkId linkId_;

        /**
         * <code>.context.LinkId link_id = 3;</code>
         * @return Whether the linkId field is set.
         */
        @java.lang.Override
        public boolean hasLinkId() {
            return linkId_ != null;
        }

        /**
         * <code>.context.LinkId link_id = 3;</code>
         * @return The linkId.
         */
        @java.lang.Override
        public context.ContextOuterClass.LinkId getLinkId() {
            return linkId_ == null ? context.ContextOuterClass.LinkId.getDefaultInstance() : linkId_;
        }

        /**
         * <code>.context.LinkId link_id = 3;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.LinkIdOrBuilder getLinkIdOrBuilder() {
            return linkId_ == null ? context.ContextOuterClass.LinkId.getDefaultInstance() : linkId_;
        }

        public static final int LINK_ENDPOINT_IDS_FIELD_NUMBER = 4;

        @SuppressWarnings("serial")
        private java.util.List<context.ContextOuterClass.EndPointId> linkEndpointIds_;

        /**
         * <code>repeated .context.EndPointId link_endpoint_ids = 4;</code>
         */
        @java.lang.Override
        public java.util.List<context.ContextOuterClass.EndPointId> getLinkEndpointIdsList() {
            return linkEndpointIds_;
        }

        /**
         * <code>repeated .context.EndPointId link_endpoint_ids = 4;</code>
         */
        @java.lang.Override
        public java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> getLinkEndpointIdsOrBuilderList() {
            return linkEndpointIds_;
        }

        /**
         * <code>repeated .context.EndPointId link_endpoint_ids = 4;</code>
         */
        @java.lang.Override
        public int getLinkEndpointIdsCount() {
            return linkEndpointIds_.size();
        }

        /**
         * <code>repeated .context.EndPointId link_endpoint_ids = 4;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.EndPointId getLinkEndpointIds(int index) {
            return linkEndpointIds_.get(index);
        }

        /**
         * <code>repeated .context.EndPointId link_endpoint_ids = 4;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.EndPointIdOrBuilder getLinkEndpointIdsOrBuilder(int index) {
            return linkEndpointIds_.get(index);
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
            }
            if (opticalDetails_ != null) {
                output.writeMessage(2, getOpticalDetails());
            }
            if (linkId_ != null) {
                output.writeMessage(3, getLinkId());
            }
            for (int i = 0; i < linkEndpointIds_.size(); i++) {
                output.writeMessage(4, linkEndpointIds_.get(i));
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
            }
            if (opticalDetails_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getOpticalDetails());
            }
            if (linkId_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, getLinkId());
            }
            for (int i = 0; i < linkEndpointIds_.size(); i++) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, linkEndpointIds_.get(i));
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.OpticalLink)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.OpticalLink other = (context.ContextOuterClass.OpticalLink) obj;
            if (!getName().equals(other.getName()))
                return false;
            if (hasOpticalDetails() != other.hasOpticalDetails())
                return false;
            if (hasOpticalDetails()) {
                if (!getOpticalDetails().equals(other.getOpticalDetails()))
                    return false;
            }
            if (hasLinkId() != other.hasLinkId())
                return false;
            if (hasLinkId()) {
                if (!getLinkId().equals(other.getLinkId()))
                    return false;
            }
            if (!getLinkEndpointIdsList().equals(other.getLinkEndpointIdsList()))
                return false;
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            hash = (37 * hash) + NAME_FIELD_NUMBER;
            hash = (53 * hash) + getName().hashCode();
            if (hasOpticalDetails()) {
                hash = (37 * hash) + OPTICAL_DETAILS_FIELD_NUMBER;
                hash = (53 * hash) + getOpticalDetails().hashCode();
            }
            if (hasLinkId()) {
                hash = (37 * hash) + LINK_ID_FIELD_NUMBER;
                hash = (53 * hash) + getLinkId().hashCode();
            }
            if (getLinkEndpointIdsCount() > 0) {
                hash = (37 * hash) + LINK_ENDPOINT_IDS_FIELD_NUMBER;
                hash = (53 * hash) + getLinkEndpointIdsList().hashCode();
            }
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.OpticalLink parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.OpticalLink parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.OpticalLink parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.OpticalLink parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.OpticalLink parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.OpticalLink parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.OpticalLink parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.OpticalLink parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.OpticalLink parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.OpticalLink parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.OpticalLink parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.OpticalLink parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.OpticalLink prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code context.OpticalLink}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.OpticalLink)
        context.ContextOuterClass.OpticalLinkOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_OpticalLink_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_OpticalLink_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.OpticalLink.class, context.ContextOuterClass.OpticalLink.Builder.class);
            }

            // Construct using context.ContextOuterClass.OpticalLink.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                name_ = "";
                opticalDetails_ = null;
                if (opticalDetailsBuilder_ != null) {
                    opticalDetailsBuilder_.dispose();
                    opticalDetailsBuilder_ = null;
                }
                linkId_ = null;
                if (linkIdBuilder_ != null) {
                    linkIdBuilder_.dispose();
                    linkIdBuilder_ = null;
                }
                if (linkEndpointIdsBuilder_ == null) {
                    linkEndpointIds_ = java.util.Collections.emptyList();
                } else {
                    linkEndpointIds_ = null;
                    linkEndpointIdsBuilder_.clear();
                }
                bitField0_ = (bitField0_ & ~0x00000008);
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_OpticalLink_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.OpticalLink getDefaultInstanceForType() {
                return context.ContextOuterClass.OpticalLink.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.OpticalLink build() {
                context.ContextOuterClass.OpticalLink result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.OpticalLink buildPartial() {
                context.ContextOuterClass.OpticalLink result = new context.ContextOuterClass.OpticalLink(this);
                buildPartialRepeatedFields(result);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartialRepeatedFields(context.ContextOuterClass.OpticalLink result) {
                if (linkEndpointIdsBuilder_ == null) {
                    if (((bitField0_ & 0x00000008) != 0)) {
                        linkEndpointIds_ = java.util.Collections.unmodifiableList(linkEndpointIds_);
                        bitField0_ = (bitField0_ & ~0x00000008);
                    }
                    result.linkEndpointIds_ = linkEndpointIds_;
                } else {
                    result.linkEndpointIds_ = linkEndpointIdsBuilder_.build();
                }
            }

            private void buildPartial0(context.ContextOuterClass.OpticalLink result) {
                int from_bitField0_ = bitField0_;
                if (((from_bitField0_ & 0x00000001) != 0)) {
                    result.name_ = name_;
                }
                if (((from_bitField0_ & 0x00000002) != 0)) {
                    result.opticalDetails_ = opticalDetailsBuilder_ == null ? opticalDetails_ : opticalDetailsBuilder_.build();
                }
                if (((from_bitField0_ & 0x00000004) != 0)) {
                    result.linkId_ = linkIdBuilder_ == null ? linkId_ : linkIdBuilder_.build();
                }
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.OpticalLink) {
                    return mergeFrom((context.ContextOuterClass.OpticalLink) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.OpticalLink other) {
                if (other == context.ContextOuterClass.OpticalLink.getDefaultInstance())
                    return this;
                if (!other.getName().isEmpty()) {
                    name_ = other.name_;
                    bitField0_ |= 0x00000001;
                    onChanged();
                }
                if (other.hasOpticalDetails()) {
                    mergeOpticalDetails(other.getOpticalDetails());
                }
                if (other.hasLinkId()) {
                    mergeLinkId(other.getLinkId());
                }
                if (linkEndpointIdsBuilder_ == null) {
                    if (!other.linkEndpointIds_.isEmpty()) {
                        if (linkEndpointIds_.isEmpty()) {
                            linkEndpointIds_ = other.linkEndpointIds_;
                            bitField0_ = (bitField0_ & ~0x00000008);
                        } else {
                            ensureLinkEndpointIdsIsMutable();
                            linkEndpointIds_.addAll(other.linkEndpointIds_);
                        }
                        onChanged();
                    }
                } else {
                    if (!other.linkEndpointIds_.isEmpty()) {
                        if (linkEndpointIdsBuilder_.isEmpty()) {
                            linkEndpointIdsBuilder_.dispose();
                            linkEndpointIdsBuilder_ = null;
                            linkEndpointIds_ = other.linkEndpointIds_;
                            bitField0_ = (bitField0_ & ~0x00000008);
                            linkEndpointIdsBuilder_ = com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? getLinkEndpointIdsFieldBuilder() : null;
                        } else {
                            linkEndpointIdsBuilder_.addAllMessages(other.linkEndpointIds_);
                        }
                    }
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 10:
                                {
                                    name_ = input.readStringRequireUtf8();
                                    bitField0_ |= 0x00000001;
                                    break;
                                }
                            // case 10
                            case 18:
                                {
                                    input.readMessage(getOpticalDetailsFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000002;
                                    break;
                                }
                            // case 18
                            case 26:
                                {
                                    input.readMessage(getLinkIdFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000004;
                                    break;
                                }
                            // case 26
                            case 34:
                                {
                                    context.ContextOuterClass.EndPointId m = input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry);
                                    if (linkEndpointIdsBuilder_ == null) {
                                        ensureLinkEndpointIdsIsMutable();
                                        linkEndpointIds_.add(m);
                                    } else {
                                        linkEndpointIdsBuilder_.addMessage(m);
                                    }
                                    break;
                                }
                            // case 34
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private java.lang.Object name_ = "";

            /**
             * <code>string name = 1;</code>
             * @return The name.
             */
            public java.lang.String getName() {
                java.lang.Object ref = name_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    name_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }

            /**
             * <code>string name = 1;</code>
             * @return The bytes for name.
             */
            public com.google.protobuf.ByteString getNameBytes() {
                java.lang.Object ref = name_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
                    name_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }

            /**
             * <code>string name = 1;</code>
             * @param value The name to set.
             * @return This builder for chaining.
             */
            public Builder setName(java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                name_ = value;
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>string name = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearName() {
                name_ = getDefaultInstance().getName();
                bitField0_ = (bitField0_ & ~0x00000001);
                onChanged();
                return this;
            }

            /**
             * <code>string name = 1;</code>
             * @param value The bytes for name to set.
             * @return This builder for chaining.
             */
            public Builder setNameBytes(com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);
                name_ = value;
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            private context.ContextOuterClass.OpticalLinkDetails opticalDetails_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.OpticalLinkDetails, context.ContextOuterClass.OpticalLinkDetails.Builder, context.ContextOuterClass.OpticalLinkDetailsOrBuilder> opticalDetailsBuilder_;

            /**
             * <code>.context.OpticalLinkDetails optical_details = 2;</code>
             * @return Whether the opticalDetails field is set.
             */
            public boolean hasOpticalDetails() {
                return ((bitField0_ & 0x00000002) != 0);
            }

            /**
             * <code>.context.OpticalLinkDetails optical_details = 2;</code>
             * @return The opticalDetails.
             */
            public context.ContextOuterClass.OpticalLinkDetails getOpticalDetails() {
                if (opticalDetailsBuilder_ == null) {
                    return opticalDetails_ == null ? context.ContextOuterClass.OpticalLinkDetails.getDefaultInstance() : opticalDetails_;
                } else {
                    return opticalDetailsBuilder_.getMessage();
                }
            }

            /**
             * <code>.context.OpticalLinkDetails optical_details = 2;</code>
             */
            public Builder setOpticalDetails(context.ContextOuterClass.OpticalLinkDetails value) {
                if (opticalDetailsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    opticalDetails_ = value;
                } else {
                    opticalDetailsBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>.context.OpticalLinkDetails optical_details = 2;</code>
             */
            public Builder setOpticalDetails(context.ContextOuterClass.OpticalLinkDetails.Builder builderForValue) {
                if (opticalDetailsBuilder_ == null) {
                    opticalDetails_ = builderForValue.build();
                } else {
                    opticalDetailsBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>.context.OpticalLinkDetails optical_details = 2;</code>
             */
            public Builder mergeOpticalDetails(context.ContextOuterClass.OpticalLinkDetails value) {
                if (opticalDetailsBuilder_ == null) {
                    if (((bitField0_ & 0x00000002) != 0) && opticalDetails_ != null && opticalDetails_ != context.ContextOuterClass.OpticalLinkDetails.getDefaultInstance()) {
                        getOpticalDetailsBuilder().mergeFrom(value);
                    } else {
                        opticalDetails_ = value;
                    }
                } else {
                    opticalDetailsBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>.context.OpticalLinkDetails optical_details = 2;</code>
             */
            public Builder clearOpticalDetails() {
                bitField0_ = (bitField0_ & ~0x00000002);
                opticalDetails_ = null;
                if (opticalDetailsBuilder_ != null) {
                    opticalDetailsBuilder_.dispose();
                    opticalDetailsBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.OpticalLinkDetails optical_details = 2;</code>
             */
            public context.ContextOuterClass.OpticalLinkDetails.Builder getOpticalDetailsBuilder() {
                bitField0_ |= 0x00000002;
                onChanged();
                return getOpticalDetailsFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.OpticalLinkDetails optical_details = 2;</code>
             */
            public context.ContextOuterClass.OpticalLinkDetailsOrBuilder getOpticalDetailsOrBuilder() {
                if (opticalDetailsBuilder_ != null) {
                    return opticalDetailsBuilder_.getMessageOrBuilder();
                } else {
                    return opticalDetails_ == null ? context.ContextOuterClass.OpticalLinkDetails.getDefaultInstance() : opticalDetails_;
                }
            }

            /**
             * <code>.context.OpticalLinkDetails optical_details = 2;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.OpticalLinkDetails, context.ContextOuterClass.OpticalLinkDetails.Builder, context.ContextOuterClass.OpticalLinkDetailsOrBuilder> getOpticalDetailsFieldBuilder() {
                if (opticalDetailsBuilder_ == null) {
                    opticalDetailsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.OpticalLinkDetails, context.ContextOuterClass.OpticalLinkDetails.Builder, context.ContextOuterClass.OpticalLinkDetailsOrBuilder>(getOpticalDetails(), getParentForChildren(), isClean());
                    opticalDetails_ = null;
                }
                return opticalDetailsBuilder_;
            }

            private context.ContextOuterClass.LinkId linkId_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder> linkIdBuilder_;

            /**
             * <code>.context.LinkId link_id = 3;</code>
             * @return Whether the linkId field is set.
             */
            public boolean hasLinkId() {
                return ((bitField0_ & 0x00000004) != 0);
            }

            /**
             * <code>.context.LinkId link_id = 3;</code>
             * @return The linkId.
             */
            public context.ContextOuterClass.LinkId getLinkId() {
                if (linkIdBuilder_ == null) {
                    return linkId_ == null ? context.ContextOuterClass.LinkId.getDefaultInstance() : linkId_;
                } else {
                    return linkIdBuilder_.getMessage();
                }
            }

            /**
             * <code>.context.LinkId link_id = 3;</code>
             */
            public Builder setLinkId(context.ContextOuterClass.LinkId value) {
                if (linkIdBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    linkId_ = value;
                } else {
                    linkIdBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000004;
                onChanged();
                return this;
            }

            /**
             * <code>.context.LinkId link_id = 3;</code>
             */
            public Builder setLinkId(context.ContextOuterClass.LinkId.Builder builderForValue) {
                if (linkIdBuilder_ == null) {
                    linkId_ = builderForValue.build();
                } else {
                    linkIdBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000004;
                onChanged();
                return this;
            }

            /**
             * <code>.context.LinkId link_id = 3;</code>
             */
            public Builder mergeLinkId(context.ContextOuterClass.LinkId value) {
                if (linkIdBuilder_ == null) {
                    if (((bitField0_ & 0x00000004) != 0) && linkId_ != null && linkId_ != context.ContextOuterClass.LinkId.getDefaultInstance()) {
                        getLinkIdBuilder().mergeFrom(value);
                    } else {
                        linkId_ = value;
                    }
                } else {
                    linkIdBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000004;
                onChanged();
                return this;
            }

            /**
             * <code>.context.LinkId link_id = 3;</code>
             */
            public Builder clearLinkId() {
                bitField0_ = (bitField0_ & ~0x00000004);
                linkId_ = null;
                if (linkIdBuilder_ != null) {
                    linkIdBuilder_.dispose();
                    linkIdBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.LinkId link_id = 3;</code>
             */
            public context.ContextOuterClass.LinkId.Builder getLinkIdBuilder() {
                bitField0_ |= 0x00000004;
                onChanged();
                return getLinkIdFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.LinkId link_id = 3;</code>
             */
            public context.ContextOuterClass.LinkIdOrBuilder getLinkIdOrBuilder() {
                if (linkIdBuilder_ != null) {
                    return linkIdBuilder_.getMessageOrBuilder();
                } else {
                    return linkId_ == null ? context.ContextOuterClass.LinkId.getDefaultInstance() : linkId_;
                }
            }

            /**
             * <code>.context.LinkId link_id = 3;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder> getLinkIdFieldBuilder() {
                if (linkIdBuilder_ == null) {
                    linkIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder>(getLinkId(), getParentForChildren(), isClean());
                    linkId_ = null;
                }
                return linkIdBuilder_;
            }

            private java.util.List<context.ContextOuterClass.EndPointId> linkEndpointIds_ = java.util.Collections.emptyList();

            private void ensureLinkEndpointIdsIsMutable() {
                if (!((bitField0_ & 0x00000008) != 0)) {
                    linkEndpointIds_ = new java.util.ArrayList<context.ContextOuterClass.EndPointId>(linkEndpointIds_);
                    bitField0_ |= 0x00000008;
                }
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> linkEndpointIdsBuilder_;

            /**
             * <code>repeated .context.EndPointId link_endpoint_ids = 4;</code>
             */
            public java.util.List<context.ContextOuterClass.EndPointId> getLinkEndpointIdsList() {
                if (linkEndpointIdsBuilder_ == null) {
                    return java.util.Collections.unmodifiableList(linkEndpointIds_);
                } else {
                    return linkEndpointIdsBuilder_.getMessageList();
                }
            }

            /**
             * <code>repeated .context.EndPointId link_endpoint_ids = 4;</code>
             */
            public int getLinkEndpointIdsCount() {
                if (linkEndpointIdsBuilder_ == null) {
                    return linkEndpointIds_.size();
                } else {
                    return linkEndpointIdsBuilder_.getCount();
                }
            }

            /**
             * <code>repeated .context.EndPointId link_endpoint_ids = 4;</code>
             */
            public context.ContextOuterClass.EndPointId getLinkEndpointIds(int index) {
                if (linkEndpointIdsBuilder_ == null) {
                    return linkEndpointIds_.get(index);
                } else {
                    return linkEndpointIdsBuilder_.getMessage(index);
                }
            }

            /**
             * <code>repeated .context.EndPointId link_endpoint_ids = 4;</code>
             */
            public Builder setLinkEndpointIds(int index, context.ContextOuterClass.EndPointId value) {
                if (linkEndpointIdsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureLinkEndpointIdsIsMutable();
                    linkEndpointIds_.set(index, value);
                    onChanged();
                } else {
                    linkEndpointIdsBuilder_.setMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPointId link_endpoint_ids = 4;</code>
             */
            public Builder setLinkEndpointIds(int index, context.ContextOuterClass.EndPointId.Builder builderForValue) {
                if (linkEndpointIdsBuilder_ == null) {
                    ensureLinkEndpointIdsIsMutable();
                    linkEndpointIds_.set(index, builderForValue.build());
                    onChanged();
                } else {
                    linkEndpointIdsBuilder_.setMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPointId link_endpoint_ids = 4;</code>
             */
            public Builder addLinkEndpointIds(context.ContextOuterClass.EndPointId value) {
                if (linkEndpointIdsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureLinkEndpointIdsIsMutable();
                    linkEndpointIds_.add(value);
                    onChanged();
                } else {
                    linkEndpointIdsBuilder_.addMessage(value);
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPointId link_endpoint_ids = 4;</code>
             */
            public Builder addLinkEndpointIds(int index, context.ContextOuterClass.EndPointId value) {
                if (linkEndpointIdsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureLinkEndpointIdsIsMutable();
                    linkEndpointIds_.add(index, value);
                    onChanged();
                } else {
                    linkEndpointIdsBuilder_.addMessage(index, value);
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPointId link_endpoint_ids = 4;</code>
             */
            public Builder addLinkEndpointIds(context.ContextOuterClass.EndPointId.Builder builderForValue) {
                if (linkEndpointIdsBuilder_ == null) {
                    ensureLinkEndpointIdsIsMutable();
                    linkEndpointIds_.add(builderForValue.build());
                    onChanged();
                } else {
                    linkEndpointIdsBuilder_.addMessage(builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPointId link_endpoint_ids = 4;</code>
             */
            public Builder addLinkEndpointIds(int index, context.ContextOuterClass.EndPointId.Builder builderForValue) {
                if (linkEndpointIdsBuilder_ == null) {
                    ensureLinkEndpointIdsIsMutable();
                    linkEndpointIds_.add(index, builderForValue.build());
                    onChanged();
                } else {
                    linkEndpointIdsBuilder_.addMessage(index, builderForValue.build());
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPointId link_endpoint_ids = 4;</code>
             */
            public Builder addAllLinkEndpointIds(java.lang.Iterable<? extends context.ContextOuterClass.EndPointId> values) {
                if (linkEndpointIdsBuilder_ == null) {
                    ensureLinkEndpointIdsIsMutable();
                    com.google.protobuf.AbstractMessageLite.Builder.addAll(values, linkEndpointIds_);
                    onChanged();
                } else {
                    linkEndpointIdsBuilder_.addAllMessages(values);
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPointId link_endpoint_ids = 4;</code>
             */
            public Builder clearLinkEndpointIds() {
                if (linkEndpointIdsBuilder_ == null) {
                    linkEndpointIds_ = java.util.Collections.emptyList();
                    bitField0_ = (bitField0_ & ~0x00000008);
                    onChanged();
                } else {
                    linkEndpointIdsBuilder_.clear();
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPointId link_endpoint_ids = 4;</code>
             */
            public Builder removeLinkEndpointIds(int index) {
                if (linkEndpointIdsBuilder_ == null) {
                    ensureLinkEndpointIdsIsMutable();
                    linkEndpointIds_.remove(index);
                    onChanged();
                } else {
                    linkEndpointIdsBuilder_.remove(index);
                }
                return this;
            }

            /**
             * <code>repeated .context.EndPointId link_endpoint_ids = 4;</code>
             */
            public context.ContextOuterClass.EndPointId.Builder getLinkEndpointIdsBuilder(int index) {
                return getLinkEndpointIdsFieldBuilder().getBuilder(index);
            }

            /**
             * <code>repeated .context.EndPointId link_endpoint_ids = 4;</code>
             */
            public context.ContextOuterClass.EndPointIdOrBuilder getLinkEndpointIdsOrBuilder(int index) {
                if (linkEndpointIdsBuilder_ == null) {
                    return linkEndpointIds_.get(index);
                } else {
                    return linkEndpointIdsBuilder_.getMessageOrBuilder(index);
                }
            }

            /**
             * <code>repeated .context.EndPointId link_endpoint_ids = 4;</code>
             */
            public java.util.List<? extends context.ContextOuterClass.EndPointIdOrBuilder> getLinkEndpointIdsOrBuilderList() {
                if (linkEndpointIdsBuilder_ != null) {
                    return linkEndpointIdsBuilder_.getMessageOrBuilderList();
                } else {
                    return java.util.Collections.unmodifiableList(linkEndpointIds_);
                }
            }

            /**
             * <code>repeated .context.EndPointId link_endpoint_ids = 4;</code>
             */
            public context.ContextOuterClass.EndPointId.Builder addLinkEndpointIdsBuilder() {
                return getLinkEndpointIdsFieldBuilder().addBuilder(context.ContextOuterClass.EndPointId.getDefaultInstance());
            }

            /**
             * <code>repeated .context.EndPointId link_endpoint_ids = 4;</code>
             */
            public context.ContextOuterClass.EndPointId.Builder addLinkEndpointIdsBuilder(int index) {
                return getLinkEndpointIdsFieldBuilder().addBuilder(index, context.ContextOuterClass.EndPointId.getDefaultInstance());
            }

            /**
             * <code>repeated .context.EndPointId link_endpoint_ids = 4;</code>
             */
            public java.util.List<context.ContextOuterClass.EndPointId.Builder> getLinkEndpointIdsBuilderList() {
                return getLinkEndpointIdsFieldBuilder().getBuilderList();
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder> getLinkEndpointIdsFieldBuilder() {
                if (linkEndpointIdsBuilder_ == null) {
                    linkEndpointIdsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<context.ContextOuterClass.EndPointId, context.ContextOuterClass.EndPointId.Builder, context.ContextOuterClass.EndPointIdOrBuilder>(linkEndpointIds_, ((bitField0_ & 0x00000008) != 0), getParentForChildren(), isClean());
                    linkEndpointIds_ = null;
                }
                return linkEndpointIdsBuilder_;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.OpticalLink)
        }

        // @@protoc_insertion_point(class_scope:context.OpticalLink)
        private static final context.ContextOuterClass.OpticalLink DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.OpticalLink();
        }

        public static context.ContextOuterClass.OpticalLink getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<OpticalLink> PARSER = new com.google.protobuf.AbstractParser<OpticalLink>() {

            @java.lang.Override
            public OpticalLink parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<OpticalLink> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<OpticalLink> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.OpticalLink getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    public interface ServiceConfigRuleOrBuilder extends // @@protoc_insertion_point(interface_extends:context.ServiceConfigRule)
    com.google.protobuf.MessageOrBuilder {

        /**
         * <code>.context.ServiceId service_id = 1;</code>
         * @return Whether the serviceId field is set.
         */
        boolean hasServiceId();

        /**
         * <code>.context.ServiceId service_id = 1;</code>
         * @return The serviceId.
         */
        context.ContextOuterClass.ServiceId getServiceId();

        /**
         * <code>.context.ServiceId service_id = 1;</code>
         */
        context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder();

        /**
         * <code>.context.ConfigRule_Custom configrule_custom = 2;</code>
         * @return Whether the configruleCustom field is set.
         */
        boolean hasConfigruleCustom();

        /**
         * <code>.context.ConfigRule_Custom configrule_custom = 2;</code>
         * @return The configruleCustom.
         */
        context.ContextOuterClass.ConfigRule_Custom getConfigruleCustom();

        /**
         * <code>.context.ConfigRule_Custom configrule_custom = 2;</code>
         */
        context.ContextOuterClass.ConfigRule_CustomOrBuilder getConfigruleCustomOrBuilder();
    }

    /**
     * Protobuf type {@code context.ServiceConfigRule}
     */
    public static final class ServiceConfigRule extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:context.ServiceConfigRule)
    ServiceConfigRuleOrBuilder {

        private static final long serialVersionUID = 0L;

        // Use ServiceConfigRule.newBuilder() to construct.
        private ServiceConfigRule(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }

        private ServiceConfigRule() {
        }

        @java.lang.Override
        @SuppressWarnings({ "unused" })
        protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
            return new ServiceConfigRule();
        }

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
            return context.ContextOuterClass.internal_static_context_ServiceConfigRule_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
            return context.ContextOuterClass.internal_static_context_ServiceConfigRule_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ServiceConfigRule.class, context.ContextOuterClass.ServiceConfigRule.Builder.class);
        }

        public static final int SERVICE_ID_FIELD_NUMBER = 1;

        private context.ContextOuterClass.ServiceId serviceId_;

        /**
         * <code>.context.ServiceId service_id = 1;</code>
         * @return Whether the serviceId field is set.
         */
        @java.lang.Override
        public boolean hasServiceId() {
            return serviceId_ != null;
        }

        /**
         * <code>.context.ServiceId service_id = 1;</code>
         * @return The serviceId.
         */
        @java.lang.Override
        public context.ContextOuterClass.ServiceId getServiceId() {
            return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
        }

        /**
         * <code>.context.ServiceId service_id = 1;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder() {
            return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
        }

        public static final int CONFIGRULE_CUSTOM_FIELD_NUMBER = 2;

        private context.ContextOuterClass.ConfigRule_Custom configruleCustom_;

        /**
         * <code>.context.ConfigRule_Custom configrule_custom = 2;</code>
         * @return Whether the configruleCustom field is set.
         */
        @java.lang.Override
        public boolean hasConfigruleCustom() {
            return configruleCustom_ != null;
        }

        /**
         * <code>.context.ConfigRule_Custom configrule_custom = 2;</code>
         * @return The configruleCustom.
         */
        @java.lang.Override
        public context.ContextOuterClass.ConfigRule_Custom getConfigruleCustom() {
            return configruleCustom_ == null ? context.ContextOuterClass.ConfigRule_Custom.getDefaultInstance() : configruleCustom_;
        }

        /**
         * <code>.context.ConfigRule_Custom configrule_custom = 2;</code>
         */
        @java.lang.Override
        public context.ContextOuterClass.ConfigRule_CustomOrBuilder getConfigruleCustomOrBuilder() {
            return configruleCustom_ == null ? context.ContextOuterClass.ConfigRule_Custom.getDefaultInstance() : configruleCustom_;
        }

        private byte memoizedIsInitialized = -1;

        @java.lang.Override
        public final boolean isInitialized() {
            byte isInitialized = memoizedIsInitialized;
            if (isInitialized == 1)
                return true;
            if (isInitialized == 0)
                return false;
            memoizedIsInitialized = 1;
            return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
            if (serviceId_ != null) {
                output.writeMessage(1, getServiceId());
            }
            if (configruleCustom_ != null) {
                output.writeMessage(2, getConfigruleCustom());
            }
            getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
            int size = memoizedSize;
            if (size != -1)
                return size;
            size = 0;
            if (serviceId_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getServiceId());
            }
            if (configruleCustom_ != null) {
                size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getConfigruleCustom());
            }
            size += getUnknownFields().getSerializedSize();
            memoizedSize = size;
            return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
            if (obj == this) {
                return true;
            }
            if (!(obj instanceof context.ContextOuterClass.ServiceConfigRule)) {
                return super.equals(obj);
            }
            context.ContextOuterClass.ServiceConfigRule other = (context.ContextOuterClass.ServiceConfigRule) obj;
            if (hasServiceId() != other.hasServiceId())
                return false;
            if (hasServiceId()) {
                if (!getServiceId().equals(other.getServiceId()))
                    return false;
            }
            if (hasConfigruleCustom() != other.hasConfigruleCustom())
                return false;
            if (hasConfigruleCustom()) {
                if (!getConfigruleCustom().equals(other.getConfigruleCustom()))
                    return false;
            }
            if (!getUnknownFields().equals(other.getUnknownFields()))
                return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            if (hasServiceId()) {
                hash = (37 * hash) + SERVICE_ID_FIELD_NUMBER;
                hash = (53 * hash) + getServiceId().hashCode();
            }
            if (hasConfigruleCustom()) {
                hash = (37 * hash) + CONFIGRULE_CUSTOM_FIELD_NUMBER;
                hash = (53 * hash) + getConfigruleCustom().hashCode();
            }
            hash = (29 * hash) + getUnknownFields().hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static context.ContextOuterClass.ServiceConfigRule parseFrom(java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.ServiceConfigRule parseFrom(java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.ServiceConfigRule parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.ServiceConfigRule parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.ServiceConfigRule parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }

        public static context.ContextOuterClass.ServiceConfigRule parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }

        public static context.ContextOuterClass.ServiceConfigRule parseFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.ServiceConfigRule parseFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.ServiceConfigRule parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.ServiceConfigRule parseDelimitedFrom(java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }

        public static context.ContextOuterClass.ServiceConfigRule parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
        }

        public static context.ContextOuterClass.ServiceConfigRule parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input, extensionRegistry);
        }

        @java.lang.Override
        public Builder newBuilderForType() {
            return newBuilder();
        }

        public static Builder newBuilder() {
            return DEFAULT_INSTANCE.toBuilder();
        }

        public static Builder newBuilder(context.ContextOuterClass.ServiceConfigRule prototype) {
            return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }

        @java.lang.Override
        public Builder toBuilder() {
            return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
        }

        @java.lang.Override
        protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            Builder builder = new Builder(parent);
            return builder;
        }

        /**
         * Protobuf type {@code context.ServiceConfigRule}
         */
        public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements // @@protoc_insertion_point(builder_implements:context.ServiceConfigRule)
        context.ContextOuterClass.ServiceConfigRuleOrBuilder {

            public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
                return context.ContextOuterClass.internal_static_context_ServiceConfigRule_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() {
                return context.ContextOuterClass.internal_static_context_ServiceConfigRule_fieldAccessorTable.ensureFieldAccessorsInitialized(context.ContextOuterClass.ServiceConfigRule.class, context.ContextOuterClass.ServiceConfigRule.Builder.class);
            }

            // Construct using context.ContextOuterClass.ServiceConfigRule.newBuilder()
            private Builder() {
            }

            private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
            }

            @java.lang.Override
            public Builder clear() {
                super.clear();
                bitField0_ = 0;
                serviceId_ = null;
                if (serviceIdBuilder_ != null) {
                    serviceIdBuilder_.dispose();
                    serviceIdBuilder_ = null;
                }
                configruleCustom_ = null;
                if (configruleCustomBuilder_ != null) {
                    configruleCustomBuilder_.dispose();
                    configruleCustomBuilder_ = null;
                }
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
                return context.ContextOuterClass.internal_static_context_ServiceConfigRule_descriptor;
            }

            @java.lang.Override
            public context.ContextOuterClass.ServiceConfigRule getDefaultInstanceForType() {
                return context.ContextOuterClass.ServiceConfigRule.getDefaultInstance();
            }

            @java.lang.Override
            public context.ContextOuterClass.ServiceConfigRule build() {
                context.ContextOuterClass.ServiceConfigRule result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public context.ContextOuterClass.ServiceConfigRule buildPartial() {
                context.ContextOuterClass.ServiceConfigRule result = new context.ContextOuterClass.ServiceConfigRule(this);
                if (bitField0_ != 0) {
                    buildPartial0(result);
                }
                onBuilt();
                return result;
            }

            private void buildPartial0(context.ContextOuterClass.ServiceConfigRule result) {
                int from_bitField0_ = bitField0_;
                if (((from_bitField0_ & 0x00000001) != 0)) {
                    result.serviceId_ = serviceIdBuilder_ == null ? serviceId_ : serviceIdBuilder_.build();
                }
                if (((from_bitField0_ & 0x00000002) != 0)) {
                    result.configruleCustom_ = configruleCustomBuilder_ == null ? configruleCustom_ : configruleCustomBuilder_.build();
                }
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.Message other) {
                if (other instanceof context.ContextOuterClass.ServiceConfigRule) {
                    return mergeFrom((context.ContextOuterClass.ServiceConfigRule) other);
                } else {
                    super.mergeFrom(other);
                    return this;
                }
            }

            public Builder mergeFrom(context.ContextOuterClass.ServiceConfigRule other) {
                if (other == context.ContextOuterClass.ServiceConfigRule.getDefaultInstance())
                    return this;
                if (other.hasServiceId()) {
                    mergeServiceId(other.getServiceId());
                }
                if (other.hasConfigruleCustom()) {
                    mergeConfigruleCustom(other.getConfigruleCustom());
                }
                this.mergeUnknownFields(other.getUnknownFields());
                onChanged();
                return this;
            }

            @java.lang.Override
            public final boolean isInitialized() {
                return true;
            }

            @java.lang.Override
            public Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException {
                if (extensionRegistry == null) {
                    throw new java.lang.NullPointerException();
                }
                try {
                    boolean done = false;
                    while (!done) {
                        int tag = input.readTag();
                        switch(tag) {
                            case 0:
                                done = true;
                                break;
                            case 10:
                                {
                                    input.readMessage(getServiceIdFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000001;
                                    break;
                                }
                            // case 10
                            case 18:
                                {
                                    input.readMessage(getConfigruleCustomFieldBuilder().getBuilder(), extensionRegistry);
                                    bitField0_ |= 0x00000002;
                                    break;
                                }
                            // case 18
                            default:
                                {
                                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                                        // was an endgroup tag
                                        done = true;
                                    }
                                    break;
                                }
                        }
                        // switch (tag)
                    }
                    // while (!done)
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.unwrapIOException();
                } finally {
                    onChanged();
                }
                // finally
                return this;
            }

            private int bitField0_;

            private context.ContextOuterClass.ServiceId serviceId_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> serviceIdBuilder_;

            /**
             * <code>.context.ServiceId service_id = 1;</code>
             * @return Whether the serviceId field is set.
             */
            public boolean hasServiceId() {
                return ((bitField0_ & 0x00000001) != 0);
            }

            /**
             * <code>.context.ServiceId service_id = 1;</code>
             * @return The serviceId.
             */
            public context.ContextOuterClass.ServiceId getServiceId() {
                if (serviceIdBuilder_ == null) {
                    return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
                } else {
                    return serviceIdBuilder_.getMessage();
                }
            }

            /**
             * <code>.context.ServiceId service_id = 1;</code>
             */
            public Builder setServiceId(context.ContextOuterClass.ServiceId value) {
                if (serviceIdBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    serviceId_ = value;
                } else {
                    serviceIdBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.ServiceId service_id = 1;</code>
             */
            public Builder setServiceId(context.ContextOuterClass.ServiceId.Builder builderForValue) {
                if (serviceIdBuilder_ == null) {
                    serviceId_ = builderForValue.build();
                } else {
                    serviceIdBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.ServiceId service_id = 1;</code>
             */
            public Builder mergeServiceId(context.ContextOuterClass.ServiceId value) {
                if (serviceIdBuilder_ == null) {
                    if (((bitField0_ & 0x00000001) != 0) && serviceId_ != null && serviceId_ != context.ContextOuterClass.ServiceId.getDefaultInstance()) {
                        getServiceIdBuilder().mergeFrom(value);
                    } else {
                        serviceId_ = value;
                    }
                } else {
                    serviceIdBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000001;
                onChanged();
                return this;
            }

            /**
             * <code>.context.ServiceId service_id = 1;</code>
             */
            public Builder clearServiceId() {
                bitField0_ = (bitField0_ & ~0x00000001);
                serviceId_ = null;
                if (serviceIdBuilder_ != null) {
                    serviceIdBuilder_.dispose();
                    serviceIdBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.ServiceId service_id = 1;</code>
             */
            public context.ContextOuterClass.ServiceId.Builder getServiceIdBuilder() {
                bitField0_ |= 0x00000001;
                onChanged();
                return getServiceIdFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.ServiceId service_id = 1;</code>
             */
            public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder() {
                if (serviceIdBuilder_ != null) {
                    return serviceIdBuilder_.getMessageOrBuilder();
                } else {
                    return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
                }
            }

            /**
             * <code>.context.ServiceId service_id = 1;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> getServiceIdFieldBuilder() {
                if (serviceIdBuilder_ == null) {
                    serviceIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder>(getServiceId(), getParentForChildren(), isClean());
                    serviceId_ = null;
                }
                return serviceIdBuilder_;
            }

            private context.ContextOuterClass.ConfigRule_Custom configruleCustom_;

            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ConfigRule_Custom, context.ContextOuterClass.ConfigRule_Custom.Builder, context.ContextOuterClass.ConfigRule_CustomOrBuilder> configruleCustomBuilder_;

            /**
             * <code>.context.ConfigRule_Custom configrule_custom = 2;</code>
             * @return Whether the configruleCustom field is set.
             */
            public boolean hasConfigruleCustom() {
                return ((bitField0_ & 0x00000002) != 0);
            }

            /**
             * <code>.context.ConfigRule_Custom configrule_custom = 2;</code>
             * @return The configruleCustom.
             */
            public context.ContextOuterClass.ConfigRule_Custom getConfigruleCustom() {
                if (configruleCustomBuilder_ == null) {
                    return configruleCustom_ == null ? context.ContextOuterClass.ConfigRule_Custom.getDefaultInstance() : configruleCustom_;
                } else {
                    return configruleCustomBuilder_.getMessage();
                }
            }

            /**
             * <code>.context.ConfigRule_Custom configrule_custom = 2;</code>
             */
            public Builder setConfigruleCustom(context.ContextOuterClass.ConfigRule_Custom value) {
                if (configruleCustomBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    configruleCustom_ = value;
                } else {
                    configruleCustomBuilder_.setMessage(value);
                }
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>.context.ConfigRule_Custom configrule_custom = 2;</code>
             */
            public Builder setConfigruleCustom(context.ContextOuterClass.ConfigRule_Custom.Builder builderForValue) {
                if (configruleCustomBuilder_ == null) {
                    configruleCustom_ = builderForValue.build();
                } else {
                    configruleCustomBuilder_.setMessage(builderForValue.build());
                }
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>.context.ConfigRule_Custom configrule_custom = 2;</code>
             */
            public Builder mergeConfigruleCustom(context.ContextOuterClass.ConfigRule_Custom value) {
                if (configruleCustomBuilder_ == null) {
                    if (((bitField0_ & 0x00000002) != 0) && configruleCustom_ != null && configruleCustom_ != context.ContextOuterClass.ConfigRule_Custom.getDefaultInstance()) {
                        getConfigruleCustomBuilder().mergeFrom(value);
                    } else {
                        configruleCustom_ = value;
                    }
                } else {
                    configruleCustomBuilder_.mergeFrom(value);
                }
                bitField0_ |= 0x00000002;
                onChanged();
                return this;
            }

            /**
             * <code>.context.ConfigRule_Custom configrule_custom = 2;</code>
             */
            public Builder clearConfigruleCustom() {
                bitField0_ = (bitField0_ & ~0x00000002);
                configruleCustom_ = null;
                if (configruleCustomBuilder_ != null) {
                    configruleCustomBuilder_.dispose();
                    configruleCustomBuilder_ = null;
                }
                onChanged();
                return this;
            }

            /**
             * <code>.context.ConfigRule_Custom configrule_custom = 2;</code>
             */
            public context.ContextOuterClass.ConfigRule_Custom.Builder getConfigruleCustomBuilder() {
                bitField0_ |= 0x00000002;
                onChanged();
                return getConfigruleCustomFieldBuilder().getBuilder();
            }

            /**
             * <code>.context.ConfigRule_Custom configrule_custom = 2;</code>
             */
            public context.ContextOuterClass.ConfigRule_CustomOrBuilder getConfigruleCustomOrBuilder() {
                if (configruleCustomBuilder_ != null) {
                    return configruleCustomBuilder_.getMessageOrBuilder();
                } else {
                    return configruleCustom_ == null ? context.ContextOuterClass.ConfigRule_Custom.getDefaultInstance() : configruleCustom_;
                }
            }

            /**
             * <code>.context.ConfigRule_Custom configrule_custom = 2;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ConfigRule_Custom, context.ContextOuterClass.ConfigRule_Custom.Builder, context.ContextOuterClass.ConfigRule_CustomOrBuilder> getConfigruleCustomFieldBuilder() {
                if (configruleCustomBuilder_ == null) {
                    configruleCustomBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<context.ContextOuterClass.ConfigRule_Custom, context.ContextOuterClass.ConfigRule_Custom.Builder, context.ContextOuterClass.ConfigRule_CustomOrBuilder>(getConfigruleCustom(), getParentForChildren(), isClean());
                    configruleCustom_ = null;
                }
                return configruleCustomBuilder_;
            }

            @java.lang.Override
            public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

            @java.lang.Override
            public final Builder mergeUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.mergeUnknownFields(unknownFields);
            }
            // @@protoc_insertion_point(builder_scope:context.ServiceConfigRule)
        }

        // @@protoc_insertion_point(class_scope:context.ServiceConfigRule)
        private static final context.ContextOuterClass.ServiceConfigRule DEFAULT_INSTANCE;

        static {
            DEFAULT_INSTANCE = new context.ContextOuterClass.ServiceConfigRule();
        }

        public static context.ContextOuterClass.ServiceConfigRule getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<ServiceConfigRule> PARSER = new com.google.protobuf.AbstractParser<ServiceConfigRule>() {

            @java.lang.Override
            public ServiceConfigRule parsePartialFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException {
                Builder builder = newBuilder();
                try {
                    builder.mergeFrom(input, extensionRegistry);
                } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                    throw e.setUnfinishedMessage(builder.buildPartial());
                } catch (com.google.protobuf.UninitializedMessageException e) {
                    throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
                } catch (java.io.IOException e) {
                    throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(builder.buildPartial());
                }
                return builder.buildPartial();
            }
        };

        public static com.google.protobuf.Parser<ServiceConfigRule> parser() {
            return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<ServiceConfigRule> getParserForType() {
            return PARSER;
        }

        @java.lang.Override
        public context.ContextOuterClass.ServiceConfigRule getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }
    }

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_Empty_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_Empty_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_Uuid_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_Uuid_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_Timestamp_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_Timestamp_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_Event_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_Event_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_ContextId_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_ContextId_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_Context_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_Context_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_ContextIdList_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_ContextIdList_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_ContextList_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_ContextList_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_ContextEvent_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_ContextEvent_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_TopologyId_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_TopologyId_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_Topology_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_Topology_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_TopologyDetails_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_TopologyDetails_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_TopologyIdList_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_TopologyIdList_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_TopologyList_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_TopologyList_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_TopologyEvent_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_TopologyEvent_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_DeviceId_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_DeviceId_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_Device_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_Device_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_Component_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_Component_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_Component_AttributesEntry_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_Component_AttributesEntry_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_DeviceConfig_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_DeviceConfig_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_DeviceIdList_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_DeviceIdList_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_DeviceList_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_DeviceList_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_DeviceFilter_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_DeviceFilter_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_DeviceEvent_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_DeviceEvent_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_LinkId_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_LinkId_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_LinkAttributes_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_LinkAttributes_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_Link_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_Link_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_LinkIdList_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_LinkIdList_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_LinkList_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_LinkList_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_LinkEvent_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_LinkEvent_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_ServiceId_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_ServiceId_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_Service_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_Service_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_ServiceStatus_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_ServiceStatus_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_ServiceConfig_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_ServiceConfig_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_ServiceIdList_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_ServiceIdList_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_ServiceList_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_ServiceList_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_ServiceFilter_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_ServiceFilter_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_ServiceEvent_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_ServiceEvent_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_SliceId_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_SliceId_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_Slice_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_Slice_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_SliceOwner_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_SliceOwner_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_SliceStatus_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_SliceStatus_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_SliceConfig_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_SliceConfig_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_SliceIdList_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_SliceIdList_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_SliceList_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_SliceList_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_SliceFilter_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_SliceFilter_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_SliceEvent_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_SliceEvent_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_ConnectionId_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_ConnectionId_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_ConnectionSettings_L0_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_ConnectionSettings_L0_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_ConnectionSettings_L2_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_ConnectionSettings_L2_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_ConnectionSettings_L3_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_ConnectionSettings_L3_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_ConnectionSettings_L4_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_ConnectionSettings_L4_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_ConnectionSettings_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_ConnectionSettings_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_Connection_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_Connection_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_ConnectionIdList_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_ConnectionIdList_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_ConnectionList_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_ConnectionList_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_ConnectionEvent_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_ConnectionEvent_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_EndPointId_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_EndPointId_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_EndPoint_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_EndPoint_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_EndPoint_CapabilitiesEntry_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_EndPoint_CapabilitiesEntry_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_EndPointName_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_EndPointName_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_EndPointIdList_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_EndPointIdList_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_EndPointNameList_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_EndPointNameList_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_ConfigRule_Custom_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_ConfigRule_Custom_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_ConfigRule_ACL_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_ConfigRule_ACL_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_ConfigRule_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_ConfigRule_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_Constraint_Custom_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_Constraint_Custom_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_Constraint_Schedule_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_Constraint_Schedule_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_GPS_Position_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_GPS_Position_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_Location_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_Location_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_Constraint_EndPointLocation_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_Constraint_EndPointLocation_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_Constraint_EndPointPriority_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_Constraint_EndPointPriority_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_Constraint_SLA_Latency_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_Constraint_SLA_Latency_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_Constraint_SLA_Capacity_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_Constraint_SLA_Capacity_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_Constraint_SLA_Availability_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_Constraint_SLA_Availability_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_Constraint_SLA_Isolation_level_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_Constraint_SLA_Isolation_level_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_Constraint_Exclusions_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_Constraint_Exclusions_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_QoSProfileId_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_QoSProfileId_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_Constraint_QoSProfile_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_Constraint_QoSProfile_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_Constraint_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_Constraint_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_TeraFlowController_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_TeraFlowController_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_AuthenticationResult_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_AuthenticationResult_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_OpticalConfigId_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_OpticalConfigId_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_OpticalConfig_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_OpticalConfig_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_OpticalConfigList_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_OpticalConfigList_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_OpticalConfigEvent_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_OpticalConfigEvent_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_OpticalEndPointId_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_OpticalEndPointId_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_OpticalLinkList_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_OpticalLinkList_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_OpticalLinkDetails_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_OpticalLinkDetails_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_OpticalLinkDetails_CSlotsEntry_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_OpticalLinkDetails_CSlotsEntry_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_OpticalLinkDetails_LSlotsEntry_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_OpticalLinkDetails_LSlotsEntry_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_OpticalLinkDetails_SSlotsEntry_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_OpticalLinkDetails_SSlotsEntry_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_OpticalLink_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_OpticalLink_fieldAccessorTable;

    private static final com.google.protobuf.Descriptors.Descriptor internal_static_context_ServiceConfigRule_descriptor;

    private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_context_ServiceConfigRule_fieldAccessorTable;

    public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() {
        return descriptor;
    }

    private static com.google.protobuf.Descriptors.FileDescriptor descriptor;

    static {
        java.lang.String[] descriptorData = { "\n\rcontext.proto\022\007context\032\031google/protobu" + "f/any.proto\032\tacl.proto\032\026kpi_sample_types" + ".proto\"\007\n\005Empty\"\024\n\004Uuid\022\014\n\004uuid\030\001 \001(\t\"\036\n" + "\tTimestamp\022\021\n\ttimestamp\030\001 \001(\001\"Z\n\005Event\022%" + "\n\ttimestamp\030\001 \001(\0132\022.context.Timestamp\022*\n" + "\nevent_type\030\002 \001(\0162\026.context.EventTypeEnu" + "m\"0\n\tContextId\022#\n\014context_uuid\030\001 \001(\0132\r.c" + "ontext.Uuid\"\351\001\n\007Context\022&\n\ncontext_id\030\001 " + "\001(\0132\022.context.ContextId\022\014\n\004name\030\002 \001(\t\022)\n" + "\014topology_ids\030\003 \003(\0132\023.context.TopologyId" + "\022\'\n\013service_ids\030\004 \003(\0132\022.context.ServiceI" + "d\022#\n\tslice_ids\030\005 \003(\0132\020.context.SliceId\022/" + "\n\ncontroller\030\006 \001(\0132\033.context.TeraFlowCon" + "troller\"8\n\rContextIdList\022\'\n\013context_ids\030" + "\001 \003(\0132\022.context.ContextId\"1\n\013ContextList" + "\022\"\n\010contexts\030\001 \003(\0132\020.context.Context\"U\n\014" + "ContextEvent\022\035\n\005event\030\001 \001(\0132\016.context.Ev" + "ent\022&\n\ncontext_id\030\002 \001(\0132\022.context.Contex" + "tId\"Z\n\nTopologyId\022&\n\ncontext_id\030\001 \001(\0132\022." + "context.ContextId\022$\n\rtopology_uuid\030\002 \001(\013" + "2\r.context.Uuid\"\267\001\n\010Topology\022(\n\013topology" + "_id\030\001 \001(\0132\023.context.TopologyId\022\014\n\004name\030\002" + " \001(\t\022%\n\ndevice_ids\030\003 \003(\0132\021.context.Devic" + "eId\022!\n\010link_ids\030\004 \003(\0132\017.context.LinkId\022)" + "\n\020optical_link_ids\030\005 \003(\0132\017.context.LinkI" + "d\"\266\001\n\017TopologyDetails\022(\n\013topology_id\030\001 \001" + "(\0132\023.context.TopologyId\022\014\n\004name\030\002 \001(\t\022 \n" + "\007devices\030\003 \003(\0132\017.context.Device\022\034\n\005links" + "\030\004 \003(\0132\r.context.Link\022+\n\roptical_links\030\005" + " \003(\0132\024.context.OpticalLink\";\n\016TopologyId" + "List\022)\n\014topology_ids\030\001 \003(\0132\023.context.Top" + "ologyId\"5\n\014TopologyList\022%\n\ntopologies\030\001 " + "\003(\0132\021.context.Topology\"X\n\rTopologyEvent\022" + "\035\n\005event\030\001 \001(\0132\016.context.Event\022(\n\013topolo" + "gy_id\030\002 \001(\0132\023.context.TopologyId\".\n\010Devi" + "ceId\022\"\n\013device_uuid\030\001 \001(\0132\r.context.Uuid" + "\"\372\002\n\006Device\022$\n\tdevice_id\030\001 \001(\0132\021.context" + ".DeviceId\022\014\n\004name\030\002 \001(\t\022\023\n\013device_type\030\003" + " \001(\t\022,\n\rdevice_config\030\004 \001(\0132\025.context.De" + "viceConfig\022G\n\031device_operational_status\030" + "\005 \001(\0162$.context.DeviceOperationalStatusE" + "num\0221\n\016device_drivers\030\006 \003(\0162\031.context.De" + "viceDriverEnum\022+\n\020device_endpoints\030\007 \003(\013" + "2\021.context.EndPoint\022&\n\ncomponents\030\010 \003(\0132" + "\022.context.Component\022(\n\rcontroller_id\030\t \001" + "(\0132\021.context.DeviceId\"\311\001\n\tComponent\022%\n\016c" + "omponent_uuid\030\001 \001(\0132\r.context.Uuid\022\014\n\004na" + "me\030\002 \001(\t\022\014\n\004type\030\003 \001(\t\0226\n\nattributes\030\004 \003" + "(\0132\".context.Component.AttributesEntry\022\016" + "\n\006parent\030\005 \001(\t\0321\n\017AttributesEntry\022\013\n\003key" + "\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\"9\n\014DeviceConfi" + "g\022)\n\014config_rules\030\001 \003(\0132\023.context.Config" + "Rule\"5\n\014DeviceIdList\022%\n\ndevice_ids\030\001 \003(\013" + "2\021.context.DeviceId\".\n\nDeviceList\022 \n\007dev" + "ices\030\001 \003(\0132\017.context.Device\"\216\001\n\014DeviceFi" + "lter\022)\n\ndevice_ids\030\001 \001(\0132\025.context.Devic" + "eIdList\022\031\n\021include_endpoints\030\002 \001(\010\022\034\n\024in" + "clude_config_rules\030\003 \001(\010\022\032\n\022include_comp" + "onents\030\004 \001(\010\"\200\001\n\013DeviceEvent\022\035\n\005event\030\001 " + "\001(\0132\016.context.Event\022$\n\tdevice_id\030\002 \001(\0132\021" + ".context.DeviceId\022,\n\rdevice_config\030\003 \001(\013" + "2\025.context.DeviceConfig\"*\n\006LinkId\022 \n\tlin" + "k_uuid\030\001 \001(\0132\r.context.Uuid\"I\n\016LinkAttri" + "butes\022\033\n\023total_capacity_gbps\030\001 \001(\002\022\032\n\022us" + "ed_capacity_gbps\030\002 \001(\002\"\275\001\n\004Link\022 \n\007link_" + "id\030\001 \001(\0132\017.context.LinkId\022\014\n\004name\030\002 \001(\t\022" + "(\n\tlink_type\030\003 \001(\0162\025.context.LinkTypeEnu" + "m\022.\n\021link_endpoint_ids\030\004 \003(\0132\023.context.E" + "ndPointId\022+\n\nattributes\030\005 \001(\0132\027.context." + "LinkAttributes\"/\n\nLinkIdList\022!\n\010link_ids" + "\030\001 \003(\0132\017.context.LinkId\"(\n\010LinkList\022\034\n\005l" + "inks\030\001 \003(\0132\r.context.Link\"L\n\tLinkEvent\022\035" + "\n\005event\030\001 \001(\0132\016.context.Event\022 \n\007link_id" + "\030\002 \001(\0132\017.context.LinkId\"X\n\tServiceId\022&\n\n" + "context_id\030\001 \001(\0132\022.context.ContextId\022#\n\014" + "service_uuid\030\002 \001(\0132\r.context.Uuid\"\333\002\n\007Se" + "rvice\022&\n\nservice_id\030\001 \001(\0132\022.context.Serv" + "iceId\022\014\n\004name\030\002 \001(\t\022.\n\014service_type\030\003 \001(" + "\0162\030.context.ServiceTypeEnum\0221\n\024service_e" + "ndpoint_ids\030\004 \003(\0132\023.context.EndPointId\0220" + "\n\023service_constraints\030\005 \003(\0132\023.context.Co" + "nstraint\022.\n\016service_status\030\006 \001(\0132\026.conte" + "xt.ServiceStatus\022.\n\016service_config\030\007 \001(\013" + "2\026.context.ServiceConfig\022%\n\ttimestamp\030\010 " + "\001(\0132\022.context.Timestamp\"C\n\rServiceStatus" + "\0222\n\016service_status\030\001 \001(\0162\032.context.Servi" + "ceStatusEnum\":\n\rServiceConfig\022)\n\014config_" + "rules\030\001 \003(\0132\023.context.ConfigRule\"8\n\rServ" + "iceIdList\022\'\n\013service_ids\030\001 \003(\0132\022.context" + ".ServiceId\"1\n\013ServiceList\022\"\n\010services\030\001 " + "\003(\0132\020.context.Service\"\225\001\n\rServiceFilter\022" + "+\n\013service_ids\030\001 \001(\0132\026.context.ServiceId" + "List\022\034\n\024include_endpoint_ids\030\002 \001(\010\022\033\n\023in" + "clude_constraints\030\003 \001(\010\022\034\n\024include_confi" + "g_rules\030\004 \001(\010\"U\n\014ServiceEvent\022\035\n\005event\030\001" + " \001(\0132\016.context.Event\022&\n\nservice_id\030\002 \001(\013" + "2\022.context.ServiceId\"T\n\007SliceId\022&\n\nconte" + "xt_id\030\001 \001(\0132\022.context.ContextId\022!\n\nslice" + "_uuid\030\002 \001(\0132\r.context.Uuid\"\240\003\n\005Slice\022\"\n\010" + "slice_id\030\001 \001(\0132\020.context.SliceId\022\014\n\004name" + "\030\002 \001(\t\022/\n\022slice_endpoint_ids\030\003 \003(\0132\023.con" + "text.EndPointId\022.\n\021slice_constraints\030\004 \003" + "(\0132\023.context.Constraint\022-\n\021slice_service" + "_ids\030\005 \003(\0132\022.context.ServiceId\022,\n\022slice_" + "subslice_ids\030\006 \003(\0132\020.context.SliceId\022*\n\014" + "slice_status\030\007 \001(\0132\024.context.SliceStatus" + "\022*\n\014slice_config\030\010 \001(\0132\024.context.SliceCo" + "nfig\022(\n\013slice_owner\030\t \001(\0132\023.context.Slic" + "eOwner\022%\n\ttimestamp\030\n \001(\0132\022.context.Time" + "stamp\"E\n\nSliceOwner\022!\n\nowner_uuid\030\001 \001(\0132" + "\r.context.Uuid\022\024\n\014owner_string\030\002 \001(\t\"=\n\013" + "SliceStatus\022.\n\014slice_status\030\001 \001(\0162\030.cont" + "ext.SliceStatusEnum\"8\n\013SliceConfig\022)\n\014co" + "nfig_rules\030\001 \003(\0132\023.context.ConfigRule\"2\n" + "\013SliceIdList\022#\n\tslice_ids\030\001 \003(\0132\020.contex" + "t.SliceId\"+\n\tSliceList\022\036\n\006slices\030\001 \003(\0132\016" + ".context.Slice\"\312\001\n\013SliceFilter\022\'\n\tslice_" + "ids\030\001 \001(\0132\024.context.SliceIdList\022\034\n\024inclu" + "de_endpoint_ids\030\002 \001(\010\022\033\n\023include_constra" + "ints\030\003 \001(\010\022\033\n\023include_service_ids\030\004 \001(\010\022" + "\034\n\024include_subslice_ids\030\005 \001(\010\022\034\n\024include" + "_config_rules\030\006 \001(\010\"O\n\nSliceEvent\022\035\n\005eve" + "nt\030\001 \001(\0132\016.context.Event\022\"\n\010slice_id\030\002 \001" + "(\0132\020.context.SliceId\"6\n\014ConnectionId\022&\n\017" + "connection_uuid\030\001 \001(\0132\r.context.Uuid\"2\n\025" + "ConnectionSettings_L0\022\031\n\021lsp_symbolic_na" + "me\030\001 \001(\t\"\236\001\n\025ConnectionSettings_L2\022\027\n\017sr" + "c_mac_address\030\001 \001(\t\022\027\n\017dst_mac_address\030\002" + " \001(\t\022\022\n\nether_type\030\003 \001(\r\022\017\n\007vlan_id\030\004 \001(" + "\r\022\022\n\nmpls_label\030\005 \001(\r\022\032\n\022mpls_traffic_cl" + "ass\030\006 \001(\r\"t\n\025ConnectionSettings_L3\022\026\n\016sr" + "c_ip_address\030\001 \001(\t\022\026\n\016dst_ip_address\030\002 \001" + "(\t\022\014\n\004dscp\030\003 \001(\r\022\020\n\010protocol\030\004 \001(\r\022\013\n\003tt" + "l\030\005 \001(\r\"[\n\025ConnectionSettings_L4\022\020\n\010src_" + "port\030\001 \001(\r\022\020\n\010dst_port\030\002 \001(\r\022\021\n\ttcp_flag" + "s\030\003 \001(\r\022\013\n\003ttl\030\004 \001(\r\"\304\001\n\022ConnectionSetti" + "ngs\022*\n\002l0\030\001 \001(\0132\036.context.ConnectionSett" + "ings_L0\022*\n\002l2\030\002 \001(\0132\036.context.Connection" + "Settings_L2\022*\n\002l3\030\003 \001(\0132\036.context.Connec" + "tionSettings_L3\022*\n\002l4\030\004 \001(\0132\036.context.Co" + "nnectionSettings_L4\"\363\001\n\nConnection\022,\n\rco" + "nnection_id\030\001 \001(\0132\025.context.ConnectionId" + "\022&\n\nservice_id\030\002 \001(\0132\022.context.ServiceId" + "\0223\n\026path_hops_endpoint_ids\030\003 \003(\0132\023.conte" + "xt.EndPointId\022+\n\017sub_service_ids\030\004 \003(\0132\022" + ".context.ServiceId\022-\n\010settings\030\005 \001(\0132\033.c" + "ontext.ConnectionSettings\"A\n\020ConnectionI" + "dList\022-\n\016connection_ids\030\001 \003(\0132\025.context." + "ConnectionId\":\n\016ConnectionList\022(\n\013connec" + "tions\030\001 \003(\0132\023.context.Connection\"^\n\017Conn" + "ectionEvent\022\035\n\005event\030\001 \001(\0132\016.context.Eve" + "nt\022,\n\rconnection_id\030\002 \001(\0132\025.context.Conn" + "ectionId\"\202\001\n\nEndPointId\022(\n\013topology_id\030\001" + " \001(\0132\023.context.TopologyId\022$\n\tdevice_id\030\002" + " \001(\0132\021.context.DeviceId\022$\n\rendpoint_uuid" + "\030\003 \001(\0132\r.context.Uuid\"\310\002\n\010EndPoint\022(\n\013en" + "dpoint_id\030\001 \001(\0132\023.context.EndPointId\022\014\n\004" + "name\030\002 \001(\t\022\025\n\rendpoint_type\030\003 \001(\t\0229\n\020kpi" + "_sample_types\030\004 \003(\0162\037.kpi_sample_types.K" + "piSampleType\022,\n\021endpoint_location\030\005 \001(\0132" + "\021.context.Location\0229\n\014capabilities\030\006 \003(\013" + "2#.context.EndPoint.CapabilitiesEntry\032I\n" + "\021CapabilitiesEntry\022\013\n\003key\030\001 \001(\t\022#\n\005value" + "\030\002 \001(\0132\024.google.protobuf.Any:\0028\001\"{\n\014EndP" + "ointName\022(\n\013endpoint_id\030\001 \001(\0132\023.context." + "EndPointId\022\023\n\013device_name\030\002 \001(\t\022\025\n\rendpo" + "int_name\030\003 \001(\t\022\025\n\rendpoint_type\030\004 \001(\t\";\n" + "\016EndPointIdList\022)\n\014endpoint_ids\030\001 \003(\0132\023." + "context.EndPointId\"A\n\020EndPointNameList\022-" + "\n\016endpoint_names\030\001 \003(\0132\025.context.EndPoin" + "tName\"A\n\021ConfigRule_Custom\022\024\n\014resource_k" + "ey\030\001 \001(\t\022\026\n\016resource_value\030\002 \001(\t\"]\n\016Conf" + "igRule_ACL\022(\n\013endpoint_id\030\001 \001(\0132\023.contex" + "t.EndPointId\022!\n\010rule_set\030\002 \001(\0132\017.acl.Acl" + "RuleSet\"\234\001\n\nConfigRule\022)\n\006action\030\001 \001(\0162\031" + ".context.ConfigActionEnum\022,\n\006custom\030\002 \001(" + "\0132\032.context.ConfigRule_CustomH\000\022&\n\003acl\030\003" + " \001(\0132\027.context.ConfigRule_ACLH\000B\r\n\013confi" + "g_rule\"F\n\021Constraint_Custom\022\027\n\017constrain" + "t_type\030\001 \001(\t\022\030\n\020constraint_value\030\002 \001(\t\"E" + "\n\023Constraint_Schedule\022\027\n\017start_timestamp" + "\030\001 \001(\001\022\025\n\rduration_days\030\002 \001(\002\"3\n\014GPS_Pos" + "ition\022\020\n\010latitude\030\001 \001(\002\022\021\n\tlongitude\030\002 \001" + "(\002\"\204\001\n\010Location\022\020\n\006region\030\001 \001(\tH\000\022-\n\014gps" + "_position\030\002 \001(\0132\025.context.GPS_PositionH\000" + "\022\023\n\tinterface\030\003 \001(\tH\000\022\026\n\014circuit_pack\030\004 " + "\001(\tH\000B\n\n\010location\"l\n\033Constraint_EndPoint" + "Location\022(\n\013endpoint_id\030\001 \001(\0132\023.context." + "EndPointId\022#\n\010location\030\002 \001(\0132\021.context.L" + "ocation\"Y\n\033Constraint_EndPointPriority\022(" + "\n\013endpoint_id\030\001 \001(\0132\023.context.EndPointId" + "\022\020\n\010priority\030\002 \001(\r\"0\n\026Constraint_SLA_Lat" + "ency\022\026\n\016e2e_latency_ms\030\001 \001(\002\"0\n\027Constrai" + "nt_SLA_Capacity\022\025\n\rcapacity_gbps\030\001 \001(\002\"c" + "\n\033Constraint_SLA_Availability\022\032\n\022num_dis" + "joint_paths\030\001 \001(\r\022\022\n\nall_active\030\002 \001(\010\022\024\n" + "\014availability\030\003 \001(\002\"V\n\036Constraint_SLA_Is" + "olation_level\0224\n\017isolation_level\030\001 \003(\0162\033" + ".context.IsolationLevelEnum\"\242\001\n\025Constrai" + "nt_Exclusions\022\024\n\014is_permanent\030\001 \001(\010\022%\n\nd" + "evice_ids\030\002 \003(\0132\021.context.DeviceId\022)\n\014en" + "dpoint_ids\030\003 \003(\0132\023.context.EndPointId\022!\n" + "\010link_ids\030\004 \003(\0132\017.context.LinkId\"5\n\014QoSP" + "rofileId\022%\n\016qos_profile_id\030\001 \001(\0132\r.conte" + "xt.Uuid\"`\n\025Constraint_QoSProfile\022-\n\016qos_" + "profile_id\030\001 \001(\0132\025.context.QoSProfileId\022" + "\030\n\020qos_profile_name\030\002 \001(\t\"\222\005\n\nConstraint" + "\022-\n\006action\030\001 \001(\0162\035.context.ConstraintAct" + "ionEnum\022,\n\006custom\030\002 \001(\0132\032.context.Constr" + "aint_CustomH\000\0220\n\010schedule\030\003 \001(\0132\034.contex" + "t.Constraint_ScheduleH\000\022A\n\021endpoint_loca" + "tion\030\004 \001(\0132$.context.Constraint_EndPoint" + "LocationH\000\022A\n\021endpoint_priority\030\005 \001(\0132$." + "context.Constraint_EndPointPriorityH\000\0228\n" + "\014sla_capacity\030\006 \001(\0132 .context.Constraint" + "_SLA_CapacityH\000\0226\n\013sla_latency\030\007 \001(\0132\037.c" + "ontext.Constraint_SLA_LatencyH\000\022@\n\020sla_a" + "vailability\030\010 \001(\0132$.context.Constraint_S" + "LA_AvailabilityH\000\022@\n\rsla_isolation\030\t \001(\013" + "2\'.context.Constraint_SLA_Isolation_leve" + "lH\000\0224\n\nexclusions\030\n \001(\0132\036.context.Constr" + "aint_ExclusionsH\000\0225\n\013qos_profile\030\013 \001(\0132\036" + ".context.Constraint_QoSProfileH\000B\014\n\ncons" + "traint\"^\n\022TeraFlowController\022&\n\ncontext_" + "id\030\001 \001(\0132\022.context.ContextId\022\022\n\nip_addre" + "ss\030\002 \001(\t\022\014\n\004port\030\003 \001(\r\"U\n\024Authentication" + "Result\022&\n\ncontext_id\030\001 \001(\0132\022.context.Con" + "textId\022\025\n\rauthenticated\030\002 \001(\010\"-\n\017Optical" + "ConfigId\022\032\n\022opticalconfig_uuid\030\001 \001(\t\"y\n\r" + "OpticalConfig\0222\n\020opticalconfig_id\030\001 \001(\0132" + "\030.context.OpticalConfigId\022\016\n\006config\030\002 \001(" + "\t\022$\n\tdevice_id\030\003 \001(\0132\021.context.DeviceId\"" + "C\n\021OpticalConfigList\022.\n\016opticalconfigs\030\001" + " \003(\0132\026.context.OpticalConfig\"g\n\022OpticalC" + "onfigEvent\022\035\n\005event\030\001 \001(\0132\016.context.Even" + "t\0222\n\020opticalconfig_id\030\002 \001(\0132\030.context.Op" + "ticalConfigId\"_\n\021OpticalEndPointId\022$\n\tde" + "vice_id\030\002 \001(\0132\021.context.DeviceId\022$\n\rendp" + "oint_uuid\030\003 \001(\0132\r.context.Uuid\">\n\017Optica" + "lLinkList\022+\n\roptical_links\030\001 \003(\0132\024.conte" + "xt.OpticalLink\"\304\003\n\022OpticalLinkDetails\022\016\n" + "\006length\030\001 \001(\002\022\020\n\010src_port\030\002 \001(\t\022\020\n\010dst_p" + "ort\030\003 \001(\t\022\027\n\017local_peer_port\030\004 \001(\t\022\030\n\020re" + "mote_peer_port\030\005 \001(\t\022\014\n\004used\030\006 \001(\010\0228\n\007c_" + "slots\030\007 \003(\0132\'.context.OpticalLinkDetails" + ".CSlotsEntry\0228\n\007l_slots\030\010 \003(\0132\'.context." + "OpticalLinkDetails.LSlotsEntry\0228\n\007s_slot" + "s\030\t \003(\0132\'.context.OpticalLinkDetails.SSl" + "otsEntry\032-\n\013CSlotsEntry\022\013\n\003key\030\001 \001(\t\022\r\n\005" + "value\030\002 \001(\005:\0028\001\032-\n\013LSlotsEntry\022\013\n\003key\030\001 " + "\001(\t\022\r\n\005value\030\002 \001(\005:\0028\001\032-\n\013SSlotsEntry\022\013\n" + "\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\005:\0028\001\"\243\001\n\013Optica" + "lLink\022\014\n\004name\030\001 \001(\t\0224\n\017optical_details\030\002" + " \001(\0132\033.context.OpticalLinkDetails\022 \n\007lin" + "k_id\030\003 \001(\0132\017.context.LinkId\022.\n\021link_endp" + "oint_ids\030\004 \003(\0132\023.context.EndPointId\"r\n\021S" + "erviceConfigRule\022&\n\nservice_id\030\001 \001(\0132\022.c" + "ontext.ServiceId\0225\n\021configrule_custom\030\002 " + "\001(\0132\032.context.ConfigRule_Custom*j\n\rEvent" + "TypeEnum\022\027\n\023EVENTTYPE_UNDEFINED\020\000\022\024\n\020EVE" + "NTTYPE_CREATE\020\001\022\024\n\020EVENTTYPE_UPDATE\020\002\022\024\n" + "\020EVENTTYPE_REMOVE\020\003*\351\003\n\020DeviceDriverEnum" + "\022\032\n\026DEVICEDRIVER_UNDEFINED\020\000\022\033\n\027DEVICEDR" + "IVER_OPENCONFIG\020\001\022\036\n\032DEVICEDRIVER_TRANSP" + "ORT_API\020\002\022\023\n\017DEVICEDRIVER_P4\020\003\022&\n\"DEVICE" + "DRIVER_IETF_NETWORK_TOPOLOGY\020\004\022\033\n\027DEVICE" + "DRIVER_ONF_TR_532\020\005\022\023\n\017DEVICEDRIVER_XR\020\006" + "\022\033\n\027DEVICEDRIVER_IETF_L2VPN\020\007\022 \n\034DEVICED" + "RIVER_GNMI_OPENCONFIG\020\010\022\034\n\030DEVICEDRIVER_" + "OPTICAL_TFS\020\t\022\032\n\026DEVICEDRIVER_IETF_ACTN\020" + "\n\022\023\n\017DEVICEDRIVER_OC\020\013\022\024\n\020DEVICEDRIVER_Q" + "KD\020\014\022\033\n\027DEVICEDRIVER_IETF_L3VPN\020\r\022\033\n\027DEV" + "ICEDRIVER_IETF_SLICE\020\016\022\024\n\020DEVICEDRIVER_N" + "CE\020\017\022\031\n\025DEVICEDRIVER_SMARTNIC\020\020*\217\001\n\033Devi" + "ceOperationalStatusEnum\022%\n!DEVICEOPERATI" + "ONALSTATUS_UNDEFINED\020\000\022$\n DEVICEOPERATIO" + "NALSTATUS_DISABLED\020\001\022#\n\037DEVICEOPERATIONA" + "LSTATUS_ENABLED\020\002*w\n\014LinkTypeEnum\022\024\n\020LIN" + "KTYPE_UNKNOWN\020\000\022\023\n\017LINKTYPE_COPPER\020\001\022\022\n\016" + "LINKTYPE_FIBER\020\002\022\022\n\016LINKTYPE_RADIO\020\003\022\024\n\020" + "LINKTYPE_VIRTUAL\020\004*\345\001\n\017ServiceTypeEnum\022\027" + "\n\023SERVICETYPE_UNKNOWN\020\000\022\024\n\020SERVICETYPE_L" + "3NM\020\001\022\024\n\020SERVICETYPE_L2NM\020\002\022)\n%SERVICETY" + "PE_TAPI_CONNECTIVITY_SERVICE\020\003\022\022\n\016SERVIC" + "ETYPE_TE\020\004\022\023\n\017SERVICETYPE_E2E\020\005\022$\n SERVI" + "CETYPE_OPTICAL_CONNECTIVITY\020\006\022\023\n\017SERVICE" + "TYPE_QKD\020\007*\304\001\n\021ServiceStatusEnum\022\033\n\027SERV" + "ICESTATUS_UNDEFINED\020\000\022\031\n\025SERVICESTATUS_P" + "LANNED\020\001\022\030\n\024SERVICESTATUS_ACTIVE\020\002\022\032\n\026SE" + "RVICESTATUS_UPDATING\020\003\022!\n\035SERVICESTATUS_" + "PENDING_REMOVAL\020\004\022\036\n\032SERVICESTATUS_SLA_V" + "IOLATED\020\005*\251\001\n\017SliceStatusEnum\022\031\n\025SLICEST" + "ATUS_UNDEFINED\020\000\022\027\n\023SLICESTATUS_PLANNED\020" + "\001\022\024\n\020SLICESTATUS_INIT\020\002\022\026\n\022SLICESTATUS_A" + "CTIVE\020\003\022\026\n\022SLICESTATUS_DEINIT\020\004\022\034\n\030SLICE" + "STATUS_SLA_VIOLATED\020\005*]\n\020ConfigActionEnu" + "m\022\032\n\026CONFIGACTION_UNDEFINED\020\000\022\024\n\020CONFIGA" + "CTION_SET\020\001\022\027\n\023CONFIGACTION_DELETE\020\002*m\n\024" + "ConstraintActionEnum\022\036\n\032CONSTRAINTACTION" + "_UNDEFINED\020\000\022\030\n\024CONSTRAINTACTION_SET\020\001\022\033" + "\n\027CONSTRAINTACTION_DELETE\020\002*\203\002\n\022Isolatio" + "nLevelEnum\022\020\n\014NO_ISOLATION\020\000\022\026\n\022PHYSICAL" + "_ISOLATION\020\001\022\025\n\021LOGICAL_ISOLATION\020\002\022\025\n\021P" + "ROCESS_ISOLATION\020\003\022\035\n\031PHYSICAL_MEMORY_IS" + "OLATION\020\004\022\036\n\032PHYSICAL_NETWORK_ISOLATION\020" + "\005\022\036\n\032VIRTUAL_RESOURCE_ISOLATION\020\006\022\037\n\033NET" + "WORK_FUNCTIONS_ISOLATION\020\007\022\025\n\021SERVICE_IS" + "OLATION\020\0102\202\034\n\016ContextService\022:\n\016ListCont" + "extIds\022\016.context.Empty\032\026.context.Context" + "IdList\"\000\0226\n\014ListContexts\022\016.context.Empty" + "\032\024.context.ContextList\"\000\0224\n\nGetContext\022\022" + ".context.ContextId\032\020.context.Context\"\000\0224" + "\n\nSetContext\022\020.context.Context\032\022.context" + ".ContextId\"\000\0225\n\rRemoveContext\022\022.context." + "ContextId\032\016.context.Empty\"\000\022=\n\020GetContex" + "tEvents\022\016.context.Empty\032\025.context.Contex" + "tEvent\"\0000\001\022@\n\017ListTopologyIds\022\022.context." + "ContextId\032\027.context.TopologyIdList\"\000\022=\n\016" + "ListTopologies\022\022.context.ContextId\032\025.con" + "text.TopologyList\"\000\0227\n\013GetTopology\022\023.con" + "text.TopologyId\032\021.context.Topology\"\000\022E\n\022" + "GetTopologyDetails\022\023.context.TopologyId\032" + "\030.context.TopologyDetails\"\000\0227\n\013SetTopolo" + "gy\022\021.context.Topology\032\023.context.Topology" + "Id\"\000\0227\n\016RemoveTopology\022\023.context.Topolog" + "yId\032\016.context.Empty\"\000\022?\n\021GetTopologyEven" + "ts\022\016.context.Empty\032\026.context.TopologyEve" + "nt\"\0000\001\0228\n\rListDeviceIds\022\016.context.Empty\032" + "\025.context.DeviceIdList\"\000\0224\n\013ListDevices\022" + "\016.context.Empty\032\023.context.DeviceList\"\000\0221" + "\n\tGetDevice\022\021.context.DeviceId\032\017.context" + ".Device\"\000\0221\n\tSetDevice\022\017.context.Device\032" + "\021.context.DeviceId\"\000\0223\n\014RemoveDevice\022\021.c" + "ontext.DeviceId\032\016.context.Empty\"\000\022;\n\017Get" + "DeviceEvents\022\016.context.Empty\032\024.context.D" + "eviceEvent\"\0000\001\022<\n\014SelectDevice\022\025.context" + ".DeviceFilter\032\023.context.DeviceList\"\000\022I\n\021" + "ListEndPointNames\022\027.context.EndPointIdLi" + "st\032\031.context.EndPointNameList\"\000\0224\n\013ListL" + "inkIds\022\016.context.Empty\032\023.context.LinkIdL" + "ist\"\000\0220\n\tListLinks\022\016.context.Empty\032\021.con" + "text.LinkList\"\000\022+\n\007GetLink\022\017.context.Lin" + "kId\032\r.context.Link\"\000\022+\n\007SetLink\022\r.contex" + "t.Link\032\017.context.LinkId\"\000\022/\n\nRemoveLink\022" + "\017.context.LinkId\032\016.context.Empty\"\000\0227\n\rGe" + "tLinkEvents\022\016.context.Empty\032\022.context.Li" + "nkEvent\"\0000\001\022>\n\016ListServiceIds\022\022.context." + "ContextId\032\026.context.ServiceIdList\"\000\022:\n\014L" + "istServices\022\022.context.ContextId\032\024.contex" + "t.ServiceList\"\000\0224\n\nGetService\022\022.context." + "ServiceId\032\020.context.Service\"\000\0224\n\nSetServ" + "ice\022\020.context.Service\032\022.context.ServiceI" + "d\"\000\0226\n\014UnsetService\022\020.context.Service\032\022." + "context.ServiceId\"\000\0225\n\rRemoveService\022\022.c" + "ontext.ServiceId\032\016.context.Empty\"\000\022=\n\020Ge" + "tServiceEvents\022\016.context.Empty\032\025.context" + ".ServiceEvent\"\0000\001\022?\n\rSelectService\022\026.con" + "text.ServiceFilter\032\024.context.ServiceList" + "\"\000\022:\n\014ListSliceIds\022\022.context.ContextId\032\024" + ".context.SliceIdList\"\000\0226\n\nListSlices\022\022.c" + "ontext.ContextId\032\022.context.SliceList\"\000\022." + "\n\010GetSlice\022\020.context.SliceId\032\016.context.S" + "lice\"\000\022.\n\010SetSlice\022\016.context.Slice\032\020.con" + "text.SliceId\"\000\0220\n\nUnsetSlice\022\016.context.S" + "lice\032\020.context.SliceId\"\000\0221\n\013RemoveSlice\022" + "\020.context.SliceId\032\016.context.Empty\"\000\0229\n\016G" + "etSliceEvents\022\016.context.Empty\032\023.context." + "SliceEvent\"\0000\001\0229\n\013SelectSlice\022\024.context." + "SliceFilter\032\022.context.SliceList\"\000\022D\n\021Lis" + "tConnectionIds\022\022.context.ServiceId\032\031.con" + "text.ConnectionIdList\"\000\022@\n\017ListConnectio" + "ns\022\022.context.ServiceId\032\027.context.Connect" + "ionList\"\000\022=\n\rGetConnection\022\025.context.Con" + "nectionId\032\023.context.Connection\"\000\022=\n\rSetC" + "onnection\022\023.context.Connection\032\025.context" + ".ConnectionId\"\000\022;\n\020RemoveConnection\022\025.co" + "ntext.ConnectionId\032\016.context.Empty\"\000\022C\n\023" + "GetConnectionEvents\022\016.context.Empty\032\030.co" + "ntext.ConnectionEvent\"\0000\001\022@\n\020GetOpticalC" + "onfig\022\016.context.Empty\032\032.context.OpticalC" + "onfigList\"\000\022F\n\020SetOpticalConfig\022\026.contex" + "t.OpticalConfig\032\030.context.OpticalConfigI" + "d\"\000\022I\n\023UpdateOpticalConfig\022\026.context.Opt" + "icalConfig\032\030.context.OpticalConfigId\"\000\022I" + "\n\023SelectOpticalConfig\022\030.context.OpticalC" + "onfigId\032\026.context.OpticalConfig\"\000\022A\n\023Del" + "eteOpticalConfig\022\030.context.OpticalConfig" + "Id\032\016.context.Empty\"\000\022@\n\024DeleteOpticalCha" + "nnel\022\026.context.OpticalConfig\032\016.context.E" + "mpty\"\000\0228\n\016SetOpticalLink\022\024.context.Optic" + "alLink\032\016.context.Empty\"\000\0229\n\016GetOpticalLi" + "nk\022\017.context.LinkId\032\024.context.OpticalLin" + "k\"\000\0226\n\021DeleteOpticalLink\022\017.context.LinkI" + "d\032\016.context.Empty\"\000\022@\n\022GetOpticalLinkLis" + "t\022\016.context.Empty\032\030.context.OpticalLinkL" + "ist\"\000\022G\n\027DeleteServiceConfigRule\022\032.conte" + "xt.ServiceConfigRule\032\016.context.Empty\"\000b\006" + "proto3" };
        descriptor = com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom(descriptorData, new com.google.protobuf.Descriptors.FileDescriptor[] { com.google.protobuf.AnyProto.getDescriptor(), acl.Acl.getDescriptor(), kpi_sample_types.KpiSampleTypes.getDescriptor() });
        internal_static_context_Empty_descriptor = getDescriptor().getMessageTypes().get(0);
        internal_static_context_Empty_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Empty_descriptor, new java.lang.String[] {});
        internal_static_context_Uuid_descriptor = getDescriptor().getMessageTypes().get(1);
        internal_static_context_Uuid_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Uuid_descriptor, new java.lang.String[] { "Uuid" });
        internal_static_context_Timestamp_descriptor = getDescriptor().getMessageTypes().get(2);
        internal_static_context_Timestamp_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Timestamp_descriptor, new java.lang.String[] { "Timestamp" });
        internal_static_context_Event_descriptor = getDescriptor().getMessageTypes().get(3);
        internal_static_context_Event_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Event_descriptor, new java.lang.String[] { "Timestamp", "EventType" });
        internal_static_context_ContextId_descriptor = getDescriptor().getMessageTypes().get(4);
        internal_static_context_ContextId_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_ContextId_descriptor, new java.lang.String[] { "ContextUuid" });
        internal_static_context_Context_descriptor = getDescriptor().getMessageTypes().get(5);
        internal_static_context_Context_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Context_descriptor, new java.lang.String[] { "ContextId", "Name", "TopologyIds", "ServiceIds", "SliceIds", "Controller" });
        internal_static_context_ContextIdList_descriptor = getDescriptor().getMessageTypes().get(6);
        internal_static_context_ContextIdList_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_ContextIdList_descriptor, new java.lang.String[] { "ContextIds" });
        internal_static_context_ContextList_descriptor = getDescriptor().getMessageTypes().get(7);
        internal_static_context_ContextList_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_ContextList_descriptor, new java.lang.String[] { "Contexts" });
        internal_static_context_ContextEvent_descriptor = getDescriptor().getMessageTypes().get(8);
        internal_static_context_ContextEvent_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_ContextEvent_descriptor, new java.lang.String[] { "Event", "ContextId" });
        internal_static_context_TopologyId_descriptor = getDescriptor().getMessageTypes().get(9);
        internal_static_context_TopologyId_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_TopologyId_descriptor, new java.lang.String[] { "ContextId", "TopologyUuid" });
        internal_static_context_Topology_descriptor = getDescriptor().getMessageTypes().get(10);
        internal_static_context_Topology_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Topology_descriptor, new java.lang.String[] { "TopologyId", "Name", "DeviceIds", "LinkIds", "OpticalLinkIds" });
        internal_static_context_TopologyDetails_descriptor = getDescriptor().getMessageTypes().get(11);
        internal_static_context_TopologyDetails_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_TopologyDetails_descriptor, new java.lang.String[] { "TopologyId", "Name", "Devices", "Links", "OpticalLinks" });
        internal_static_context_TopologyIdList_descriptor = getDescriptor().getMessageTypes().get(12);
        internal_static_context_TopologyIdList_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_TopologyIdList_descriptor, new java.lang.String[] { "TopologyIds" });
        internal_static_context_TopologyList_descriptor = getDescriptor().getMessageTypes().get(13);
        internal_static_context_TopologyList_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_TopologyList_descriptor, new java.lang.String[] { "Topologies" });
        internal_static_context_TopologyEvent_descriptor = getDescriptor().getMessageTypes().get(14);
        internal_static_context_TopologyEvent_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_TopologyEvent_descriptor, new java.lang.String[] { "Event", "TopologyId" });
        internal_static_context_DeviceId_descriptor = getDescriptor().getMessageTypes().get(15);
        internal_static_context_DeviceId_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_DeviceId_descriptor, new java.lang.String[] { "DeviceUuid" });
        internal_static_context_Device_descriptor = getDescriptor().getMessageTypes().get(16);
        internal_static_context_Device_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Device_descriptor, new java.lang.String[] { "DeviceId", "Name", "DeviceType", "DeviceConfig", "DeviceOperationalStatus", "DeviceDrivers", "DeviceEndpoints", "Components", "ControllerId" });
        internal_static_context_Component_descriptor = getDescriptor().getMessageTypes().get(17);
        internal_static_context_Component_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Component_descriptor, new java.lang.String[] { "ComponentUuid", "Name", "Type", "Attributes", "Parent" });
        internal_static_context_Component_AttributesEntry_descriptor = internal_static_context_Component_descriptor.getNestedTypes().get(0);
        internal_static_context_Component_AttributesEntry_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Component_AttributesEntry_descriptor, new java.lang.String[] { "Key", "Value" });
        internal_static_context_DeviceConfig_descriptor = getDescriptor().getMessageTypes().get(18);
        internal_static_context_DeviceConfig_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_DeviceConfig_descriptor, new java.lang.String[] { "ConfigRules" });
        internal_static_context_DeviceIdList_descriptor = getDescriptor().getMessageTypes().get(19);
        internal_static_context_DeviceIdList_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_DeviceIdList_descriptor, new java.lang.String[] { "DeviceIds" });
        internal_static_context_DeviceList_descriptor = getDescriptor().getMessageTypes().get(20);
        internal_static_context_DeviceList_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_DeviceList_descriptor, new java.lang.String[] { "Devices" });
        internal_static_context_DeviceFilter_descriptor = getDescriptor().getMessageTypes().get(21);
        internal_static_context_DeviceFilter_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_DeviceFilter_descriptor, new java.lang.String[] { "DeviceIds", "IncludeEndpoints", "IncludeConfigRules", "IncludeComponents" });
        internal_static_context_DeviceEvent_descriptor = getDescriptor().getMessageTypes().get(22);
        internal_static_context_DeviceEvent_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_DeviceEvent_descriptor, new java.lang.String[] { "Event", "DeviceId", "DeviceConfig" });
        internal_static_context_LinkId_descriptor = getDescriptor().getMessageTypes().get(23);
        internal_static_context_LinkId_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_LinkId_descriptor, new java.lang.String[] { "LinkUuid" });
        internal_static_context_LinkAttributes_descriptor = getDescriptor().getMessageTypes().get(24);
        internal_static_context_LinkAttributes_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_LinkAttributes_descriptor, new java.lang.String[] { "TotalCapacityGbps", "UsedCapacityGbps" });
        internal_static_context_Link_descriptor = getDescriptor().getMessageTypes().get(25);
        internal_static_context_Link_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Link_descriptor, new java.lang.String[] { "LinkId", "Name", "LinkType", "LinkEndpointIds", "Attributes" });
        internal_static_context_LinkIdList_descriptor = getDescriptor().getMessageTypes().get(26);
        internal_static_context_LinkIdList_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_LinkIdList_descriptor, new java.lang.String[] { "LinkIds" });
        internal_static_context_LinkList_descriptor = getDescriptor().getMessageTypes().get(27);
        internal_static_context_LinkList_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_LinkList_descriptor, new java.lang.String[] { "Links" });
        internal_static_context_LinkEvent_descriptor = getDescriptor().getMessageTypes().get(28);
        internal_static_context_LinkEvent_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_LinkEvent_descriptor, new java.lang.String[] { "Event", "LinkId" });
        internal_static_context_ServiceId_descriptor = getDescriptor().getMessageTypes().get(29);
        internal_static_context_ServiceId_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_ServiceId_descriptor, new java.lang.String[] { "ContextId", "ServiceUuid" });
        internal_static_context_Service_descriptor = getDescriptor().getMessageTypes().get(30);
        internal_static_context_Service_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Service_descriptor, new java.lang.String[] { "ServiceId", "Name", "ServiceType", "ServiceEndpointIds", "ServiceConstraints", "ServiceStatus", "ServiceConfig", "Timestamp" });
        internal_static_context_ServiceStatus_descriptor = getDescriptor().getMessageTypes().get(31);
        internal_static_context_ServiceStatus_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_ServiceStatus_descriptor, new java.lang.String[] { "ServiceStatus" });
        internal_static_context_ServiceConfig_descriptor = getDescriptor().getMessageTypes().get(32);
        internal_static_context_ServiceConfig_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_ServiceConfig_descriptor, new java.lang.String[] { "ConfigRules" });
        internal_static_context_ServiceIdList_descriptor = getDescriptor().getMessageTypes().get(33);
        internal_static_context_ServiceIdList_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_ServiceIdList_descriptor, new java.lang.String[] { "ServiceIds" });
        internal_static_context_ServiceList_descriptor = getDescriptor().getMessageTypes().get(34);
        internal_static_context_ServiceList_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_ServiceList_descriptor, new java.lang.String[] { "Services" });
        internal_static_context_ServiceFilter_descriptor = getDescriptor().getMessageTypes().get(35);
        internal_static_context_ServiceFilter_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_ServiceFilter_descriptor, new java.lang.String[] { "ServiceIds", "IncludeEndpointIds", "IncludeConstraints", "IncludeConfigRules" });
        internal_static_context_ServiceEvent_descriptor = getDescriptor().getMessageTypes().get(36);
        internal_static_context_ServiceEvent_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_ServiceEvent_descriptor, new java.lang.String[] { "Event", "ServiceId" });
        internal_static_context_SliceId_descriptor = getDescriptor().getMessageTypes().get(37);
        internal_static_context_SliceId_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_SliceId_descriptor, new java.lang.String[] { "ContextId", "SliceUuid" });
        internal_static_context_Slice_descriptor = getDescriptor().getMessageTypes().get(38);
        internal_static_context_Slice_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Slice_descriptor, new java.lang.String[] { "SliceId", "Name", "SliceEndpointIds", "SliceConstraints", "SliceServiceIds", "SliceSubsliceIds", "SliceStatus", "SliceConfig", "SliceOwner", "Timestamp" });
        internal_static_context_SliceOwner_descriptor = getDescriptor().getMessageTypes().get(39);
        internal_static_context_SliceOwner_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_SliceOwner_descriptor, new java.lang.String[] { "OwnerUuid", "OwnerString" });
        internal_static_context_SliceStatus_descriptor = getDescriptor().getMessageTypes().get(40);
        internal_static_context_SliceStatus_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_SliceStatus_descriptor, new java.lang.String[] { "SliceStatus" });
        internal_static_context_SliceConfig_descriptor = getDescriptor().getMessageTypes().get(41);
        internal_static_context_SliceConfig_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_SliceConfig_descriptor, new java.lang.String[] { "ConfigRules" });
        internal_static_context_SliceIdList_descriptor = getDescriptor().getMessageTypes().get(42);
        internal_static_context_SliceIdList_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_SliceIdList_descriptor, new java.lang.String[] { "SliceIds" });
        internal_static_context_SliceList_descriptor = getDescriptor().getMessageTypes().get(43);
        internal_static_context_SliceList_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_SliceList_descriptor, new java.lang.String[] { "Slices" });
        internal_static_context_SliceFilter_descriptor = getDescriptor().getMessageTypes().get(44);
        internal_static_context_SliceFilter_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_SliceFilter_descriptor, new java.lang.String[] { "SliceIds", "IncludeEndpointIds", "IncludeConstraints", "IncludeServiceIds", "IncludeSubsliceIds", "IncludeConfigRules" });
        internal_static_context_SliceEvent_descriptor = getDescriptor().getMessageTypes().get(45);
        internal_static_context_SliceEvent_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_SliceEvent_descriptor, new java.lang.String[] { "Event", "SliceId" });
        internal_static_context_ConnectionId_descriptor = getDescriptor().getMessageTypes().get(46);
        internal_static_context_ConnectionId_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_ConnectionId_descriptor, new java.lang.String[] { "ConnectionUuid" });
        internal_static_context_ConnectionSettings_L0_descriptor = getDescriptor().getMessageTypes().get(47);
        internal_static_context_ConnectionSettings_L0_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_ConnectionSettings_L0_descriptor, new java.lang.String[] { "LspSymbolicName" });
        internal_static_context_ConnectionSettings_L2_descriptor = getDescriptor().getMessageTypes().get(48);
        internal_static_context_ConnectionSettings_L2_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_ConnectionSettings_L2_descriptor, new java.lang.String[] { "SrcMacAddress", "DstMacAddress", "EtherType", "VlanId", "MplsLabel", "MplsTrafficClass" });
        internal_static_context_ConnectionSettings_L3_descriptor = getDescriptor().getMessageTypes().get(49);
        internal_static_context_ConnectionSettings_L3_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_ConnectionSettings_L3_descriptor, new java.lang.String[] { "SrcIpAddress", "DstIpAddress", "Dscp", "Protocol", "Ttl" });
        internal_static_context_ConnectionSettings_L4_descriptor = getDescriptor().getMessageTypes().get(50);
        internal_static_context_ConnectionSettings_L4_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_ConnectionSettings_L4_descriptor, new java.lang.String[] { "SrcPort", "DstPort", "TcpFlags", "Ttl" });
        internal_static_context_ConnectionSettings_descriptor = getDescriptor().getMessageTypes().get(51);
        internal_static_context_ConnectionSettings_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_ConnectionSettings_descriptor, new java.lang.String[] { "L0", "L2", "L3", "L4" });
        internal_static_context_Connection_descriptor = getDescriptor().getMessageTypes().get(52);
        internal_static_context_Connection_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Connection_descriptor, new java.lang.String[] { "ConnectionId", "ServiceId", "PathHopsEndpointIds", "SubServiceIds", "Settings" });
        internal_static_context_ConnectionIdList_descriptor = getDescriptor().getMessageTypes().get(53);
        internal_static_context_ConnectionIdList_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_ConnectionIdList_descriptor, new java.lang.String[] { "ConnectionIds" });
        internal_static_context_ConnectionList_descriptor = getDescriptor().getMessageTypes().get(54);
        internal_static_context_ConnectionList_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_ConnectionList_descriptor, new java.lang.String[] { "Connections" });
        internal_static_context_ConnectionEvent_descriptor = getDescriptor().getMessageTypes().get(55);
        internal_static_context_ConnectionEvent_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_ConnectionEvent_descriptor, new java.lang.String[] { "Event", "ConnectionId" });
        internal_static_context_EndPointId_descriptor = getDescriptor().getMessageTypes().get(56);
        internal_static_context_EndPointId_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_EndPointId_descriptor, new java.lang.String[] { "TopologyId", "DeviceId", "EndpointUuid" });
        internal_static_context_EndPoint_descriptor = getDescriptor().getMessageTypes().get(57);
        internal_static_context_EndPoint_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_EndPoint_descriptor, new java.lang.String[] { "EndpointId", "Name", "EndpointType", "KpiSampleTypes", "EndpointLocation", "Capabilities" });
        internal_static_context_EndPoint_CapabilitiesEntry_descriptor = internal_static_context_EndPoint_descriptor.getNestedTypes().get(0);
        internal_static_context_EndPoint_CapabilitiesEntry_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_EndPoint_CapabilitiesEntry_descriptor, new java.lang.String[] { "Key", "Value" });
        internal_static_context_EndPointName_descriptor = getDescriptor().getMessageTypes().get(58);
        internal_static_context_EndPointName_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_EndPointName_descriptor, new java.lang.String[] { "EndpointId", "DeviceName", "EndpointName", "EndpointType" });
        internal_static_context_EndPointIdList_descriptor = getDescriptor().getMessageTypes().get(59);
        internal_static_context_EndPointIdList_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_EndPointIdList_descriptor, new java.lang.String[] { "EndpointIds" });
        internal_static_context_EndPointNameList_descriptor = getDescriptor().getMessageTypes().get(60);
        internal_static_context_EndPointNameList_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_EndPointNameList_descriptor, new java.lang.String[] { "EndpointNames" });
        internal_static_context_ConfigRule_Custom_descriptor = getDescriptor().getMessageTypes().get(61);
        internal_static_context_ConfigRule_Custom_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_ConfigRule_Custom_descriptor, new java.lang.String[] { "ResourceKey", "ResourceValue" });
        internal_static_context_ConfigRule_ACL_descriptor = getDescriptor().getMessageTypes().get(62);
        internal_static_context_ConfigRule_ACL_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_ConfigRule_ACL_descriptor, new java.lang.String[] { "EndpointId", "RuleSet" });
        internal_static_context_ConfigRule_descriptor = getDescriptor().getMessageTypes().get(63);
        internal_static_context_ConfigRule_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_ConfigRule_descriptor, new java.lang.String[] { "Action", "Custom", "Acl", "ConfigRule" });
        internal_static_context_Constraint_Custom_descriptor = getDescriptor().getMessageTypes().get(64);
        internal_static_context_Constraint_Custom_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Constraint_Custom_descriptor, new java.lang.String[] { "ConstraintType", "ConstraintValue" });
        internal_static_context_Constraint_Schedule_descriptor = getDescriptor().getMessageTypes().get(65);
        internal_static_context_Constraint_Schedule_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Constraint_Schedule_descriptor, new java.lang.String[] { "StartTimestamp", "DurationDays" });
        internal_static_context_GPS_Position_descriptor = getDescriptor().getMessageTypes().get(66);
        internal_static_context_GPS_Position_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_GPS_Position_descriptor, new java.lang.String[] { "Latitude", "Longitude" });
        internal_static_context_Location_descriptor = getDescriptor().getMessageTypes().get(67);
        internal_static_context_Location_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Location_descriptor, new java.lang.String[] { "Region", "GpsPosition", "Interface", "CircuitPack", "Location" });
        internal_static_context_Constraint_EndPointLocation_descriptor = getDescriptor().getMessageTypes().get(68);
        internal_static_context_Constraint_EndPointLocation_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Constraint_EndPointLocation_descriptor, new java.lang.String[] { "EndpointId", "Location" });
        internal_static_context_Constraint_EndPointPriority_descriptor = getDescriptor().getMessageTypes().get(69);
        internal_static_context_Constraint_EndPointPriority_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Constraint_EndPointPriority_descriptor, new java.lang.String[] { "EndpointId", "Priority" });
        internal_static_context_Constraint_SLA_Latency_descriptor = getDescriptor().getMessageTypes().get(70);
        internal_static_context_Constraint_SLA_Latency_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Constraint_SLA_Latency_descriptor, new java.lang.String[] { "E2ELatencyMs" });
        internal_static_context_Constraint_SLA_Capacity_descriptor = getDescriptor().getMessageTypes().get(71);
        internal_static_context_Constraint_SLA_Capacity_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Constraint_SLA_Capacity_descriptor, new java.lang.String[] { "CapacityGbps" });
        internal_static_context_Constraint_SLA_Availability_descriptor = getDescriptor().getMessageTypes().get(72);
        internal_static_context_Constraint_SLA_Availability_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Constraint_SLA_Availability_descriptor, new java.lang.String[] { "NumDisjointPaths", "AllActive", "Availability" });
        internal_static_context_Constraint_SLA_Isolation_level_descriptor = getDescriptor().getMessageTypes().get(73);
        internal_static_context_Constraint_SLA_Isolation_level_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Constraint_SLA_Isolation_level_descriptor, new java.lang.String[] { "IsolationLevel" });
        internal_static_context_Constraint_Exclusions_descriptor = getDescriptor().getMessageTypes().get(74);
        internal_static_context_Constraint_Exclusions_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Constraint_Exclusions_descriptor, new java.lang.String[] { "IsPermanent", "DeviceIds", "EndpointIds", "LinkIds" });
        internal_static_context_QoSProfileId_descriptor = getDescriptor().getMessageTypes().get(75);
        internal_static_context_QoSProfileId_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_QoSProfileId_descriptor, new java.lang.String[] { "QosProfileId" });
        internal_static_context_Constraint_QoSProfile_descriptor = getDescriptor().getMessageTypes().get(76);
        internal_static_context_Constraint_QoSProfile_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Constraint_QoSProfile_descriptor, new java.lang.String[] { "QosProfileId", "QosProfileName" });
        internal_static_context_Constraint_descriptor = getDescriptor().getMessageTypes().get(77);
        internal_static_context_Constraint_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_Constraint_descriptor, new java.lang.String[] { "Action", "Custom", "Schedule", "EndpointLocation", "EndpointPriority", "SlaCapacity", "SlaLatency", "SlaAvailability", "SlaIsolation", "Exclusions", "QosProfile", "Constraint" });
        internal_static_context_TeraFlowController_descriptor = getDescriptor().getMessageTypes().get(78);
        internal_static_context_TeraFlowController_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_TeraFlowController_descriptor, new java.lang.String[] { "ContextId", "IpAddress", "Port" });
        internal_static_context_AuthenticationResult_descriptor = getDescriptor().getMessageTypes().get(79);
        internal_static_context_AuthenticationResult_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_AuthenticationResult_descriptor, new java.lang.String[] { "ContextId", "Authenticated" });
        internal_static_context_OpticalConfigId_descriptor = getDescriptor().getMessageTypes().get(80);
        internal_static_context_OpticalConfigId_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_OpticalConfigId_descriptor, new java.lang.String[] { "OpticalconfigUuid" });
        internal_static_context_OpticalConfig_descriptor = getDescriptor().getMessageTypes().get(81);
        internal_static_context_OpticalConfig_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_OpticalConfig_descriptor, new java.lang.String[] { "OpticalconfigId", "Config", "DeviceId" });
        internal_static_context_OpticalConfigList_descriptor = getDescriptor().getMessageTypes().get(82);
        internal_static_context_OpticalConfigList_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_OpticalConfigList_descriptor, new java.lang.String[] { "Opticalconfigs" });
        internal_static_context_OpticalConfigEvent_descriptor = getDescriptor().getMessageTypes().get(83);
        internal_static_context_OpticalConfigEvent_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_OpticalConfigEvent_descriptor, new java.lang.String[] { "Event", "OpticalconfigId" });
        internal_static_context_OpticalEndPointId_descriptor = getDescriptor().getMessageTypes().get(84);
        internal_static_context_OpticalEndPointId_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_OpticalEndPointId_descriptor, new java.lang.String[] { "DeviceId", "EndpointUuid" });
        internal_static_context_OpticalLinkList_descriptor = getDescriptor().getMessageTypes().get(85);
        internal_static_context_OpticalLinkList_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_OpticalLinkList_descriptor, new java.lang.String[] { "OpticalLinks" });
        internal_static_context_OpticalLinkDetails_descriptor = getDescriptor().getMessageTypes().get(86);
        internal_static_context_OpticalLinkDetails_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_OpticalLinkDetails_descriptor, new java.lang.String[] { "Length", "SrcPort", "DstPort", "LocalPeerPort", "RemotePeerPort", "Used", "CSlots", "LSlots", "SSlots" });
        internal_static_context_OpticalLinkDetails_CSlotsEntry_descriptor = internal_static_context_OpticalLinkDetails_descriptor.getNestedTypes().get(0);
        internal_static_context_OpticalLinkDetails_CSlotsEntry_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_OpticalLinkDetails_CSlotsEntry_descriptor, new java.lang.String[] { "Key", "Value" });
        internal_static_context_OpticalLinkDetails_LSlotsEntry_descriptor = internal_static_context_OpticalLinkDetails_descriptor.getNestedTypes().get(1);
        internal_static_context_OpticalLinkDetails_LSlotsEntry_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_OpticalLinkDetails_LSlotsEntry_descriptor, new java.lang.String[] { "Key", "Value" });
        internal_static_context_OpticalLinkDetails_SSlotsEntry_descriptor = internal_static_context_OpticalLinkDetails_descriptor.getNestedTypes().get(2);
        internal_static_context_OpticalLinkDetails_SSlotsEntry_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_OpticalLinkDetails_SSlotsEntry_descriptor, new java.lang.String[] { "Key", "Value" });
        internal_static_context_OpticalLink_descriptor = getDescriptor().getMessageTypes().get(87);
        internal_static_context_OpticalLink_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_OpticalLink_descriptor, new java.lang.String[] { "Name", "OpticalDetails", "LinkId", "LinkEndpointIds" });
        internal_static_context_ServiceConfigRule_descriptor = getDescriptor().getMessageTypes().get(88);
        internal_static_context_ServiceConfigRule_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(internal_static_context_ServiceConfigRule_descriptor, new java.lang.String[] { "ServiceId", "ConfigruleCustom" });
        com.google.protobuf.AnyProto.getDescriptor();
        acl.Acl.getDescriptor();
        kpi_sample_types.KpiSampleTypes.getDescriptor();
    }
    // @@protoc_insertion_point(outer_class_scope)
}